文章列表

ES 不支持 decimal,如何避免丢失精度?

ES 不支持 decimal,如何避免丢失精度?

ES 不支持 decimal,float/double 按 IEEE 754 存储,存金额必丢精度。本文详解三种主流方案:金额转分存 long、scaled_float 缩放存储、keyword 字符串兜底,并覆盖 JSON 序列化、前端 JS 大数、聚合精度暗坑等全链路踩坑点,助你面试与生产双通关。


犬小哈2026/8/27Java面试八股文
ElasticSearch 为什么快?

ElasticSearch 为什么快?

ElasticSearch 为什么快?本文从数据结构、存储、架构三层深入解析:倒排索引跳过全表扫描,FST + Term Index 常驻内存最少一次磁盘寻址,不可变 Segment 与 Doc Values 列式存储吃满缓存,分片并行与缓存体系支撑高并发,NRT 近实时实现 1 秒可见性。附高频追问与面试变体,助你面试通关。


犬小哈2026/8/26Java面试八股文
倒排索引是什么?

倒排索引是什么?

倒排索引是 Elasticsearch 全文检索的核心数据结构,通过“词条→文档列表”的反向映射,实现近乎 O(1) 的关键词查询。本文深入讲解倒排索引与正排索引的区别,剖析 Term Index(FST)、Term Dictionary、Posting List 三层内部结构,以及 FOR 压缩与 Roaring Bitmap 优化原理,并附 Java 实现示例与 ES 面试高频追问,助你彻底搞懂 ES 为什么查询快。


犬小哈2026/8/25Java面试八股文
什么是 MESI 缓存一致性协议?

什么是 MESI 缓存一致性协议?

MESI 是主流 CPU 的多核缓存一致性协议,通过 Modified、Exclusive、Shared、Invalid 四种状态配合总线嗅探机制,保证各核心私有缓存中数据副本一致。本文深入讲解缓存不一致问题、状态流转示例、Store Buffer 与内存屏障的关系,并延伸到伪共享、缓存行填充及 volatile 可见性原理,帮你把 Java 并发的硬件底层彻底讲通,面试必备。


犬小哈2026/8/25Java面试八股文
如何理解 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面试八股文