一、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、動態規劃。
?