【吊打面试官】netty高频面试题知识点和答案

  1. Netty 是什么?
  2. Netty 的特点是什么?
  3. Netty 的优势有哪些?
  4. Netty 的应用场景有哪些?
  5. Netty 高性能表现在哪些方面?
  6. BIO、NIO和AIO的区别?
  7. NIO的组成?
  8. Netty的线程模型?
  9. TCP 粘包/拆包的原因及解决方法?
  10. 什么是 Netty 的零拷贝?
  11. Netty 中有哪种重要组件?
  12. Netty 发送消息有几种方式?
  13. 默认情况 Netty 起多少线程?何时启动?
  14. 了解哪几种序列化协议?
  15. 如何选择序列化协议?
  16. Netty 支持哪些心跳类型设置?
  17. Netty 和 Tomcat 的区别?
  18. NIOEventLoopGroup源码?
  19. Netty简介
    a) JDK原生NIO程序的问题
    b) Netty的特点
    c) Netty常见使用场景
  20. Netty高性能设计
    a) I/O模型
    i. 阻塞I/O
    ii. I/O复用模型
    iii. 基于buffer
    b) 线程模型
    i. 事件驱动模型
    ii. Reactor线程模型
    iii. Netty线程模型
    iv. 异步处理
  21. Netty架构设计
    a) 功能特性
    b) 模块组件
    i. Bootstrap、ServerBootstrap
    ii. Future、ChannelFuture
    iii. Channel
    iv. Selector
    v. NioEventLoop
    vi. NioEventLoopGroup
    vii. ChannelHandler
    viii. ChannelHandlerContext
    ix. ChannelPipline
    c) 工作原理架构
  22. 总结

答案详情如下:

6.BIO、NIO和AIO的区别?

BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。
伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。

NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

BIO是面向流的,NIO是面向缓冲区的;BIO的各种流是阻塞的。而NIO是非阻塞的;BIO的Stream是单向的,而NIO的channel是双向的。

NIO的特点:事件驱动模型、单线程处理多任务、非阻塞I/O,I/O读写不再阻塞,而是返回0、基于block的传输比基于流的传输更高效、更高级的IO函数zero-copy、IO多路复用大大提高了Java网络应用的可伸缩性和实用性。基于Reactor线程模型。

在Reactor模式中,事件分发器等待某个事件或者可应用或个操作的状态发生,事件分发器就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。如在Reactor中实现读:注册读就绪事件和相应的事件处理器、事件分发器等待事件、事件到来,激活分发器,分发器调用事件对应的处理器、事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。

10.什么是 Netty 的零拷贝?

Netty 的零拷贝主要包含三个方面:

Netty 的接收和发送 ByteBuffer 采用 DIRECT BUFFERS,使用堆外直接内存进行 Socket 读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行 Socket 读写,JVM 会将堆内存 Buffer 拷贝一份到直接内存中,然后才写入 Socket 中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。

Netty 提供了组合 Buffer 对象,可以聚合多个 ByteBuffer 对象,用户可以像操作一个 Buffer 那样方便的对组合 Buffer 进行操作,避免了传统通过内存拷贝的方式将几个小 Buffer 合并成一个大的 Buffer。
Netty 的文件传输采用了 transferTo 方法,它可以直接将文件缓冲区的数据发送到目标 Channel,避免了传统通过循环 write 方式导致的内存拷贝问题。

回复【资料】领取完整答案:

图片说明

优质文章推荐

1、【吊打面试官】redis高频面试知识点和答案
https://blog.nowcoder.net/n/e4ba3dea1fbf49a3b80955b49cf7d841
2、【吊打面试官】spring高频面试知识点和答案
https://blog.nowcoder.net/n/418eb40949b4423881ed0a6c7f81fdca
3、【吊打面试官】计算机网络高频面试题和答案
https://blog.nowcoder.net/n/7c37283aece9449dae7f2f894c8b8dbb
4、【吊打面试官】spring boot高频面试知识点
https://blog.nowcoder.net/n/44078445e7324141b6b43bc5fc596a5f
5、【吊打面试官】zookeeper大厂高频面试题和答案
https://blog.nowcoder.net/n/6a7bd244b0f44922923e8c0aa7381d78
6、【吊打面试官】消息队列高频面试知识点
https://blog.nowcoder.net/n/ab72bb4585064bf69ce539e73323acba

全部评论

相关推荐

Dream_coding:你是不是只投大厂了
点赞 评论 收藏
分享
牛客10001:问就是六个月,全国可飞,给钱就干
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务