大廠面經:三非背景、6輪面試,終獲阿里Offer!

daxuesheng發表於2021-09-09

這是一個勵志讀者在收穫阿里 Offer 後的覆盤,他積極準備了 1 年時間,夢想總算照進現實,希望這份面經總結能給你帶來幫助和啟發。

大家好!本人網名:茶杯,三非背景(非985 / 非211 / 非理工科) ,工作 5 年時間,待了三家公司,去阿里一直是我的夢想。

為了能進阿里,我給自己制定了非常詳細的學習計劃:Java Core、JVM、網路、Spring 原始碼、MySQL、Redis、MQ、Netty,整整準備了 1 年時間。

在面了幾家還算知名的大廠後,我總結了一波面試套路,就開始了阿里的面試之旅。 最終 , 歷經 6 輪面試,順利拿到了 阿里的 offe r , 也算是圓夢了。

一 路走來, 要 感謝的人太多。 下面, 我 對整個 面試過程做一次覆盤 ,希望給大家一些 啟發。

01 第一輪技術面:阿里P6面試官
1、看你簡歷中提到處理過多次 JVM 故障,可以講講你遇到過哪些 OOM 的案例麼?

a、我分別把之前工作中遇到的堆空間、元空間、堆外記憶體 OOM 場景都講了一遍

b、按照如何分析、如何排查、如何解決、事後如何防範這個思路進行

2、看你簡歷寫做了執行緒池調優,能講下執行緒池的原理以及做了哪些最佳化嗎?

a、業務執行緒池相互隔離

b、根據CPU核數、執行緒池任務的 IO 耗時/計算耗時,設定合理的核心執行緒數,提升效能

c、動態修改執行緒池引數,方便維護

d、重寫拒絕策略,保證任務不丟

e、聊了一下執行緒池原始碼裡的一些細節

3、能講下你對 MySQL MVCC 的理解嗎?

我分別講了一下 RR 和 RC 隔離級別的實現原理有哪些不同

4、MySQL 索引是怎麼實現的?

a、分別從效能和實現上講了陣列、連結串列、Hash、二叉樹、BTree 為什麼不合適

b、詳細講了 B+ Tree 的實現,以及普通索引是如何查詢資料的

c、中間提到了節點大小、IO、回表、覆蓋索引等概念

5、講講 Redis 是怎麼用的?

a、講了分散式鎖原理

b、講了 Redis String 的底層實現

c、講了 Redis ZSet 的實現,詳細講了跳錶結合 Hash 是如何提升效率的

6、RecketMQ 的訊息堆積如何解決?

a、Producer 端:上游發訊息速度過快,可以減少訊息的傳送頻率

b、Consumer端:下游消費不過來,可以擴容來提高消費速度

c、Broker 端:記憶體是否夠大?如果 Page Cache 夠大的話,可以提高 Consumer 拉訊息的效能

一面小結:

當我答完第一個 JVM 問題時,面試官就說這輪我過了,說我這塊研究很深入。

所以,我覺得面試技巧很重要。面試前我就考慮到了如何展現自己的優勢,在自我介紹時就會把自己擅長的部分說出來。

另外,一般一面考察的點有:JVM、JDK 併發包/集合類、Redis、MySQL、MQ、RPC。

02 第二輪技術面:阿里P7面試官
阿里二面問的技術問題並不是很多,更多的是問業務場景和解決方案。

後來私底下問一面面試官,他說因為一面已經全方面考察技術了,所以認為我技術方面是 OK 的,就不會作為主要的考察方向。

1、講下專案裡的限流策略怎麼做的?

a、用 Redis 做的分散式限流

b、滑動視窗/漏斗/令牌桶,三種限流演算法對比

c、解釋了下為什麼沒有用其他限流元件

2、講下簡歷中的秒殺專案怎麼做的?

a、CDN:靜態資料快取

b、快取:上層抗住流量

c、限流:防止應用掛掉

d、答題驗證碼:削峰

e、MQ:非同步/削峰/解耦

f、風控、介面冪等:防刷

g、分庫分表:減輕 DB 壓力

3、如果 Redis 掛了一臺怎麼辦?

4、如果 RocketMQ 掛了怎麼辦?

5、RocketMQ 重複消費了怎麼辦?

6、RocketMQ 為什麼會重複消費?講下 RocketMQ 造成重複消費的底層實現原理?

7、MQ 會丟訊息嗎?如何保證不丟?

8、問了很多業務方面的細節

9、在阿里伯樂系統,手寫演算法題

10、問了下面試官具體的工作內容和團隊氛圍

二面小結:

專案以及業務都會深入考察,這塊一定要好好準備,一面過的人很多,二面掛的人很多。

二面一般都是入職後帶你的師兄,如果你業務不精通技術好也不一定能過,因為終究還是要幹活的。

03 第三輪技術面:阿里P8面試官
主管面考察的範圍就更廣了:

1、講下在團隊裡的角色

2、講下之前的經歷

3、講下近期做的比較核心的工作(二面專案有關的東西又講了一遍)

4、講下有哪些做得好和做得不好的地方?

5、如果流量放大 10倍,100倍怎麼辦?

6、分庫分表怎麼做的,講下資料遷移方案

7、講一下你做的 JVM 調優

8、聊一下 Redis 效能問題

9、面試官講了一下團隊的業務情況,以及進去後可能要做的具體工作

三面小結:

還是以專案為主,但問題會更深入。上面大部分問題,我都花了很多心思總結,彙總到了自己的筆記裡,而且面試前反覆看過很多次,從而保證我在面試過程中能夠講清楚細節。

04 第四輪交叉面:阿里P8面試官
主管級別的交叉面,也是一個 P8 面試官。

我也不知道為什麼會有這一輪,問的問題跟 2 面、3 面差不多,這裡就不展開了。

05 第五輪技術面:阿里P9面試官
1、介紹工作經歷

2、介紹專案以及專案裡的角色

3、講下專案中遇到的困難是如何解決的

4、一道實際需求的設計題:高併發場景,當使用者下單(20元)時,會提示使用者花 10 元買一個會員,同時送 4 張 6 元的優惠券,本次就可以使用。該介面如何實現?需要考慮各方失敗的情況

最後一道設計題,我和麵試官討論了將近 30 分鐘,主要考查高併發場景下的設計能力。

面試官會關注:設計方案的合理性以及完整性,如果某個環節出問題了怎麼保證高可用?會不會有丟資料的風險?資料一致性怎麼保障?如果流量很大效能如何保證?

五面小結:

主要考察設計能力以及對專案的整體把握,不但宏觀層面要做好架構設計,細節上的實現也會死摳到底。

不論是技術的深度和廣度,甚至臨場分析問題、解決問題的能力都有考察,這些都需要平時的技術積累。

06 第六輪HR面
1、介紹履歷背景

2、介紹工作內容以及承擔的角色

3、談談專案裡的高併發場景怎麼解決的

4、推進專案的過程中遇到了問題怎麼辦

5、同事怎麼評價你

六面小結:

主要考察的是思考能力和思維方式、溝通、協作、配合團隊、做事結果導向等能力。另外,阿里 HR 也是會問技術問題的。

個人感悟
1、基礎一定要紮實

基礎不牢地動山搖,這一年的準備,基礎知識透過查漏補缺提升了很多。但也發現了諸多不足,未來還需繼續積累。

2、養成良好的習慣,堅持學習

開發這行內卷太嚴重了,年輕的時候一定要養成學習的習慣。如果在小公司做的是沒挑戰的事情,還忙得沒時間學習,建議趁早換一份能帶來成長的工作。

3、給自己定一個目標

做事情一定要定一個目標,只要你信念夠強,它就會一直指引著你前進。

不然經歷過一天疲憊的工作後,下班再繼續學習這件事是堅持不下來的。

4、給自己制定詳細的學習計劃

兩個月啃下一個主流技術棧,1 年下來差不多也能啃完 6 塊硬骨頭,這將是你未來面試的兵器庫,十八般武藝不說樣樣精通,隨便挑幾個跟面試官撈一個小時應該不在話下!

5、夢想並非遙不可及

我一直把進阿里當做自己的夢想,這五年來一步一個腳印,中間不曾有過任何一次放棄。

剛畢業那會,被無數家公司拒絕過,但這並沒有勸退我,感謝當時鼓勵我的同學。

工作幾年後,也被資深同事嘲諷我不知天高地厚,但這並沒有勸退我,感謝當時勸我用最高標準要求自己、並相信自己的網友。

在不斷提升自己技術深度的過程中,各種深不可測的原始碼、框架讓我抓狂,但這也沒有勸退我,感謝每個指點過我的老師。

最後,感謝一路走來所有幫助過我的朋友們!祝大家都有一個美好的未來!

作者: 武哥漫談IT
原文出處:https://www.cnblogs.com/luojunwu/p/14700079.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4692/viewspace-2807231/,如需轉載,請註明出處,否則將追究法律責任。

相關文章