天天看點

java發送郵件附件名亂碼,想搞清楚ZooKeepe

阿裡一面

  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面試,其實都是一次學習機會,是對自己技術知識棧的梳理、考核、複盤。我們應該抱着學習的态度,認真對待,找到自己比較薄弱的環節,盡快去查漏補缺學習鞏固。對于面試來說,其實也沒有太多的技巧可言,面試官主要看重的就是個人能力,無非就是兩個方面:

  • 技術廣度
  • 技術深度

總結

在這裡,由于面試中MySQL問的比較多,是以也就在此以MySQL為例為大家總結分享。但是你要學習的往往不止這一點,還有一些主流架構的使用,Spring源碼的學習,Mybatis源碼的學習等等都是需要掌握的,我也把這些知識點都整理起來了

java發送郵件附件名亂碼,想搞清楚ZooKeepe
java發送郵件附件名亂碼,想搞清楚ZooKeepe