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