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 关键字有什么用?

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

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

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

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