一、Java基礎
static修飾變量、方法、類的區別; final修飾變量、方法、類的區別; 內部類和靜態內部類有什麼區別; 內存溢出與內存泄漏的區別; 內存泄漏會造成什麼樣的影響; OOM的幾種常見形式和解決辦法; 如何避免內存泄漏; threadLocal會內存泄漏嗎; 類加載器的作用,寫自定義類加載器的意義是什麼; 字符串翻轉的幾種方式; ArrayList和LinkedList的區別,爲什麼會有這些區別,分別佔用的內存空間是怎麼樣的; 線程的幾種創建和啓動方式; 死鎖的發生,避免發生死鎖的幾種方式; synchronized和volatile的作用; 說一下讀寫鎖; 什麼時候用synchronized,什麼時候用ReentrantLock; 說一下CAS和AQS; 爲什麼要序列化
二、JVM
鎖的升級過程; 說一下偏向鎖、自旋鎖、輕量級鎖、重量級鎖; synchronized實現原理; Java內存模型; 內存屏障; JVM運行時數據區; 對象的內存佈局; 對象的生命週期; GC算法; CMS垃圾回收器和G1垃圾回收器的工作特點; JIT與逃逸分析(這個絕壁問得超綱了)
三、數據庫
事務隔離級別和事務併發問題; 數據庫優化[分庫分表、建表、SQL優化]; InnoDB和MyISAM引擎的區別; B+樹的結構; 查詢時用到了某個普通索引,查詢的流程是怎麼樣的[就是我們常說的回表]; 組合索引“帶頭大哥”不能死的原因[從B+樹的索引結構來說]; 期望用到某個索引時,結果沒有使用到該怎麼處理
四、緩存
緩存穿透、緩存擊穿、緩存雪崩; Redis與memcache的區別; 雙寫不一致問題;Redis分佈式鎖
五、MQ
爲什麼使用消息隊列、使用場景是什麼; 爲什麼選用XX[即各個MQ間的對比]; 消息重複消費問題; 消息的可靠性; 消息積壓問題
六、設計模式
說一下日常開發中常見的設計模式; 說一下你用過的設計模式;
七、架構
畫一下你項目的整體架構圖; springcloud/dubbo的負載均衡策略、容錯方案、使用的協議; 各個組件的選型
八、框架
基本不問