面經彙總--校招--金山辦公

參考鏈接:https://www.nowcoder.com/experience/639

用於彙總Java後端各個校招、社招、實習面經,附自己答案

csdn csdn csdn csdn csdn


🔥1. 一面

image-20221122192154451

image-20221122192215094

  1. ConcurrentHashMap原理:JDK1.8之後是volatile定義的Node數組 + 鏈表 + 紅黑樹,對數組頭結點加鎖來保證線程安全。具體put加鎖過程是採用synchronized + cas自旋實現,而get是voaltile,就可以直接讀
  2. CopyOnWriteArrayList原理:適合讀多寫少場景,內部添加,複製都是對底層賦值的操作實現,由於list,set非線程安全,所以內部修改數據加了reentranlock鎖
  3. synchronized做的優化手段有哪些
    1. 鎖升級、鎖粗化、鎖消除
  4. JVM垃圾回收器: Parallel Scavenge + Parallel old。但是網上說的比較多的都是CMS + G1,後面得學下。
  5. 身份證號用主鍵索引是否合適呢: 肯定是不合適,因爲主鍵索引在B+數中使用遞增id最好,而且身份證不一定都是數字,而且太長的主鍵索引查詢也會影響效率
  6. TCP連接已經建立了,但是客戶端故障了,會怎麼樣
    1. TCP會開啓keep-alive,若長期未收到相應就主動關閉連接
    2. 若服務器崩潰,會發送RST包讓客戶端關閉鏈接
  7. 計算機的交換空間瞭解嗎:內存不夠用,到輔存中置換空間
  8. Spring的自動注入底層調用了什麼方法:set注入,有@Autowired,@resource,@inject這幾種註解
  9. IOC如何實現的:控制反轉,使用工廠模式和反射機制實現對象創建由spring創建
  10. 數據庫有上百億條數據,要輸出到一個文本文件中,談談有哪些值得思考的地方:
    1. 使用多線程異步讀取數據庫百億數據,控制線程數,避免內存OOM
    2. 使用buffer緩存流操作文件的IO
    3. 多線程異步輸出到各個文件後,最後做文件合併
  11. 假設說我寫一半,服務掛掉了,重啓之後我肯定不想重頭開始,而是繼續讀取,怎麼處理
    1. 斷點續傳:randomAccessFile,每次往裏面輸入數據都先讀取文件長度

🔥2.二面

1. 操作系統`32`位和`64`位有什麼區別
 	1. 核心區別:cpu處理器一次能處理數據的最大位數
 	2. 64位可以兼容32,反之卻不行

二面其餘問題都是一些實際項目業務的了

image-20221122192230651

🔥2.HR面

​ HR面都是問的自我評價和一些學習路線之類的了

image-20221122192237934

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