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?
- API 设计过于复杂和反直觉
- 可靠性问题与边缘情况(坑多)
- 开发效率和可维护性极差
- 线程模式复杂
主要还是 Netty 的出现,在原生的 NIO框架上提供了一层高级易用的抽象,完美的解决了上述的问题
