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/G1JVM 怎么判断对象可以被回收?(两种方式)★
→ 引用计数法(不主流)、可达性分析(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 → 默认 AbortPolicysynchronized 和 ReentrantLock 的区别?★
→ synchronized 自动释放、ReentrantLock 可中断、可公平、可定时volatile 关键字的作用?底层实现?★
→ 可见性 + 禁止指令重排序 → 内存屏障 + Lock 前缀指令CAS 是什么?ABA 问题怎么解决?★
→ Compare And Swap → AtomicStampedReference / AtomicMarkableReferenceAQS 是什么?核心思想?★
→ 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 + skiplistRedis 持久化方式?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、秒杀防超卖)也可以直接说~