JDK从1.4版本引入 NIO 的类库,但是其设计有点反人类,使用较为麻烦,需要熟练掌握Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等很多类库的使用。
在用NIO类库开发网络程序时还面临大量复杂问题需要解决,例如客户端断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等等。Netty作为现在最流行的网络通信框架,对 JDK 自带的 NIO 的类库进行了良好的封装,解决了上述NIO问题。且Netty拥有高性能、 吞吐量更高、延迟更低、减少资源消耗,最小化不必要的内存复制等优点。大家耳熟能详的一些中间件底层都大量的使用Netty,比如:Dubbo、Zookeeper、RocketMQ、Gateway、Spark等等。
Netty也是现在一线互联网公司面试必问的技术,但是很多同学因为工作缘故对Netty接触不多,或者只是简单用用,对Netty底层原理知之甚少,下面是我搜集的一些关于Netty的一些面试题,看看你能回答上几个?
P7面试题
1、BIO、NIO和AIO模型的区别
2、同步与异步、阻塞与非阻塞的区别
3、select、poll、epoll的机制及其区别
4、Netty底层操作与Java NIO操作对应关系如何
5、Netty的线程模型是怎样的,与Redis线程模型有区别吗
6、说说Reactor响应式编程是怎么回事
7、Netty的粘包/拆包是怎么处理的,有哪些实现
8、Netty的protobuf编解码机制是怎样的
9、Netty如何实现断线自动重连
10、Netty如何支持单机百万连接
11、说下Netty零拷贝的原理
12、说下Netty如何实现长连接心跳保活机制
13、Netty的内存池是怎么实现的
14、Netty是如何解决NIO底层epoll空轮询导致CPU 100%的Bug
15、Netty高并发高性能体现在哪些方面
16、基于Netty如何设计微信钉钉后端高并发IM架构
据我所知,如果能回答出其中的一半,就算是勉强及格了。如果这些你都能全部回答出来,那你应该是妥妥的技术大牛了!可以放心去投大厂简历了!
如果你没办法完全答出这些问题,私信我“Java”获得资料。
资料包括以下内容:
深入Hotspot源码与Linux内核理解NIO与Netty线程模型
1、BIO&NIO&AIO模型快速实战
2、深入Hotspot源码理解NIO多路复用器
3、深入Linux内核理解Epoll事件轮询模型
4、阿里面试问的select、poll、epoll模型的区别
5、深入Redis源码理解Redis高并发线程模型
6、Reactor响应式编程设计模式精讲
7、Netty主从Reactor高并发线程模型精讲
8、单机百万连接Netty高并发架构实现
9、彻底讲透同步异步阻塞非阻塞
高性能网络通信框架Netty从入门到核心源码剖析
1、用Netty十分钟开发一个聊天室
2、Netty异步非阻塞线程模型精讲
3、深入Netty源码理解Netty对NIO模型的封装
4、Netty主从Reactor高并发线程模型源码剖析
5、单机百万连接Netty高并发架构实现
6、深入Netty源码理解零拷贝机制
7、Netty长连接心跳保活机制源码剖析
8、基于Netty设计微信钉钉后端高并发IM架构
私信我“Java”获得资料。
本文暂时没有评论,来添加一个吧(●'◡'●)