2025-2026 年 Java 后端面试题 最全整理(高频 + 最新特性 + 真实场景),覆盖 Java 基础 / 集合 / 多线程 & 并发 / JVM / Spring 全家桶 / Spring Boot / MySQL / Redis / 微服务 & 分布式 等主流方向。
内容基于2025年下半年到2026年初真实大厂(字节、阿里、腾讯、美团、华为、京东等)面经 + JDK 21/22/23 新特性趋势,答案力求准确、简洁、可背诵、可展开。
分为模块整理,建议收藏 + 按模块逐个攻克。
一、Java 基础 & 集合(常问 2025-2026 版)
- String 为什么是不可变的?String、StringBuilder、StringBuffer 区别? String 被 final 修饰 + 底层 char[] 也是 final 的 → 不可变性,保证线程安全 + 常量池复用 + Hash 值缓存。
StringBuilder(非线程安全、高性能)、StringBuffer(线程安全、synchronized、性能差)。 - JDK 8 到 JDK 21/22/23 有哪些重要变化?面试常考新特性?
- JDK 17/21(LTS):密封类、记录类(record)、模式匹配 for switch(JDK 21 正式)、虚拟线程(Project Loom,JDK 21 正式)、字符串模板(预览)、Sequenced Collections(JDK 21)
- JDK 22/23:字符串模板正式、外部函数 & 内存 API(预览)、结构化并发(预览)
- 面试最爱问:虚拟线程(轻量级、平台线程阻塞不影响虚拟线程调度)、记录类 record(不可变数据载体,替代 Lombok @Data 部分场景)
- HashMap JDK 1.7 vs 1.8 区别?JDK 1.8 为什么引入红黑树? 1.7:数组 + 链表,头插法(扩容死循环风险)
1.8:尾插法 + 链表长度 >8 转红黑树(查询 O(log n)),引入 hash 扰动优化 - ConcurrentHashMap 1.7 vs 1.8 区别?1.8 如何保证线程安全? 1.7:Segment 分段锁
1.8:CAS + synchronized(只锁桶头节点),放弃分段锁,扩容协助机制更高效 - Java 中有哪些线程安全集合?底层实现分别是什么?
- Vector / Hashtable(全表 synchronized)
- Collections.synchronizedXXX(包装器,同步方法)
- CopyOnWriteArrayList(写时复制,适合读多写少)
- CopyOnWriteArraySet
- ConcurrentHashMap(分段/CAS+synchronized)
- ConcurrentSkipListMap / Set(跳表)
二、多线程 & 并发(2025-2026 高频 + 场景题)
- 线程池参数如何合理设置?核心线程数、最大线程数、队列怎么选?
- CPU 密集型:核心数 +1
- IO 密集型:核心数 × 2 + 核心数(经验值)
- 队列:LinkedBlockingQueue(有界)、SynchronousQueue(不缓存)
- 拒绝策略:CallerRunsPolicy(业务线程执行)、DiscardPolicy
- volatile 关键字作用?能否保证原子性? 保证可见性 + 禁止指令重排序,不保证原子性
i++ 场景仍需加锁或 AtomicInteger - synchronized vs ReentrantLock 区别?哪个更好? synchronized(JDK 6 后优化):偏向锁 → 轻量级锁 → 重量级锁
ReentrantLock:可中断、可公平、可定时、支持 Condition
现在:优先 synchronized(JVM 优化更好),特殊需求用 ReentrantLock - ThreadLocal 内存泄漏原因?怎么解决? ThreadLocalMap 的 key 是弱引用,value 是强引用
线程池复用线程 → value 未回收 → 泄漏
解决:用完 remove(),Spring 自动管理(RequestContextHolder) - AQS 原理?CountDownLatch / Semaphore / CyclicBarrier 底层都是 AQS? AQS:CLH 变种队列 + state 状态
- CountDownLatch:state 倒计数
- Semaphore:state 表示许可数
- CyclicBarrier:ReentrantLock + Condition
- 虚拟线程(JDK 21)与平台线程区别?使用场景? 虚拟线程:轻量级(百万级)、由 JVM 调度、阻塞不耗平台线程
场景:高并发 IO 密集(网关、爬虫、Web 服务),代替 Tomcat NIO 线程池
三、JVM(线上问题排查必考)
- JVM 内存区域划分?JDK 8 后永久代去哪了? 线程私有:程序计数器、虚拟机栈、本地方法栈
线程共享:堆、元空间(Metaspace)(原来 PermGen → 直接内存) - 新生代 & 老年代垃圾回收算法?Minor GC vs Major GC vs Full GC? 新生代:复制算法(Minor GC)
老年代:标记-清除 / 标记-整理(Major GC / Full GC)
Full GC 触发:老年代满、元空间不足、显式 System.gc() 等 - JVM 参数调优常用选项?线上 OOM / CPU 高怎么排查? -Xms / -Xmx / -Xss / -XX:MaxMetaspaceSize
-XX:+UseG1GC / -XX:+UseZGC(JDK 21 分代 ZGC)
排查:jmap -histo、jstack、jstat -gc、arthas、MAT - G1 vs ZGC vs Shenandoah?JDK 21 分代 ZGC 有什么改进? G1:可预测停顿、分区
ZGC:低延迟(<10ms)、染色指针、并发整理(JDK 21 分代后新生代回收更快)
四、Spring / Spring Boot 高频
- Spring IOC 实现原理?Bean 生命周期? 反射 + 工厂模式 + 单例池
生命周期:实例化 → 属性填充 → Aware → 初始化前 → 初始化 → 使用 → 销毁前 → 销毁 - @Transactional 失效场景有哪些?事务传播行为区别? 失效:非 public、内部调用、异常被捕获、事务方法不是 public
传播:REQUIRED(最常用)、REQUIRES_NEW(独立事务)、NESTED(保存点) - Spring Boot 自动配置原理?starter 机制? @EnableAutoConfiguration → spring.factories → Condition 条件装配
- Spring MVC 执行流程? DispatcherServlet → HandlerMapping → HandlerAdapter → Controller → ViewResolver → 渲染
- Spring Boot Actuator 常用端点?如何暴露? health、info、metrics、env、loggers
management.endpoints.web.exposure.include=*
五、MySQL / Redis / 分布式(简要)
- MySQL 索引失效场景?回表?覆盖索引? 函数、类型转换、OR、!=、最左前缀不满足
回表:非主键索引 → 回主键索引取整行
覆盖索引:查询字段都在索引中 → 不回表 - Redis 持久化机制?RDB vs AOF?混合持久化? RDB:快照,适合冷备
AOF:日志,数据更安全,fsync 策略
混合:4.0 后默认,AOF 重写时用 RDB + 增量 - 分布式锁怎么实现?Redisson 原理? setnx + 过期时间(防死锁)
Redisson:Lua 脚本 + Watch Dog 自动续期 - RocketMQ / Kafka 消息丢失场景?怎么保证不丢失? 生产者:acks=all
Broker:刷盘策略(同步/异步)
消费者:手动提交 offset
六、场景题(2025-2026 真题趋势)
- 秒杀系统设计?超卖怎么防? 限流(令牌桶 / 漏桶)→ Redis 预减库存 → Lua 脚本原子扣减 → MQ 异步下单 → 数据库最终一致性
- 线上 CPU 100% / OOM 怎么排查? CPU:top + jstack 找 busy thread
OOM:jmap -dump → MAT 分析 dominator tree - 设计一个分布式 ID 生成方案? 雪花算法(Snowflake) / 带业务字段的雪花 / Redis 自增 + 分段
- 虚拟线程在 Web 应用中怎么替换 Tomcat 线程池? Spring Boot 3.2+ + JDK 21,配置 server.tomcat.threads.virtual.enabled=true
建议背诵节奏:
- 先背 Java 基础 + 集合 + 多线程(每天 20 道)
- 再攻 JVM + Spring(重点)
- 最后刷场景题 + 新特性(虚拟线程、分代 ZGC、记录类)
需要我展开某个模块的详细答案、代码示例、JDK 21 虚拟线程实战代码、或者针对某个方向(比如 Spring 源码 / JVM 调优 / 分布式事务)的更深内容,直接告诉我!祝你金三银四拿下满意 offer!