Java之网络编程基础,2024年最新电商秒杀java面试题及答案

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

// 当登陆成功,给用户反馈成功

bw.write(“恭喜你登陆成功!!!!”);

bw.flush();

} else {

bw.write(“账号或密码错误!!!!”);

bw.flush();

}

//4、关闭流

bw.close();

br.close();

os.close();

is.close();

s.close();

ss.close();

}

}

//对象流的代码实例

import java.io.Serializable;

/**

  • 封装了用户信息

  • @author Administrator

*/

public class User implements Serializable{

String name;//登录账号

String pwd;//密码

int id;//身份标识

public User(String name, String pwd, int id) {

super();

this.name = name;

this.pwd = pwd;

this.id = id;

}

}

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.Socket;

import java.net.UnknownHostException;

/**

  • 基于TCP协议的 socket网络编程 1、服务器serversocket建立一个服务器端,还有一个客户

端,两者通过socket对象建立通道连接起来

  • 2、两者可以通过流进行数据传输 如果数据有类型,使用datainputStream

dataoutputStream, object

  • 3、实际上数据访问还是通过流实现的,但是两端都是来自网络

  • @author Administrator

*/

public class LoginClient {

// 使用字符流发送数据,一定要及时刷新flush,每写一行数据需要 newline

public static void main(String[] args) throws UnknownHostException,

IOException {

Socket s = new Socket(“127.0.0.1”, 8888);

ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());

oos.writeObject(new User(“望舒”, “111111”, 1));

// 读取服务器给的反馈

InputStream is = s.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is));

System.out.println(br.readLine());

// 关闭流

is.close();

oos.close();

s.close();

}

}

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.ObjectInputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

/**

  • Tcp Socket 双向: 客户端向服务器发送对象,服务器接收到之后给出反馈 模拟登陆

  •   	利用线程知识  可以多客户端
    
  • @author Administrator

*/

public class LoginServer {

public static void main(String[] args) throws IOException,

ClassNotFoundException {

// 1、创建一个服务器,指定端口号

ServerSocket ss = new ServerSocket(8888);

boolean flag = true;

while (flag) {

Socket s = ss.accept();

new LoginThread(s).start();

}

ss.close();

}

}

class LoginThread extends Thread {

Socket s = null;

public LoginThread(Socket s) {

this.s = s;

}

@Override

public void run() {

try {

login();

} catch (ClassNotFoundException | IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

// 接收客户端信息的方法

public void login() throws IOException, ClassNotFoundException {

ObjectInputStream ois = new ObjectInputStream(s.getInputStream());

User user = (User) ois.readObject(); //向下转型

System.out.println(user.name + “正在登录”);

OutputStream os = s.getOutputStream();

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

bw.write(“服务端接收成功”);

bw.flush();

os.close();

ois.close();

s.close();

}

}

2、UDP对应的是DatagramSocket。

实现流程:

服务器端(server):

1. 构造DatagramSocket实例,指定本地端口。

2. 通过DatagramSocket实例的receive方法接收DatagramPacket.DatagramPacket中间就包含了通信的内容。

3. 通过DatagramSocket的send和receive方法来收和发DatagramPacket.

客户端(client):

1. 构造DatagramSocket实例。

2.通过DatagramSocket实例的send和receive方法发送DatagramPacket报文。

3.结束后,调用DatagramSocket的close方法关闭。

不多说,实例代码:

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.util.Scanner;

/**

  • 一对多聊天

  • @author Administrator

*/

public class UdpServer {

public static void main(String[] args) throws Exception {

// 服务器

DatagramSocket ds = new DatagramSocket(6666);

Scanner input = new Scanner(System.in);

boolean flag = true;

while (flag) {

// dengdai客户端发送消息

byte bs[] = new byte[1024];

DatagramPacket dp = new DatagramPacket(bs, bs.length);

ds.receive(dp);

// 解析数据

String str = new String(dp.getData(), 0, dp.getLength());

// str xiaomi:string

System.out.println(str);

// 端口号和ip地址不确定

int port = dp.getPort();

InetAddress ia = dp.getAddress();

System.out.println(ia.getHostAddress());

String msg = input.next();

// 把消息发送给客户端

DatagramPacket dp1 = new DatagramPacket(msg.getBytes(),

msg.getBytes().length, ia, port);

ds.send(dp1);

}

ds.close();

}

}

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.util.Scanner;

public class UdpClient {

public static void main(String[] args) throws Exception {

// 1、创建一个客户端 并指定端口

DatagramSocket ds = new DatagramSocket(8881);

boolean flag = true;

while (flag) {

// 2、准备数据

Scanner input = new Scanner(System.in);

String str = input.next();

str = “客户端说:”+str;

//结束客户端

if(str.equals(“exit”) || str.equals(“quit”)){

break; //打断循环

//continue: 打断当前这次循环执行下一次

//return 结束方法

}

// 3、打包数据

DatagramPacket dp = new DatagramPacket(str.getBytes(),

str.getBytes().length,

InetAddress.getByName(“192.168.1.218”), 8888);

// 4、发送数据

ds.send(dp);

// 5、接收服务器端的反馈

byte[] buf = new byte[1024];

DatagramPacket dp1 = new DatagramPacket(buf, buf.length);

ds.receive(dp1);

System.out.println(“服务器说:” + new String(dp1.getData()));

// 6、关闭客户端

}

ds.close();

}

}

//实例二:发送文件

import java.io.BufferedOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.SocketException;

/**

  • 通过udp传递文件

  • @author Administrator

*/

public class UdpServer {

public static void main(String[] args) {

DatagramSocket ds = null;

boolean flag = true;

try {

BufferedOutputStream bos = new BufferedOutputStream(

new FileOutputStream(“e:\xiaomiyanzhao.gif”, true));

ds = new DatagramSocket(6666);

// 等待接收数据

byte[] bs = new byte[2000];

while (flag) {

最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

BAT面试经验

实战系列:Spring全家桶+Redis等

其他相关的电子书:源码+调优

面试真题:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

[外链图片转存中…(img-qzuPDRS4-1713615035756)]

BAT面试经验

实战系列:Spring全家桶+Redis等

[外链图片转存中…(img-wqbUTh0d-1713615035756)]

其他相关的电子书:源码+调优

[外链图片转存中…(img-RC8dpOEw-1713615035757)]

面试真题:

[外链图片转存中…(img-ZPkVvwde-1713615035757)]

[外链图片转存中…(img-O2JoDHKh-1713615035758)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-4ttpResj-1713615035758)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值