文章列表

如何理解 select、poll、epoll?

如何理解 select、poll、epoll?

select、poll、epoll 是 IO 多路复用的三大实现方案,核心目标是让单线程监听多个 socket。本文讲清三者演进逻辑:select 有 1024 上限和全量拷贝开销,poll 突破数量限制,epoll 凭红黑树与事件回调解决全量扫描瓶颈,并解析 LT/ET 触发模式,以及 Java NIO、Netty、Redis、Nginx 如何基于 epoll 实现高并发,助你面试从容应对。


犬小哈2026/8/19Java面试八股文
IO 多路复用和多线程有什么区别?

IO 多路复用和多线程有什么区别?

IO 多路复用和多线程有什么区别?本文从面试视角深度解析:多线程解决并发执行、每连接一线程资源消耗大;IO 多路复用(select、poll、epoll)用少量线程高效监听海量连接。涵盖 Java NIO、Reactor 模式、C10K 问题及 Netty、Redis 组合使用实践,帮你彻底搞懂两者的本质区别。


犬小哈2026/8/19Java面试八股文
为什么按位与运算要比取模运算高效?

为什么按位与运算要比取模运算高效?

为什么 HashMap 用 (n-1) & hash 而不是 hash % n?核心在 CPU 指令层面:按位与只需一条 AND 指令、约 1 个时钟周期,而取模要走除法器执行 DIV 指令,延迟 20 个周期起步。但等价的前提是容量必须为 2 的幂,这也是 HashMap 强制 2 的幂容量的根本原因。本文从 CPU 指令、数学原理、源码落地与 JIT 优化边界层层拆解,助你面试满分。


犬小哈2026/8/19Java面试八股文
什么是分段和分页?

什么是分段和分页?

分页和分段是操作系统内存管理的核心考点:分页将内存切为固定大小的页,通过页表映射以消除外部碎片、提高内存利用率;分段按代码段、数据段等逻辑结构划分,便于共享与保护,但存在外部碎片。本文深入讲解地址翻译、多级页表、TLB、缺页中断等原理,并解析 x86-64 Linux 为何放弃分段,助你面试稳过。


犬小哈2026/8/17Java面试八股文
什么是零拷贝?

什么是零拷贝?

零拷贝是什么?本文深入解析零拷贝原理:从传统 I/O 的 4 次拷贝与 4 次上下文切换,到 mmap、sendfile 及 SG-DMA 如何让 CPU 拷贝彻底归零,并结合 Kafka 高吞吐、RocketMQ 内存映射、Netty 零拷贝等实战案例,助你彻底掌握这道高频面试题。


犬小哈2026/8/17Java面试八股文
什么是全双工和半双工?

什么是全双工和半双工?

一文讲透全双工与半双工的区别:半双工双向分时如对讲机,全双工双向同时如打电话,并对比单工通信三种模式。深度解析TCP为什么是全双工、四次挥手的由来、CSMA/CD机制与WebSocket应用,附面试高频追问和记忆口诀,助你轻松拿下操作系统面试题。


犬小哈2026/8/17Java面试八股文
进程间通信方式有哪些?

进程间通信方式有哪些?

详解Linux进程间通信的7种方式:匿名管道、命名管道、消息队列、共享内存、信号量、信号与Socket,深入剖析共享内存为何是最快IPC、管道两次拷贝原理,并覆盖Java进程间通信方案与高频面试追问,助你系统掌握IPC知识,面试答题出彩。


犬小哈2026/8/15Java面试八股文
进程、线程和协程的区别是什么?

进程、线程和协程的区别是什么?

一文搞懂进程、线程和协程的区别:进程是资源分配的基本单位,线程是CPU调度的基本单位,协程是用户态轻量执行单元。深度对比三者的切换开销、内存占用与并发量级,解析上下文切换原理,并涵盖Java虚拟线程与Go goroutine等业界实践,助你面试稳过。


犬小哈2026/8/15Java面试八股文
负载(Load)和 CPU 利用率之间有什么区别?

负载(Load)和 CPU 利用率之间有什么区别?

负载与CPU利用率有什么区别?Load衡量系统排队进程数,包含等待I/O的进程;CPU利用率仅统计CPU非空闲时间占比。面试与运维必考:当Load高但CPU利用率低时,多为磁盘I/O瓶颈。读懂两者组合关系,助你快速定位系统性能瓶颈!


犬小哈2026/8/14Java面试八股文