# 1. Netty 的主从 Reactor 线程模型,Boss/Worker EventLoopGroup 的分工与一个 Channel 绑定单一 EventLoop 的意义如何? A Boss 处理读写 B Boss 接受连接,Worker 处理读写,Channel 绑定单一 EventLoop 获得无锁串行 ✓ 正确答案 C Channel 可被多个 EventLoop 并发处理 D 每个 Channel 需独立线程
# 2. Netty 如何解决 TCP 粘包/拆包?四种内置解码器(定长/分隔符/LengthFieldBasedFrameDecoder/行解码)的适用场景? A 所有协议用同一解码器 B 粘包无需处理 C 定长转换用行解码 D 按协议格式选解码器,二进制带长度用 LengthFieldBasedFrameDecoder ✓ 正确答案
# 3. Netty 的 ChannelPipeline 与 ChannelHandler 责任链,入站/出站事件的传播顺序与 handler 共享(@Sharable)注意事项如何? A 所有 handler 都可共享 B @Sharable 用于有状态 handler C 入站从后向前 D 入站从前向后、出站从后向前传播,@Sharable 仅用于无状态 handler ✓ 正确答案
# 4. Netty 的 EventLoop 模型与 Reactor 模式的关系,N 个 EventLoop 如何绑定 Channel? A Channel 绑定多个 EventLoop B 每个 Channel 一个线程 C EventLoop 不处理事件 D EventLoop 是 Reactor 单线程,Channel 轮询绑定一个 EventLoop 串行处理 ✓ 正确答案
# 5. Netty 的 Future/Promise 与 JDK Future 的差异(addListener 回调、线程安全) A Netty Future 只能阻塞获取 B Netty Future 支持 addListener 回调与可写 Promise,比 JDK Future 阻塞 get 更异步 ✓ 正确答案 C Promise 不可写 D 两者相同
# 6. Netty 的 EpollEventLoopGroup 在 JDK NIO Epoll 下的零拷贝 sendfile 路径? A sendfile 无收益 B 零拷贝只用于内存 C 文件需拷贝到用户态 D FileRegion 走 sendfile 系统调用,文件数据从内核直接发送避免用户态拷贝 ✓ 正确答案
# 7. Netty Pipeline 的 ChannelHandler 上下文传播与 @Sharable 的陷阱? A 非线程安全 handler 标注 @Sharable 会被多 Channel 并发访问产生竞争 ✓ 正确答案 B @Sharable 无风险 C 有状态 handler 可安全共享 D @Sharable 保证线程安全
# 8. Netty 的 ByteBuf 内存管理,池化(PooledByteBufAllocator)、引用计数与内存泄漏检测机制如何? A 每次分配新缓冲 B 引用计数与释放无关 C 无需检测泄漏 D 池化复用、引用计数管理生命周期、LeakDetector 定位泄漏 ✓ 正确答案
# 9. Netty 的零拷贝体现在哪些层面(CompositeByteBuf/slice/FileRegion/堆外内存)? A CompositeByteBuf 免拼接、slice 免切片、FileRegion 免用户态拷贝 ✓ 正确答案 B 零拷贝只是概念 C slice 会复制数据 D 堆外内存增加拷贝
# 10. Netty 心跳机制 IdleStateHandler 的三种空闲检测与断线重连的实现方案? A 心跳无需超时 B 检测读/写/读写空闲,空闲发心跳、超时判定失效并重连 ✓ 正确答案 C 只检测读空闲 D 空闲不处理
# 11. Netty 的 ByteBuf 池化与引用计数,内存泄漏如何检测(LeakDetector)? A 泄漏自动修复 B 记录分配栈,GC 时发现未 release 的 ByteBuf 并打印栈定位 ✓ 正确答案 C 检测无开销 D 泄漏不检测
# 12. Netty 的粘包拆包,LineBased/固定长度/分隔符/自定义协议解码器如何选择? A 所有协议用 LineBased B 定长协议用 LengthFieldBased C 文本行用 LineBased,定长用 FixedLength,二进制长度用 LengthFieldBased ✓ 正确答案 D 无需区分协议
# 13. 在 Netty EventLoop 中执行阻塞/耗时操作的影响与正确 offload 方式 A 阻塞 EventLoop 影响同线程所有 Channel,耗时操作 offload 到线程池 ✓ 正确答案 B 阻塞操作可直接在 EventLoop 执行 C 耗时操作不影响 EventLoop D 无需 offload
# 14. Netty 的 FastThreadLocal 相比 JDK ThreadLocal 的优化(数组索引替代哈希) A 无优化 B 用全局 index 数组直接访问,替代 ThreadLocal 的哈希查找 ✓ 正确答案 C 仍用哈希 D 比 ThreadLocal 慢
# 15. Netty 的 writeAndFlush 写出流程与高低水位线(write buffer watermark)背压机制? A 缓冲超高水位变不可写触发背压,低于低水位恢复可写 ✓ 正确答案 B 背压与内存无关 C 缓冲无限增长 D 水位线无背压作用
# 16. Netty 与虚拟线程在高并发网络编程中的对比与取舍? A 虚拟线程吞吐更高 B Netty 编程简单 C 两者不可兼得 D Netty 事件驱动高吞吐但复杂,虚拟线程阻塞式简单适合 I/O 密集 ✓ 正确答案
# 17. Netty 的 ChannelPipeline,入站/出站事件与 Handler 顺序的执行机制如何? A 入站从 head 向后、出站从 tail 向前,fireXxx 传播 ✓ 正确答案 B 入站从 tail 向前 C 顺序无关 D 出站从 head 向后
# 18. Netty 的优雅停机(shutdownGracefully)流程与未完成任务处理 A 只停 EventLoop B 停止新连接、排空在途任务、关闭 Channel 与资源 ✓ 正确答案 C 立即关闭中断 D 不处理在途任务