Skip to content

右侧栏

JAVA IO 面试题 ​

[toc]

什么是 IO、BIO、NIO、AIO、怎么理解 IO、BIO、NIO、AIO? ​

怎么理解同步 IO 与异步 IO? ​

怎么理解阻塞 IO 和非阻塞 IO? ​

常用的 IO 类型有哪些? ​

为什么需要 NIO?用 IO 和线程池不行吗? ​

NIO 有哪三大组件?它们之间的关系是什么样的? ​

NIO 和 Netty 有什么关系?为什么不建议使用 Java 原生的 NIO? ​

Netty 是一个基于 NIO 的网络通信框架,NIO 是 netty 的基础;Netty 诞生的主要目的是为了简化网络编程,提高编程效率。Netty 封转了 NIO 中繁琐的细节。并且提供了很多高级特性,如简单的事件驱动,高效的内存管理,让开发者可以更专注的实现业务逻辑。

为什么不建议使用 java 原生的 nio? ​

  1. API 设计过于复杂和反直觉
  2. 可靠性问题与边缘情况(坑多)
  3. 开发效率和可维护性极差
  4. 线程模式复杂

主要还是 Netty 的出现,在原生的 NIO框架上提供了一层高级易用的抽象,完美的解决了上述的问题

NIO 是如何实现多路复用的? ​

NIO 中 Scatter 和 Gather 分别是什么? ​

Java 有哪几种类型的流? ​

字节流和字符流的区别?两者如何转换? ​

InputStream 和 Reader 有什么区别?Reader 和 BufferReader 有什么区别? ​

PrintStream 是什么流?PrintWriter 是什么流?PrintStream 和 PrintWriter有什么区别?FileWriter 和 BufferedWriter 有什么区别,哪个效率更高? ​

System.out 是什么流? ​

什么是 Filter 流?Filter流可以分为哪几类?Filter 流有哪些常用的实现类? ​

缓冲区和缓冲的区别? ​

什么是缓冲流?缓冲流有什么优势?缓冲流可以分为哪几类? ​

什么是回退流?回退流分为哪几类? ​

IO 流中的 flush 是指什么?close 和 flush 的区别?所有 IO 流都需要 flush 操作吗?IO 流关闭之前,一定要 Flush操作吗? ​

如何返回读取输入流中的内容? ​

Java 序列化是什么?有哪几种序列化方式?分别用代码实现 ​

序列化 ID(serialVersionUID)的作用是?格式是怎样的?如何生成? ​

序列化 ID(serialVersionUID)一定要显示声明吗?默认生成的有什么问题? ​

序列化 ID(serialVersionUID)一定要唯一吗?同一个类的不同对象可以有不同的 serialVersionUID 值吗? ​

序列化 ID (serialVersionUID) 可以修改吗?什么时候需要? ​

序列化中的@Serial注解的作用? ​

transient 关键字有什么用? ​

怎么控制类中的某些变量不被序列化?编程实现一个序列化对象部分数据的例子? ​

序列化对象时,有哪些需要注意的? ​

静态变量能不能被序列化? ​

本站访客数 人次 本站总访问量 次