大廠面經(jīng):三非背景,6 輪面試,終獲阿里 Offer!

本人三非背景(非985 / 非211 / 非理工科) ,工作 5 年時間,待了三家公司,去阿里一直是我的夢想。
01 第一輪技術(shù)面:阿里P6面試官
a、我分別把之前工作中遇到的堆空間、元空間、堆外內(nèi)存 OOM 場景都講了一遍
b、按照如何分析、如何排查、如何解決、事后如何防范這個思路進(jìn)行
a、業(yè)務(wù)線程池相互隔離
b、根據(jù)CPU核數(shù)、線程池任務(wù)的 IO 耗時/計算耗時,設(shè)置合理的核心線程數(shù),提升性能
c、動態(tài)修改線程池參數(shù),方便維護
d、重寫拒絕策略,保證任務(wù)不丟
e、聊了一下線程池源碼里的一些細(xì)節(jié)
3、能講下你對 MySQL MVCC 的理解嗎?
我分別講了一下 RR 和 RC 隔離級別的實現(xiàn)原理有哪些不同
a、分別從性能和實現(xiàn)上講了數(shù)組、鏈表、Hash、二叉樹、BTree 為什么不合適
b、詳細(xì)講了 B+ Tree 的實現(xiàn),以及普通索引是如何查找數(shù)據(jù)的
c、中間提到了節(jié)點大小、IO、回表、覆蓋索引等概念
a、講了分布式鎖原理
b、講了 Redis String 的底層實現(xiàn)
c、講了 Redis ZSet 的實現(xiàn),詳細(xì)講了跳表結(jié)合 Hash 是如何提升效率的
a、Producer 端:上游發(fā)消息速度過快,可以減少消息的發(fā)送頻率
b、Consumer端:下游消費不過來,可以擴容來提高消費速度
c、Broker 端:內(nèi)存是否夠大?如果 Page Cache 夠大的話,可以提高 Consumer 拉消息的性能
一面小結(jié):
當(dāng)我答完第一個 JVM 問題時,面試官就說這輪我過了,說我這塊研究很深入。
所以,我覺得面試技巧很重要。面試前我就考慮到了如何展現(xiàn)自己的優(yōu)勢,在自我介紹時就會把自己擅長的部分說出來。
另外,一般一面考察的點有:JVM、JDK 并發(fā)包/集合類、Redis、MySQL、MQ、RPC。
02 第二輪技術(shù)面:阿里P7面試官
后來私底下問一面面試官,他說因為一面已經(jīng)全方面考察技術(shù)了,所以認(rèn)為我技術(shù)方面是 OK 的,就不會作為主要的考察方向。
a、用 Redis 做的分布式限流
b、滑動窗口/漏斗/令牌桶,三種限流算法對比
c、解釋了下為什么沒有用其他限流組件
a、CDN:靜態(tài)數(shù)據(jù)緩存
b、緩存:上層抗住流量
c、限流:防止應(yīng)用掛掉
d、答題驗證碼:削峰
e、MQ:異步/削峰/解耦
f、風(fēng)控、接口冪等:防刷
g、分庫分表:減輕 DB 壓力
3、如果 Redis 掛了一臺怎么辦?
4、如果 RocketMQ 掛了怎么辦?
5、RocketMQ 重復(fù)消費了怎么辦?
6、RocketMQ 為什么會重復(fù)消費?講下 RocketMQ 造成重復(fù)消費的底層實現(xiàn)原理?
7、MQ 會丟消息嗎?如何保證不丟?
8、問了很多業(yè)務(wù)方面的細(xì)節(jié)
9、在阿里伯樂系統(tǒng),手寫算法題
10、問了下面試官具體的工作內(nèi)容和團隊氛圍
項目以及業(yè)務(wù)都會深入考察,這塊一定要好好準(zhǔn)備,一面過的人很多,二面掛的人很多。
二面一般都是入職后帶你的師兄,如果你業(yè)務(wù)不精通技術(shù)好也不一定能過,因為終究還是要干活的。
03 第三輪技術(shù)面:阿里P8面試官
1、講下在團隊里的角色
2、講下之前的經(jīng)歷
3、講下近期做的比較核心的工作(二面項目有關(guān)的東西又講了一遍)
4、講下有哪些做得好和做得不好的地方?
5、如果流量放大 10倍,100倍怎么辦?
6、分庫分表怎么做的,講下數(shù)據(jù)遷移方案
7、講一下你做的 JVM 調(diào)優(yōu)
8、聊一下 Redis 性能問題
9、面試官講了一下團隊的業(yè)務(wù)情況,以及進(jìn)去后可能要做的具體工作
還是以項目為主,但問題會更深入。上面大部分問題,我都花了很多心思總結(jié),匯總到了自己的筆記里,而且面試前反復(fù)看過很多次,從而保證我在面試過程中能夠講清楚細(xì)節(jié)。
04 第四輪交叉面:阿里P8面試官
我也不知道為什么會有這一輪,問的問題跟 2 面、3 面差不多,這里就不展開了。
05 第五輪技術(shù)面:阿里P9面試官
1、介紹工作經(jīng)歷
2、介紹項目以及項目里的角色
3、講下項目中遇到的困難是如何解決的
4、一道實際需求的設(shè)計題:高并發(fā)場景,當(dāng)用戶下單(20元)時,會提示用戶花 10 元買一個會員,同時送 4 張 6 元的優(yōu)惠券,本次就可以使用。該接口如何實現(xiàn)?需要考慮各方失敗的情況
最后一道設(shè)計題,我和面試官討論了將近 30 分鐘,主要考查高并發(fā)場景下的設(shè)計能力。
面試官會關(guān)注:設(shè)計方案的合理性以及完整性,如果某個環(huán)節(jié)出問題了怎么保證高可用?會不會有丟數(shù)據(jù)的風(fēng)險?數(shù)據(jù)一致性怎么保障?如果流量很大性能如何保證?
主要考察設(shè)計能力以及對項目的整體把握,不但宏觀層面要做好架構(gòu)設(shè)計,細(xì)節(jié)上的實現(xiàn)也會死摳到底。
不論是技術(shù)的深度和廣度,甚至臨場分析問題、解決問題的能力都有考察,這些都需要平時的技術(shù)積累。
06 第六輪HR面
1、介紹履歷背景
2、介紹工作內(nèi)容以及承擔(dān)的角色
3、談?wù)勴椖坷锏母卟l(fā)場景怎么解決的
4、推進(jìn)項目的過程中遇到了問題怎么辦
5、同事怎么評價你
主要考察的是思考能力和思維方式、溝通、協(xié)作、配合團隊、做事結(jié)果導(dǎo)向等能力。另外,阿里 HR 也是會問技術(shù)問題的。
個人感悟
1、基礎(chǔ)一定要扎實
基礎(chǔ)不牢地動山搖,這一年的準(zhǔn)備,基礎(chǔ)知識通過查漏補缺提升了很多。但也發(fā)現(xiàn)了諸多不足,未來還需繼續(xù)積累。
開發(fā)這行內(nèi)卷太嚴(yán)重了,年輕的時候一定要養(yǎng)成學(xué)習(xí)的習(xí)慣。如果在小公司做的是沒挑戰(zhàn)的事情,還忙得沒時間學(xué)習(xí),建議趁早換一份能帶來成長的工作。
做事情一定要定一個目標(biāo),只要你信念夠強,它就會一直指引著你前進(jìn)。
不然經(jīng)歷過一天疲憊的工作后,下班再繼續(xù)學(xué)習(xí)這件事是堅持不下來的。
兩個月啃下一個主流技術(shù)棧,1 年下來差不多也能啃完 6 塊硬骨頭,這將是你未來面試的兵器庫,十八般武藝不說樣樣精通,隨便挑幾個跟面試官撈一個小時應(yīng)該不在話下!
我一直把進(jìn)阿里當(dāng)做自己的夢想,這五年來一步一個腳印,中間不曾有過任何一次放棄。
剛畢業(yè)那會,被無數(shù)家公司拒絕過,但這并沒有勸退我,感謝當(dāng)時鼓勵我的同學(xué)。
工作幾年后,也被資深同事嘲諷我不知天高地厚,但這并沒有勸退我,感謝當(dāng)時勸我用最高標(biāo)準(zhǔn)要求自己、并相信自己的網(wǎng)友。
在不斷提升自己技術(shù)深度的過程中,各種深不可測的源碼、框架讓我抓狂,但這也沒有勸退我,感謝每個指點過我的老師。
------ END ------
大家好,我是武哥,前亞馬遜工程師,現(xiàn)大廠技術(shù)總監(jiān),持續(xù)分享個人的成長收獲,關(guān)注我一定能提升你的視野,讓我們一起進(jìn)階吧!
