2026 Java 后端面试高频题 TOP20(含标准答案)

1. HashMap 底层实现

数组 + 链表 + 红黑树。默认容量 16,负载因子 0.75,链表长度 >8 且数组长度 ≥64 时树化。hash() 用高 16 位异或低 16 位减少碰撞。扩容时 1.8 采用高位拆分,避免死循环。

2. synchronized 与 Lock 区别

| 维度 | synchronized | ReentrantLock | | --- | --- | --- | | 实现 | JVM 关键字 | JDK 层 AQS | | 释放 | 自动 | 必须 finally unlock | | 可中断 | 否 | 是 | | 公平锁 | 否 | 支持 | | 条件队列 | 1个 | 多个 Condition |

3. volatile 的作用

  • 保证可见性(MESI 缓存一致性 + 总线嗅探)
  • 禁止指令重排序(内存屏障)
  • 不保证原子性(i++ 仍需加锁或用 AtomicInteger)

4. ThreadLocal 内存泄漏

ThreadLocalMap 的 key 是弱引用,value 是强引用。线程池复用线程导致 value 无法回收。必须 remove()。

5. Spring Bean 生命周期

实例化 → 属性填充 → BeanNameAware → BeanPostProcessor.before → InitializingBean → init-method → after → 使用 → DisposableBean → destroy

6. Spring 循环依赖怎么解决

三级缓存:singletonObjects(成品)、earlySingletonObjects(半成品)、singletonFactories(工厂)。只能解决单例 setter 注入,构造器注入无法解决。

7. MySQL 事务隔离级别

| 级别 | 脏读 | 不可重复读 | 幻读 | | --- | --- | --- | --- | | 读未提交 | ✅ | ✅ | ✅ | | 读已提交 | ❌ | ✅ | ✅ | | 可重复读(默认)| ❌ | ❌ | 部分 | | 串行化 | ❌ | ❌ | ❌ |

RR 通过 MVCC + 间隙锁解决大部分幻读。

8. 索引为什么用 B+ 树

  • 树高低(千万数据 3-4 层),磁盘 IO 次数少
  • 叶子节点链表相连,范围查询高效
  • 非叶子节点不存数据,单页可容纳更多 key

9. Redis 为什么快

  1. 纯内存操作
  2. 单线程避免上下文切换与锁竞争
  3. IO 多路复用(epoll)
  4. 高效数据结构(SDS、跳表、压缩列表)

10. 缓存穿透 / 击穿 / 雪崩

  • 穿透:查不存在的 key → 布隆过滤器 / 缓存空值
  • 击穿:热点 key 过期瞬间高并发 → 互斥锁 / 逻辑过期
  • 雪崩:大量 key 同时过期 → 过期时间加随机值

11. CAP 理论

一致性、可用性、分区容错性三者只能取其二。分布式系统必然存在 P,所以实际在 C 与 A 之间权衡。

12. 如何保证缓存与数据库一致性

推荐:先更新数据库,再删除缓存,配合消息队列重试 + 延迟双删。

13. 分布式 ID 方案

UUID(无序)、数据库号段、Redis INCR、Snowflake 雪花算法(推荐,41位时间+10位机器+12位序列)。

14. 消息队列如何保证不丢消息

  • 生产者:confirm 机制 + 重试
  • Broker:持久化 + 多副本
  • 消费者:手动 ack

15. 幂等性设计

唯一索引、Token 机制、状态机、分布式锁、乐观锁版本号。

16. JVM 调优参数

Bash
-Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200

17. 线程池任务执行流程

核心线程 → 队列 → 最大线程 → 拒绝策略。

18. 什么是幂等、什么是重放

幂等:多次执行结果一致。重放:请求被重复发送。防护:加 timestamp + nonce + 签名。

19. 微服务熔断降级

Sentinel / Hystrix:慢调用比例、异常比例触发熔断,快速失败返回降级结果。

20. 如何排查线上 OOM

Bash
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/
jmap -dump:format=b,file=heap.hprof <pid>
# 用 MAT / VisualVM 分析
打赏作者 已有 0 人打赏,共 ¥0.00
我的打赏
Java架构沉思录
Java架构沉思录
Lv8 普通VIP 原创 8 粉丝 545

十年 Java 后端老兵,专注高并发与分布式架构

  • 8文章
  • 14.3万总阅读
  • 6597获赞
  • 545粉丝

评论(0)

💬

还没有评论,来说两句吧