1. 程式人生 > >Java面試題(一個一個來慢慢解決吧,做個記錄)

Java面試題(一個一個來慢慢解決吧,做個記錄)

 

【基礎】

官方參考答案:基礎答案

  1. Java執行緒的狀態
  2. 程序和執行緒的區別,程序間如何通訊,執行緒間如何通訊
  3. HashMap的資料結構是什麼?如何實現的。和HashTable,ConcurrentHashMap的區別
  4. Cookie和Session的區別
  5. 索引有什麼用?如何建索引?
  6. ArrayList是如何實現的,ArrayList和LinedList的區別?ArrayList如何實現擴容。
  7. equals方法實現
  8. 面向物件
  9. 執行緒狀態,BLOCKED和WAITING有什麼區別
  10. JVM如何載入位元組碼檔案
  11. JVM GC
    ,GC演算法。
  12. 什麼情況會出現Full GC,什麼情況會出現yong GC。
  13. JVM記憶體模型
  14. Java執行時資料區
  15. 事務的實現原理

 

 

【技術深度】

  1. 有沒有看過JDK原始碼,看過的類實現原理是什麼。
  2. HTTP協議
  3. TCP協議
  4. 一致性Hash演算法
  5. JVM如何載入位元組碼檔案
  6. 類載入器如何解除安裝位元組碼 
  7. IO和NIO的區別,NIO優點
  8. Java執行緒池的實現原理,keepAliveTime等引數的作用。
  9. HTTP連線池實現原理
  10. 資料庫連線池實現原理
  11. 資料庫的實現原理

 

 

【技術框架】

  1. 看過哪些開源框架的原始碼
  2. 為什麼要用Redis,Redis有哪些優缺點?Redis如何實現擴容?
  3. Netty是如何使用執行緒池的,為什麼這麼使用
  4. 為什麼要使用Spring,Spring的優缺點有哪些
  5. Spring的IOC容器初始化流程
  6. Spring的IOC容器實現原理,為什麼可以通過byName和ByType找到Bean
  7. Spring AOP實現原理
  8. 訊息中介軟體是如何實現的,技術難點有哪些

 

 

【系統架構】

  1. 如何搭建一個高可用系統
  2. 哪些設計模式可以增加系統的可擴充套件性
  3. 介紹設計模式,如模板模式,命令模式,策略模式,介面卡模式、橋接模式、裝飾模式,觀察者模式,狀態模式,訪問者模式。
  4. 抽象能力,怎麼提高研發效率。
  5. 什麼是高內聚低耦合,請舉例子如何實現
  6. 什麼情況用介面,什麼情況用訊息
  7. 如果AB兩個系統互相依賴,如何解除依賴
  8. 如何寫一篇設計文件,目錄是什麼
  9. 什麼場景應該拆分系統,什麼場景應該合併系統
  10. 系統和模組的區別,分別在什麼場景下使用

 

【分散式系統】

  1. 分散式事務,兩階段提交。
  2. 如何實現分散式鎖
  3. 如何實現分散式Session
  4. 如何保證訊息的一致性
  5. 負載均衡
  6. 正向代理(客戶端代理)和反向代理(伺服器端代理)
  7. CDN實現原理
  8. 怎麼提升系統的QPS和吞吐量

 

【實戰能力】

  1. 有沒有處理過線上問題?出現記憶體洩露,CPU利用率標高,應用無響應時如何處理的。
  2. 開發中有沒有遇到什麼技術問題?如何解決的
  3. 如果有幾十億的白名單,每天白天需要高併發查詢,晚上需要更新一次,如何設計這個功能。
  4. 新浪微博是如何實現把微博推給訂閱者
  5. Google是如何在一秒內把搜尋結果返回給使用者的。
  6. 12306網站的訂票系統如何實現,如何保證不會票不被超賣。
  7. 如何實現一個秒殺系統,保證只有幾位使用者能買到某件商品。

 

 

【軟能力】

  1. 如何學習一項新技術,比如如何學習Java的,重點學習什麼
  2. 有關注哪些新的技術
  3. 工作任務非常多非常雜時如何處理
  4. 專案出現延遲如何處理
  5. 和同事的設計思路不一樣怎麼處理
  6. 如何保證開發質量
  7. 職業規劃是什麼?短期,長期目標是什麼
  8. 團隊的規劃是什麼
  9. 能介紹下從工作到現在自己的成長在那裡