2年Java開發面試被問及的問題

一、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的負載均衡策略、容錯方案、使用的協議;    各個組件的選型

 

八、框架

    基本不問

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章