縱觀目前的Java面試套路,無非能夠分爲這麼幾個部分,Java基礎
、主流框架
、分佈式相關
、數據庫
等。面試
最喜歡問的無非是HashMap,HashMap常問的無非也就是數據庫
線程安全相關,爲啥線程不安全?安全
怎麼擴容的?JDK1.7和1.8的實現有啥區別?併發
引出ConcurrentHashMap
的實現原理,分段鎖怎麼作的框架
接着就是JUC相關的了,根據併發下的三類問題原子性
、可見性
、有序性
引出synchronized
、volatile
、CAS
、線程池等相關問題
。問到CAS
,通常又會問一下他存在什麼問題,好比ABA問題,相關的解決方案等。分佈式
細心的你會發現,其實範圍並不大,來來去去就是這些題目,可是你發現沒,你卻老是答很差,仍是那句話,真的不是時間問題,就像女生說的「哪有什麼直不直男,只有用不用心罷了!」線程
框架範圍就很大了,通常也會挑你熟悉的框架問,好比最常問的就是Spring了,由於這個基本是標配了。Spring最常問的無非就是IoC
、AOP
、Bean相關的一些東西,好比生命週期,循環依賴解決等。code
固然除了Spring,建議你還要準備一兩個本身熟悉的框架。索引
常見的一些分佈式解決方案,好比分佈式事務
、分佈式協調
等,會根據你相關使用Dubbo、Spring Cloud問一些相關源碼,好比問爛了的,註冊中心掛了,服務之間還能不能通訊啊這類問題。生命週期
固然也還有冪等性,MQ怎麼不丟消息,順序消息等問題。
數據庫最常問的無非就是鎖
(表鎖和行鎖),索引
(索引分類,何時用索引,大家項目是怎麼用索引的啊)等
數據庫的套路比前面那些都要窄一些,固然若是面試官對數據庫特別熟,還會各類深挖下去。