對於很多沒有學歷優勢的人來說,面試大廠是非常困難的,這對我而言,也是一樣,出身於二本,原本以為就三點一線的生活度過一生,直到生活上的變故,才讓我有了新的想法和目標,因此我這個二本渣渣也奮斗了起來,竟拿下了阿里P6崗。今天分享這波面經,主要是希望能夠激勵到同樣被學歷所困擾的技術人,能夠對職業生涯和技術規划有一個參考價值,感謝!
一、面試阿里P6難在哪?(面試難點)
(1)難在“心態”
首先需要克服的第一關,實際上就是自己的心態。因為我是二本出身,base比較低,所以面試阿里本就是一件沒太大底氣的事情,更何況是高級開發崗,所以心里就更容易沒底。因此,在准備面試之前,調整心態這件事情就做了很久,所以難在“心態”一點也沒錯,心態沒調整好,面試幾乎是沒戲的。
(2)難在“要求”
其次就是要求,所謂的要求實際上就是阿里對崗位的任職要求,也就是作為開發人員,你掌握了多少技術棧?
首先,你簡歷上寫的肯定要會,其次就是你要擁有一些亮點,也就是說對某個技術有深入的了解,這樣才能給面試官耳目一新的感覺。
那么,面試阿里P6崗,需要掌握多少呢?
- Java集合:HashMap和ConcurrentHashMap,平時最好有讀一些源碼,最好知道每個參數為什么設置成這么大?有什么好處?
- JUC包肯定要學,即使平時的編程根本不用,也必須得會。至少要知道aba,cas,aqs,unsafe,volatile,sync,以及常見的各種lock,死鎖,線程池參數等,也必須要明白自旋,阻塞,死鎖和它如何去定位,oom如何定位問題,cpu過高如何定位等基本的操作,你可以沒有生產調試經驗,但不代表你可以不會top,jps,jstack,jmap這些可能會問的東西。以及可能衍生的jmm模型和mesi協議等。
- 大廠必問JVM:垃圾回收算法,垃圾收集器、JVM內存模型,每個區域用途,各種oom的種類,jvm調優經驗,類加載過程,雙親委派等。
- Spring就得抽空看源碼了,一般會問到bean的生命周期,如何解決循環依賴,實現事務原理,動態代理原理等。
- Dubbo也是必須問的,設計框架,負載均衡。
- Redis更要多懂一點,單線程模型,aof,rdb,rewrite,主從,cluster,哪些類型?包含一些緩存常見的問題擊穿、穿透、雪崩、數據一致性等。
- Mysql,事務,鎖,索引,b+樹,主從這些你必須會
- Mq ,我用的rocketmq,你得知道為什么用,重復消費,順序消息,事務消息,高可用,消息丟失,擠壓場景,整個消息發送消費的流程,讀過源碼更佳,更好吹
- Netty的話,零拷貝,bio,nio,aio,架構設計怎么樣子的?用過看過更好
- 算法,建議去刷題,我運氣好,簡單的算法讓我碰到了,一些快排,堆排,二叉樹相關的,鏈表反轉,成環,環節點,跳樓梯等常規的簡單算法建議刷刷,雙指針,dp,遞歸這些還是多找找感覺,大數據內存有限的場景的統計,有時間一些middle可以去試試,手寫紅黑樹你要是可以,那我估計算法你穩了。
- 網絡,http,tcp,https,udp,7層網絡協議等,最好結合自己理解,背,你都要背下來。
- 還有就是一些分布式事務實現,架構實現,比如搶紅包,高並發下單等常規的場景設計,你來設計,你怎么去設計?多找一些大牛或者上網自己查,幫你看看有哪些漏洞,有那些解決方案?業界有哪些好的中間件?

二、阿里面試題(共5面)
阿里一面:
- 自我介紹、自己做的項目和技術領域
- 說一下sync的底層實現,鎖優化,和lock的對比
- 講一下JVM參數調優詳細過程
- 為什么這么設置?好處是什么?描述gc場景,如何去分析gc日志?
- redis數據結構,使用場景,微博場景使用redis如何去設計用戶關系?
- 線程池參數設定,為什么這么設定,作用?7大參數
- spring的循環依賴如何解決?為什么要三級緩存?
- 優先級隊列的底層原理?
阿里二面:
- 自我介紹一下吧
- 聊項目
- 結合你項目問你如何設計,提出漏洞,你怎么解決?如何改進,萬一掛了?加一台機器有沒有問題?如果我非要不出問題怎么辦?
- 高並發下單扣庫存場景如何設計
- rocketMQ架構設計原理
- Dubbo框架實現原理
- 最近讀了什么書?平時怎么學習?
- 常用的負載均衡,該怎么用,你能說下嗎?
阿里三面:
- 這一面主要問項目,給你的壓力感比較強
- 結合項目問,為什么這么設計?讓你去優化,你怎么優化,引導你用一個合理的更好的方式去優化,數據庫的設計等
- 在公司做了什么事情,各個系統業務線都是做什么的,你的績效,手寫算法鏈表反轉?
阿里四面:
- JVM的主要組成部分及其作用?
- JVM運行時數據區包含哪些?
- JVM垃圾回收機制,何時觸發MinorGC等操作
- JVM的垃圾回收算法:
- JVM 調優的工具?
- 常用的JVM調優參數?
- 堆棧的區別?
- 詳細介紹一下 CMS 垃圾回收器?
- 怎么判斷對象是否可以被回收?
- 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么區別?
- java類加載過程?
- 把你知道的中間件都說一下吧(瞬間懵了一下)
HR面:
- 為什么來阿里?
- 之前沒考慮過阿里嗎?
- 畢業這么久了,你覺得自己最大的改變是什么?
- 用一句話總結一下自己
注:由於文章篇幅有限,面試題的答案的詳細版整理在文檔里,需要的直接(點擊我)免費領取~

三、拿下阿里P6崗offer前,我做了些什么?
(1)准備簡歷
簡歷是門面,更是敲門磚,能否拿到大廠的面試機會,就要看自己的簡歷如何,拋開學歷意外,大廠最看重簡歷是否有亮點,因此我們對簡歷內容要有准備,對自己的突出點,包括技術、個性上的亮點,要練習表達,避免臨時組織語言。
(2)提升技能
實際上我有個阿里的朋友很早之前就向我透露過,很多人認為大廠看重學歷,但實際情況並不完全是,在阿里只以能力論英雄。所以,在日常生活中,通過不斷地學習,提升自己的能力,努力去拉進自己與目標值的距離,這是很有必要的,也是未來的必然趨勢。
關於提升技能,我的做法:
- ①閱讀實戰文檔

- ②讀一些源碼

- ③讀一些技術筆記

(3)猛刷面試題
對於base不是太好的人來說,刷面試題實際上是最具有“急救”效果的辦法,因此在面試阿里前,我是刷了不少面試題的,目的倒不是希望面試時能被問到原題,而是對大廠面試有一個相應的了解,清楚阿里面試會問一些什么,涉及到哪些技術棧等。
關於刷題,我有話要說:
- ①Java核心面試知識點整理

- ②算法部分(LeetCode+算法的樂趣)

- ③BAT大廠面試真題+專題訓練

做個總結
很多學歷不太好的人,可能對自己沒有太大的信心,實際上任何事情都有“奇跡”發生,而這個“奇跡”關鍵還是要靠自己去創造。無論你是小白菜鳥,還是技術大牛,日常都不能夠落下學習這件事情,一旦落后下來,就容易遭到淘汰。
以上我的經歷希望能夠給大家帶來幫助,另外自己手頭上的資料整理均可免費分享,需要這些資料的朋友,關注我的專欄(Java快速進階通道)看頂部的提示,或直接(點擊我)免費獲取
作者:Java程序猿阿谷
鏈接:https://www.jianshu.com/p/5fe981fd4ab9
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。