前言
前兩個月有位澳洲留學生水友跟我說準備回國啦!當時向小編詢問了國內目前的情況。
然後前兩天該水友告訴我說拿下了阿里的offer了,所以小編連忙問下了面經,最後經過同意也可以分享給大家啦!本文將以第一人稱一起感受。
背景
澳洲Top2本,科班出身,Java後端開發,無大廠實習經歷,年底畢業。
看的出來,這位同學背景挺硬的
阿里一面(50分鐘)
- 資料庫鎖隱原理。
- 1000個執行緒同時執行,怎麼防止不卡?
- 並列的並行消費問題。
- 高並行量大的話怎麼處理熱點,資料等。
- 如何獲取一個本地伺服器上可用的埠?
- 流量控制相關問題。
- 資料庫TPS是多少,是否進行測試過?
- 快取擊穿有哪些方案解決?
- Java怎麼挖取回收器相關原理?
- Java的集合都有哪些,都有什麼特點?
- 分散式鎖,redis快取,spring aop,系統架構圖,MySQL的特性。
- 談談你對HashMap的理解,底層原理的基本實現,HashMap是怎麼解決碰撞問題的?
- 開發中用了那些資料庫?回答mysql,儲存引擎有哪些?然後問了悲觀鎖和樂觀鎖問題使用場景、分散式叢集實現的原理。
- springmvc和mybatis的工作原理,有沒有看過底層原始碼?
- 熟悉IO麼?與NIO的區別,阻塞與非阻塞的區別。
- 海量資料分析。
- 場景,同時給10萬個人發工資,怎麼樣設計並行方案,能確保在1分鐘內全部發完。打個比方會提出類似的場景。
阿里二面(55分鐘)
- 執行緒安全和非執行緒安全。
- HTTP2.0、thrift。
- java反射應用。
- 分散式事務一致性。
- nio的底層實現。
- jvm基礎是必問的,jvm GC原理,JVM怎麼回收記憶體。
- API介面與SDI介面的區別。
- dubbo如何一條連結並行多個呼叫。Dubbo的原理,序列化相關問題。
- 用過哪些中介軟體?
- 做過工作流引擎沒有?
- 以前的工作經歷,自己覺得有哪些出彩的地方?
- 執行緒池的一些原理,鎖的機制升降級。
- 從系統層面考慮,分散式從哪些緯度考慮?
- Hadoop底層怎麼實現。
- threadLocal,執行緒池,hashMap/hashTable/coccurentHashMap等。
- 秒殺系統的設計。
- 虛擬機器器,IO相關知識點。
- Linux的命令。
- 一個整形陣列,給定一個數,在陣列中找出兩個數的和等於這個數,並列印出來,我寫的時間複雜度高,要求O(n)。
- n個整數,找出連續的m個數加和是最大。
阿里三面(40分鐘)
- 講講網路分層,每一層都有哪些協定(TCP/IP五層模型)
- 瀏覽器從輸入URL到頁面顯示的過程中發生了什麼,越詳細越好 (我回答解析URL,解析DNS(快取未命中的情況下需要從根域名開始遞迴查詢),建立TCP連線,http請求與答覆,Render樹的建立,頁面的渲染)
- 講講http報文的格式?請求和答覆有什麼不同
- 現在有1T的文字資料,每行表示一個關鍵詞,求出現次數最高的10個關鍵詞,限定單機只有4G記憶體。(我回答先假定記憶體足夠,則用HashMap加小根堆可解, 再解決記憶體的問題:先用hash方法把1T的文字檔案雜湊成多個足以讀入記憶體的小文字檔案,分別對每個檔案做統計,最後對每個檔案的統計結果做***計)
- 你覺得你的方案有什麼不足嗎(我回答的資料分佈可能不均勻,可對文字資料採用多次hash,直至單個資料樣本足夠小)
- 現在有一個包含上億條目的表,現實中會有大量的使用者在這個表上做基於uuid的查詢操作,如何改良這個系統的可用性(我回答對這張表的uuid用雜湊法做水平切分並建立索引,然後在使用者查詢時用同樣的雜湊演演算法導向到相應的表)
- 你說的是資料庫層面的優化,對別的層面有什麼想法嗎,比如使用者查詢存在高峰期,如何在節約伺服器資源的前提下保證對高並行的容忍度。(我回答在伺服器端建立令牌池,每隔固定時間向其中發放令牌,令牌總數有限。每個查詢在執行前必須先獲取令牌。令牌總數即為某個時刻下伺服器可承載的最大並行數,令牌發放間隔即為最大使用者增速)
總結
面試體驗好,面試官親切,問問題時會做一些引導和提示,也會告訴你哪些方面存在不足,
有一個小插曲,小編之前就提到過阿里喜歡搞突擊面試,你也不知道什麼時候會突然來電話(一面和二面的時候水友就在睡覺)。
最後把面試資料免費分享給大家,讓你也能成為下一位大佬!
資料領取:戳這裡免費領取,暗號:CSDN
愛程式設計,愛分享,聽說點贊+關注的都進大廠了哦!!!