JavaSE常见面试题(BIO、NIO、网络)

【1】简述BIO的分类

BIO按节点流字节流和字符流,处理流包含缓冲流和转换流

【2】简述BIO、NIO、AIO的区别

Java BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善

Java NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理

Java AIO(N 10.2)异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理

【3】序列化与反序列化

序列化是把内存对象转成与平台无关的二进制编码,反序列化将二进制编码反序列化成内存对象

【4】序列化id的作用

如果类没有显示定义这个静态常量,它的值是Java运行时环境根据类的内部细节自动生成的。若类的实例变量做了修改,serualVersionUID可能发证变化。故建议,显式声明。

【5】Java序列化如果有些字段不想进行序列化,怎么办?

对于不想进行序列化的变量,使用transient关键字修饰。transient关键字的作用是:阻止实例中那些用此关键字修饰的变量序列化;当对象被反序列化,被transient修饰的变量值不会被持久化和恢复。transient只能修饰变量,不能修饰类和方法。被staitc修饰的字段也不能被序列化,因为static修饰的属性属于类。

【6】网络通讯协议

网络通讯协议有两套参考模型,一套是OSI参考模型,一套是TCP/IP参考模型,OSI过于理想,实际开发都采用TCP/IP参考模型开发。

TCP/IP模型分为应用层、传输层、网络层、物理+数据链路层。

Java基础Socket、ServletSocket、serverSocketChannel,SocketChannel都属于TCP/IP模型的传输层TCP协议

DatagramPacket编程属于TCP/IP模型TCP/IP模型的传输层HTTP协议

基于HTTP的servlet属于TCP/IP模型的应用层HTTP协议

基于webSocket实现的属于TCP/IP模型层的应用层的WS协议

【7】在Java中,我有三个socket,我需要多少个线程来处理?

Socket是BIO的同步式阻塞式编程,所以三个socket需要三个线程来处理。

【8】Java中怎么能创建ByteBuffer?

ByteBuffer.allocate()、ByteBuffer.allocateDirect(10);直接缓存、ByteBuffer.wrap();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值