一、Java核心八股文(2025年最新版)
1. Java基础
HashMap vs ConcurrentHashMap
HashMap:非线程安全,JDK1.8后采用数组+链表/红黑树,扩容时可能死循环(JDK1.7)。
ConcurrentHashMap:JDK1.8改用CAS+synchronized优化锁粒度,分段锁淘汰。
synchronized vs ReentrantLock
synchronized:JVM内置锁,非公平锁,不可中断。
ReentrantLock:支持公平锁、可中断、Condition条件队列。
volatile的作用与限制
保证可见性(强制主存读取)和有序性(禁止指令重排序),但不保证原子性(如
i++
需AtomicInteger
)。
JVM内存模型
线程私有区:虚拟机栈、本地方法栈、程序计数器。
线程共享区:堆、方法区(JDK1.8后为元空间)。
G1垃圾回收器特点
Region分区、可预测停顿、适合大内存应用。
二、高并发与分布式系统(2025重点)
1. 并发编程
线程池参数设置
corePoolSize
(核心线程数)、maxPoolSize
(最大线程数)、workQueue
(任务队列)、拒绝策略1。IO密集型:
CPU核心数 * 2
;CPU密集型:CPU核心数 + 1
。
AQS原理
核心:
state
(资源状态)+CLH队列
(线程排队),实现类如ReentrantLock
、CountDownLatch
。
分布式锁方案
Redis(SETNX + RedLock)、ZooKeeper(临时节点 + Watch机制)。
2. 分布式场景题
如何设计百万级QPS的秒杀系统?
分层削峰:Nginx限流 → Redis预减库存(Lua脚本保证原子性)→ 消息队列异步处理。
热点隔离:独立Redis集群处理秒杀商品。
CAP理论应用
支付系统侧重CP(一致性+分区容错性),社交系统可能选择AP。
三、数据库与缓存优化(2025高频)
1. MySQL深度优化
十亿级数据分页查询优化
ES
search_after
(深度分页)、覆盖索引 + 禁止跳页(LIMIT
优化)。
索引失效场景
LIKE '%xx'
、函数计算、OR条件、隐式类型转换。
MVCC实现原理
ReadView
+Undo Log
版本链,解决不可重复读 & 幻读。
2. Redis高级应用
缓存一致性方案
延迟双删(先删缓存→更新DB→再删缓存)、订阅Binlog(Canal监听变更)。
缓存雪崩预防
随机过期时间 + 多级缓存(本地→Redis→DB)+ 熔断降级(Sentinel)。
四、微服务与架构设计(2025新趋势)
1. 微服务核心问题
Spring Boot自动配置原理
@EnableAutoConfiguration
+META-INF/spring.factories
+ 条件注解(@Conditional
)。
服务熔断策略
Sentinel动态调整阈值(基于慢调用比例触发降级)。
2. 系统设计题
设计高可用支付系统
一致性:TCC事务 + 对账机制。
容灾:同城多活(数据同步:MySQL Binlog + Kafka)。
全链路灰度发布实现
流量标记(Header传递) + Service Mesh(Istio动态路由)。
五、2025年新兴技术(加分项)
云原生技术
K8s在大促中的应用(HPA自动扩缩容)、Serverless(适合定时任务/日志分析)。
大模型与编程结合
使用AI辅助代码生成(如GitHub Copilot),需关注代码安全审查。
六、面试技巧(2025适用)
项目深挖
用STAR法则描述:背景(S)、任务(T)、行动(A)、结果(R)。
示例:“通过Redis集群优化,商品查询RT从200ms降至50ms”。
算法准备
LeetCode中等难度高频题:二叉树遍历、DFS/BFS、动态规划。