朋友面試阿里雲慘遭滑鐵盧。幸獲華為內推機會,四面喜提offer。

JavaBUGa發表於2020-10-24

上個月,哥們從某小廠離職,轉投阿里雲,簡歷優秀,很順利地拿到了面試通知,但之後的進展卻讓哥們懷疑人生了,或者說讓哥們懵逼的是,面試阿里雲居然第一面就被吊打?讓哥們開始懷疑自己,是不是這些年工作下來,自己沒有一丁點的進步呢?

幸運的是,經過他朋友推薦,去面試了華為,面試華為的過程極為順利,很快就拿到了offer。這讓哥們更弄不懂了,4面拿華為offer的水平,面試阿里雲居然一面就被吊打?

索性,哥們想分享一下這次的面試經歷,讓各位老鐵好好幫他參考參考,出一出主意!

另外,我下文還整理了一些哥們的複習資料,有需要的朋友轉發並關注,新增我的VX(tkzl6666)即可獲得免費領取方式!

阿里雲一面涼經(一面竟然就問了一個半小時,什麼情況?)

這次一面感覺是在打心理戰,哥們自己的心裡防線基本是被擊潰,面到懷疑人生的程度,所以過程感覺不是太好,很多題哥們自己也感覺沒答好,要麼答得“缺胳膊少腿”,要麼就是“畫蛇添足”。

  1. 先是聊專案,從專案的架構設計到部署流程。
  2. Java容器有哪些?哪些是同步容器,哪些是併發容器?
  3. ArrayList和LinkedList的插入和訪問的時間複雜度?
  4. Java反射原理, 註解原理?
  5. 新生代分為幾個區?使用什麼演算法進行垃圾回收?為什麼使用這個演算法?
  6. HashMap在什麼情況下會擴容,或者有哪些操作會導致擴容?
  7. HashMap push方法的執行過程?
  8. HashMap檢測到hash衝突後,將元素插入在連結串列的末尾還是開頭?
  9. 1.8還採用了紅黑樹,講講紅黑樹的特性,為什麼人家一定要用紅黑樹而不是AVL、B樹之類的?
  10. https和http區別,有沒有用過其他安全傳輸手段?
  11. 執行緒池的工作原理,幾個重要引數,然後給了具體幾個引數分析執行緒池會怎麼做,最後問阻塞佇列的作用是什麼?
  12. Linux怎麼檢視系統負載情況?
  13. 請詳細描述springmvc處理請求全流程?
  14. 講一講AtomicInteger,為什麼要用CAS而不是synchronized?
  15. 查詢中哪些情況不會使用索引?
  16. 資料庫索引,底層是怎樣實現的,為什麼要用B樹索引?
  17. Mysql主從同步的實現原理?
  18. MySQL是怎麼用B+樹?
  19. 談談資料庫樂觀鎖與悲觀鎖?
  20. 有使用過哪些NoSQL資料庫?MongoDB和Redis適用哪些場景?
  21. 描述分散式事務之TCC服務設計?
  22. Redis和memcache有什麼區別?Redis為什麼比memcache有優勢?
  23. 考慮redis的時候,有沒有考慮容量?大概資料量會有多少?
  24. 談談分散式鎖、以及分散式全域性唯一ID的實現比較?
  25. 叢集監控的時候,重點需要關注哪些技術指標?這些指標如何優化?
  26. 從千萬的資料到億級的資料,會面臨哪些技術挑戰?你的技術解決思路?
  27. 最近兩年遇到的最大的挫折,從挫折中學到了什麼?
  28. 最近有沒有學習過新技術?

華為四面:3輪技術面+HR面(華為真經,值得參考)

華為面試過程很順,一面問得比較基礎,所以哥們整個人都還挺自信的一個狀態,面試官也全程是一個比較“和藹”的問題方式,所以比較輕鬆,因此面試得順利,拿offer也快。以下是哥們華為4面的技術題,不包括HR面。

華為技術一面:

  1. 簡單說一下物件導向的特徵以及六大原則
  2. 談談final、finally、finalize的區別
  3. Java中==、equals與hashCode的區別和聯絡
  4. 談談Java容器ArrayList、LinkedList、HashMap、HashSet的理解,以及應用場景
  5. 談談執行緒的基本狀態,其中的wait() sleep() yield()方法的區別。
  6. JVM效能調優的監控工具瞭解那些?
  7. 簡單談談JVM記憶體模型,以及volatile關鍵字
  8. 垃圾收集器與記憶體分配策略
  9. 垃圾收集演算法
  10. MySQL幾種常用的儲存引擎區別
  11. 資料庫的隔離級別
  12. 5億整數的大檔案,怎麼排?

華為技術二面:

  1. Java記憶體模型
  2. full gc怎麼觸發?
  3. gc演算法
  4. JVM回收策略
  5. ClassLoader原理和應用
  6. 高吞吐量的話用哪種gc演算法
  7. ConcurrentHashMap和HashMap
  8. volatile的底層如何實現,怎麼就能保住可見性了?
  9. 有參與過開源的專案嗎?
  10. 執行緒池原理,拒絕策略,核心執行緒數
  11. 1億個手機號碼,判斷重複
  12. 執行緒之間的互動方式有哪些?有沒有執行緒互動的封裝類 (join)?

華為技術三面:

  1. 兩次點選,怎麼防止重複下訂單?
  2. 資料庫表設計,索引
  3. Redis的快取淘汰策略、更新策略
  4. dubbo、netty、RPC介紹原理
  5. 限流演算法
  6. zk掛了怎麼辦?
  7. 分散式鎖的實現方式,zk實現和Redis實現的比較
  8. 秒殺場景設計,應付突然的爆發流量
  9. 分散式資料一致性
  10. 一致性雜湊
  11. 訊息佇列原理介紹
  12. 註解的原理
  13. 資料庫原理,資料庫中介軟體,索引優化
  14. ioc原理、aop原理和應用
  15. 大資料相關,MapReduce
  16. Docker的原理

大廠面試題答案

 

 

 

實際上,哥們並不是一個幸運的人,而是一個努力的人,今天的這些,也全是靠哥們的努力得來的,儘管阿里雲一面就涼,但能進入華為,也算是哥們多年的累積,以下是哥們分享的個人的一個學習方法和經驗總結。

學習方法及經驗總結

以下所展示的全部資料,均可以免費分享 轉發+關注,然後新增我的VX(tkzl6666)即可免費獲取。

(1)多刷題

自己多刷一些面試題是非常重要的,即使是在自己不需要面試的情況下,也要經常瞭解現在的大廠小廠面試都會問一些什麼?現在比較流行的技術是什麼等等諸如此類。那麼哥們是如何刷題的呢?刷題主要分為Java技術以及演算法兩大類,蒐集了目前比較新的一些題冊,包括【Java核心知識】以及【演算法刷題】,如演算法方面就有LeetCode。

Java 面試必備核心知識點:

 

演算法刷題LeetCode:

 

(2)多看看技術牛的實戰書

實際上很多人目前的一個狀態是缺乏實戰經驗,或者說是不知道該如何上手實戰。那麼,看一些技術比較過硬的大牛寫的實戰書籍對自己是很有好處的,多少能夠學習到一些實戰經驗。目前我手上整理到的實戰書籍也算是比較全面,包括Spring全家桶、JVM、併發程式設計技術、Redis相關、MySQL調優、Tomcat、ZooKeeper等高階技術。

 

 

(3)多交流,多思考

最後要強調的重點就是——多交流,多思考。現在很多程式設計師陷入一個怪圈,整天只會在辦公室裡機械的工作,實際上程式設計師要想有很大很明顯的進步,交流是少不了的。那麼怎麼結識比自己厲害的技術牛呢?實際上渠道有很多,哥們個人的做法是:①看一些技術直播,在直播間交友;②加一些技術性的交流群,多交流問題;③參加一些線下活動,如面基、研討會等等。

寫在最後

學習如攀登,雖然有身心的疲憊,但更有沿途的優美風光,更無論登頂之後的極目遠眺。之後,你總會感嘆曾經的付出是值得的。

以上所展示的面試題也好、學習資料也罷,均可以免費分享給大家

相關文章