1. 程式人生 > 其它 >原理+索引+底層+分散式+優化,先收藏了

原理+索引+底層+分散式+優化,先收藏了

原理+索引+底層+分散式+優化,先收藏了

阿里一面

  1. 講一下 HashMap 中 put 方法過程?
  2. 對 Key求Hash 值,然後再計算 下標。
  3. 如果沒有碰撞,直接放入桶中,
  4. 如果碰撞了,以連結串列的方式連結到後面,
  5. 如果連結串列長度超過閥值(TREEIFY_THRESHOLD == 8),就把連結串列轉成紅黑樹。
  6. GC 演算法,除了常見的複製演算法,標記整理,標記清除演算法,還有哪些?
  7. 增量演算法。主要思想是垃圾收集執行緒與使用者執行緒交替執行。也可以說一邊執行垃圾回收一邊執行使用者程式碼。但是這種方法會造成系統吞吐量下降。
  8. Spring 主要思想是什麼,回答 IOC 和AOP,怎麼自己實現 AOP ?
  9. 使用基於反射的動態代理
  10. SpringAOP 用的哪一種代理

阿里二面

  1. HashMap 怎樣解決衝突,講一下擴容過程,假如一個值在原陣列中,現在移動了新陣列,位置肯定改變了,那是什麼定位到在這個值新陣列中的位置,
  2. 將新節點加到連結串列後,
  3. 容量擴充為原來的兩倍,然後對每個節點重新計算雜湊值。
  4. 這個值只可能在兩個地方,一個是原下標的位置,另一種是在下標為 <原下標+原容量> 的位置。
  5. 拋開 HashMap,hash 衝突有哪些解決辦法?
  6. 10w行資料,每行一個單詞,統計出現次數出現最多的前100個。
  7. 一個文字檔案,給你一個單詞,判斷單詞是否出現。
  8. Java 訪問修飾符許可權的區別;
  9. public 所有類都可訪問
  10. protected 只允許包內、子類訪問。
  11. 預設 只允許包內訪問
  12. private 只允許類內訪問
  13. String 是否可以繼承, “+” 怎樣實現?
  14. String 是 final 類,不可繼承。

阿里三面

  1. 執行緒安全性
  2. HashMap、ConcurrentHashMap 區別。
  3. 索引計算消除了最高位的影響
  4. 預設容量: 16(若定義了初始容量(c),容量會定義為大於(c + (c >>> 1) +1) 的最小 2^n)
  5. 例如:初始容量為 13,則真正的容量是 32.
  6. 執行緒安全,併發效能較好
  7. 將M個平均長度為N的有序佇列組合成一個有序佇列
  8. 10億條簡訊,找出前一萬條重複率高的
  9. 對一萬條資料排序,你認為最好的方式是什麼
  10. 假如有100萬個玩家,需要對這100W個玩家的積分中前100名的積分,按照順序顯示在網站中,要求是實時更新的。積分可能由做的任務和獲得的金錢決定。問如何對著100萬個玩家前100名的積分進行實時更新?
  11. 1.1 支援斷點續傳。RANGE:bytes=XXX 表示要求伺服器從檔案 XXX 位元組處開始傳送
  12. 還有一些其他的改進,有興趣可以自行查閱相關資料
  13. HTTP 和 HTTPS 的主要區別
  14. 安全。HTTP 直接與 TCP 通訊,而 HTTPS 是先與 SSL(加密) 通訊,然後再由 SSL 和 TCP 通訊

面試總結及建議

每一次Java面試,其實都是一次學習機會,是對自己技術知識棧的梳理、考核、覆盤。我們應該抱著學習的態度,認真對待,找到自己比較薄弱的環節,儘快去查漏補缺學習鞏固。對於面試來說,其實也沒有太多的技巧可言,面試官主要看重的就是個人能力,無非就是兩個方面:

  • 技術廣度
  • 技術深度

最後總結我的面試經驗

2021年的金三銀四一眨眼就到了,對於很多人來說是跳槽的好機會,大廠面試遠沒有我們想的那麼困難,擺好心態,做好準備,你也可以的。

另外,面試中遇到不會的問題不妨嘗試講講自己的思路,因為有些問題不是考察我們的程式設計能力,而是邏輯思維表達能力;最後平時要進行自我分析與評價,做好職業規劃,不斷摸索,提高自己的程式設計能力和抽象思維能力。

資料領取方式:點選這裡免費獲取

BAT面試經驗

實戰系列:Spring全家桶+Redis等

其他相關的電子書:原始碼+調優

面試真題: