原理+索引+底層+分散式+優化,先收藏了
阿新 • • 發佈:2021-07-07
原理+索引+底層+分散式+優化,先收藏了
阿里一面
- 講一下 HashMap 中 put 方法過程?
- 對 Key求Hash 值,然後再計算 下標。
- 如果沒有碰撞,直接放入桶中,
- 如果碰撞了,以連結串列的方式連結到後面,
- 如果連結串列長度超過閥值(TREEIFY_THRESHOLD == 8),就把連結串列轉成紅黑樹。
- GC 演算法,除了常見的複製演算法,標記整理,標記清除演算法,還有哪些?
- 增量演算法。主要思想是垃圾收集執行緒與使用者執行緒交替執行。也可以說一邊執行垃圾回收一邊執行使用者程式碼。但是這種方法會造成系統吞吐量下降。
- Spring 主要思想是什麼,回答 IOC 和AOP,怎麼自己實現 AOP ?
- 使用基於反射的動態代理
- SpringAOP 用的哪一種代理
阿里二面
- HashMap 怎樣解決衝突,講一下擴容過程,假如一個值在原陣列中,現在移動了新陣列,位置肯定改變了,那是什麼定位到在這個值新陣列中的位置,
- 將新節點加到連結串列後,
- 容量擴充為原來的兩倍,然後對每個節點重新計算雜湊值。
- 這個值只可能在兩個地方,一個是原下標的位置,另一種是在下標為 <原下標+原容量> 的位置。
- 拋開 HashMap,hash 衝突有哪些解決辦法?
- 10w行資料,每行一個單詞,統計出現次數出現最多的前100個。
- 一個文字檔案,給你一個單詞,判斷單詞是否出現。
- Java 訪問修飾符許可權的區別;
- public 所有類都可訪問
- protected 只允許包內、子類訪問。
- 預設 只允許包內訪問
- private 只允許類內訪問
- String 是否可以繼承, “+” 怎樣實現?
- String 是 final 類,不可繼承。
阿里三面
- 執行緒安全性
- HashMap、ConcurrentHashMap 區別。
- 索引計算消除了最高位的影響
- 預設容量: 16(若定義了初始容量(c),容量會定義為大於(c + (c >>> 1) +1) 的最小 2^n)
- 例如:初始容量為 13,則真正的容量是 32.
- 執行緒安全,併發效能較好
- 將M個平均長度為N的有序佇列組合成一個有序佇列
- 10億條簡訊,找出前一萬條重複率高的
- 對一萬條資料排序,你認為最好的方式是什麼
- 假如有100萬個玩家,需要對這100W個玩家的積分中前100名的積分,按照順序顯示在網站中,要求是實時更新的。積分可能由做的任務和獲得的金錢決定。問如何對著100萬個玩家前100名的積分進行實時更新?
- 1.1 支援斷點續傳。RANGE:bytes=XXX 表示要求伺服器從檔案 XXX 位元組處開始傳送
- 還有一些其他的改進,有興趣可以自行查閱相關資料
- HTTP 和 HTTPS 的主要區別
- 安全。HTTP 直接與 TCP 通訊,而 HTTPS 是先與 SSL(加密) 通訊,然後再由 SSL 和 TCP 通訊
面試總結及建議
每一次Java面試,其實都是一次學習機會,是對自己技術知識棧的梳理、考核、覆盤。我們應該抱著學習的態度,認真對待,找到自己比較薄弱的環節,儘快去查漏補缺學習鞏固。對於面試來說,其實也沒有太多的技巧可言,面試官主要看重的就是個人能力,無非就是兩個方面:
- 技術廣度
- 技術深度
最後總結我的面試經驗
2021年的金三銀四一眨眼就到了,對於很多人來說是跳槽的好機會,大廠面試遠沒有我們想的那麼困難,擺好心態,做好準備,你也可以的。
另外,面試中遇到不會的問題不妨嘗試講講自己的思路,因為有些問題不是考察我們的程式設計能力,而是邏輯思維表達能力;最後平時要進行自我分析與評價,做好職業規劃,不斷摸索,提高自己的程式設計能力和抽象思維能力。
資料領取方式:點選這裡免費獲取
BAT面試經驗
實戰系列:Spring全家桶+Redis等
其他相關的電子書:原始碼+調優
面試真題: