2025–2026 年 Java 后端面试(尤其是金九银十、春招秋招、社招)的高频“八股文”已经高度内卷化。面试官越来越倾向于“八股文 + 项目场景 + 真实问题解决”的组合考察。
下面给你一份2025–2026 年仍然最主流、最常被问到的八股文分类汇总(基于大量真实面经、牛客/B 站/知乎/CSDN/GitHub 等渠道的统计),按出现频率从高到低排序。
每个模块列出 8–15 个最高频问题(带极简答案框架 + 追问方向),建议你至少把带 ★ 的问题背到能脱口而出 + 手写代码。
一、Java 基础 & 集合 & JVM(出现率 95%+)
- HashMap 1.8 底层数据结构 + 扩容机制 + 为什么引入红黑树? ★
→ 数组 + 链表 → 数组 + 链表/红黑树(阈值8 & 数组长度≥64) - HashMap 是线程安全的吗?为什么?并发场景用什么替代? ★
→ 不安全 → ConcurrentHashMap(1.7 Segment → 1.8 CAS + synchronized) - ConcurrentHashMap 1.7 vs 1.8 的区别? ★
→ 1.7 Segment 分段锁 → 1.8 Node + CAS + synchronized(锁粒度更细) - JVM 运行时数据区有哪些?哪些是线程共享的? ★
→ 程序计数器(私有)、虚拟机栈、本地方法栈、堆(共享)、方法区/元空间(共享) - JVM 垃圾回收算法有哪些?新生代用什么?老年代用什么? ★
→ 标记-清除、标记-整理、复制 → 新生代复制 + 标记清除,老年代标记整理/CMS/G1 - JVM 怎么判断对象可以被回收?(两种方式) ★
→ 引用计数法(不主流)、可达性分析(GC Roots) - 常见的 GC Roots 有哪些?
→ 虚拟机栈中引用的对象、方法区中静态变量/常量、native 方法栈 JNI 引用等 - full gc 频繁的原因及解决思路? ★
→ 大对象、元空间溢出、老年代分配担保失败、System.gc() 等 - String、StringBuilder、StringBuffer 的区别? ★
→ String 不可变、SB 非线程安全、Buffer 线程安全 - equals() 和 hashCode() 的关系?重写 equals 必须重写 hashCode 吗? ★
→ 必须,否则 HashMap 等集合行为异常 - Java 8 新特性你用过哪些?Lambda、Stream、Optional、函数式接口 ★
二、并发 & 多线程(出现率 90%+)
- 线程与进程的区别? ★
→ 进程资源独立、线程共享进程资源 - 创建线程的几种方式?哪种最好? ★
→ 继承 Thread、实现 Runnable、Callable + FutureTask、线程池(推荐) - 线程池的核心参数?如何合理配置? ★
→ 核心数、最大数、队列、拒绝策略、线程工厂 - 线程池饱和后拒绝策略有几种?默认是哪个? ★
→ Abort、CallerRuns、Discard、DiscardOldest → 默认 AbortPolicy - synchronized 和 ReentrantLock 的区别? ★
→ synchronized 自动释放、ReentrantLock 可中断、可公平、可定时 - volatile 关键字的作用?底层实现? ★
→ 可见性 + 禁止指令重排序 → 内存屏障 + Lock 前缀指令 - CAS 是什么?ABA 问题怎么解决? ★
→ Compare And Swap → AtomicStampedReference / AtomicMarkableReference - AQS 是什么?核心思想? ★
→ AbstractQueuedSynchronizer → 状态变量 + CLH 队列 + 模板方法 - ReentrantLock 是怎么实现的?
→ 基于 AQS + CAS 修改 state - 线程安全的单例模式有几种写法? ★
→ 双检锁(volatile)、静态内部类、枚举 - ThreadLocal 的原理?内存泄漏怎么解决? ★
→ 每个线程一个 Map → remove() 或 weak 引用 + 主动清理
三、Spring 全家桶(出现率 85%+)
- Spring IOC 的底层实现? ★
→ BeanDefinition + BeanFactory + 反射 + 代理 - Bean 的生命周期? ★
→ 实例化 → 属性填充 → 初始化前 → 初始化(init-method) → 使用 → 销毁前 → 销毁 - Spring 如何解决循环依赖?(三级缓存) ★
→ singletonObjects(一级) → earlySingletonObjects(二级) → singletonFactories(三级) - @Transactional 传播行为有几种?默认是哪个? ★
→ REQUIRED(默认)、REQUIRES_NEW、NESTED 等 7 种 - Spring AOP 的底层实现?动态代理的两种方式区别? ★
→ JDK 动态代理(接口) vs CGLIB(子类) - Spring Boot 自动配置原理? ★
→ @EnableAutoConfiguration → META-INF/spring.factories → Condition 条件装配 - Spring Boot 如何实现 starter?
→ 约定大于配置 + spring.factories + 自动配置类 - Spring MVC 的执行流程? ★
→ DispatcherServlet → HandlerMapping → HandlerAdapter → Controller → ViewResolver → View
四、MySQL & Redis & MQ(出现率 80%+)
- MySQL 索引为什么用 B+ 树? ★
→ 范围查询效率高、叶子节点存数据、扇出大 - InnoDB 与 MyISAM 的区别? ★
→ InnoDB 支持事务/行锁/外键,MyISAM 表锁/全文索引 - 索引失效的常见场景? ★
→ 函数、隐式转换、or、!=、is null、like %xx% - Redis 数据类型有哪些?ZSet 底层实现? ★
→ String/Hash/List/Set/ZSet/BitMap/Geo/HyperLogLog → ziplist + skiplist - Redis 持久化方式?RDB vs AOF 优缺点? ★
→ RDB 快照(紧凑)、AOF 日志(安全、可重放) - Redis 缓存击穿/穿透/雪崩怎么解决? ★
→ 击穿:互斥锁 / 逻辑过期
→ 穿透:布隆过滤器 / 缓存空对象
→ 雪崩:随机过期 + 多级缓存 + 限流 - Kafka 高可用怎么保证?
→ 分区副本 + Leader/Follower + ISR
五、分布式 & 微服务 & 高并发场景(出现率 70%+)
- 分布式锁怎么实现?Redis vs Zookeeper? ★
→ Redis:setnx + 过期 + Lua 脚本
→ ZK:临时顺序节点 - 分布式事务有几种方案?优缺点? ★
→ 2PC/3PC、TCC、Seata-AT、MQ 最终一致性、本地消息表 - 秒杀系统怎么设计?超卖怎么防? ★
→ 限流 + 令牌桶 + 异步下单 + 库存扣减(Redis Lua / 数据库乐观锁) - 服务拆分原则?如何避免分布式事务?
- JWT 原理?如何实现无状态登录?
六、项目 & 场景题(2025–2026 年占比越来越高)
- 线上 OOM / Full GC 频繁怎么排查?
→ jmap / jstat / arthas / dump 分析 - 深分页怎么优化?
→ 覆盖索引 + 延迟关联 + search after / scroll - 扫码登录怎么实现?
→ UUID + 长轮询 / WebSocket + Redis 存储状态 - Redis 如何实现亿级用户连续签到统计?
→ Bitmap + HyperLogLog(UV) + bitfield 统计 - 如何设计一个高并发点赞系统?
重阳,你现在是准备春招/秋招还是社招跳槽?
- 应届生 / 1–3 年:重点 Java 基础 + Spring + MySQL + Redis + 项目
- 3–5 年:并发 + JVM 调优 + 分布式 + 场景题
- 5 年+:架构设计 + 源码 + 真实故障案例
告诉我你的经验年限 + 目标公司档次(字节/阿里/腾讯/美团/京东/拼多多/大厂外包等),我可以给你更精准的优先级排序 + 刷题路线 + 答案模板。
需要我展开某个模块的详细答案(比如三级缓存、AQS、秒杀防超卖)也可以直接说~