對于很多沒有學曆優勢的人來說,面試大廠是非常困難的,這對我而言,也是一樣,出身于二本,原本以為就三點一線的生活度過一生,直到生活上的變故,才讓我有了新的想法和目标,是以我這個二本渣渣也奮鬥了起來,竟拿下了阿裡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層網絡協定等,最好結合自己了解,背,你都要背下來。
還有就是一些分布式事務實作,架構實作,比如搶紅包,高并發下單等正常的場景設計,你來設計,你怎麼去設計?多找一些大牛或者上網自己查,幫你看看有哪些漏洞,有哪些解決方案?業界有哪些好的中間件?
由于圖檔太大壓縮了,高清完整版可以文末領取
二、阿裡面試過程(共四面)
一面(主要是jvm,并發,鎖,資料結構等基礎)
- 自我介紹(說說自己的擅長及拿手的技術)
- 說說treemap和HashMap的差別?HashMap和ConcurrentHashMap的差別?
- HashMap底層如何實作(JDK1.8有所改動)?
- 說說Hash的一緻算法?
- 你知道的GC算法和回收政策有哪些?GC的機制是什麼?
- 垃圾回收器的基本原理?是否可以立即回收記憶體?怎麼樣主動的通知JVM進行垃圾回收?
- 雙親委派模型機制
- 線程池建立的幾個核心構造參數是什麼?
- 樂觀鎖和悲觀鎖?可重入鎖和Synchronized?
- 他們都是可重入鎖嗎?哪個效率更高?
- CountDownLaunch和Cylicbarrior的差別以及分别是在哪樣場景下使用的?
- Http和Https的差別以及Https加密的方式?
- 以後的職業規劃和想法
二面(主要是資料庫,協定,Spring等)
- 自我介紹,聊下自己認為做得很好的項目!
- InnoDB支援的四種事務隔離級别名稱是什麼? 之間的差別是什麼?MySQL隔離級别是什麼?
- 說說事務的特性?講講對慢查詢的分析?
- 你了解的BTree機制?
- 有哪些MySQL常用的優化方法?
- Http請求過程,DNS解析的過程?
- 三次握手和四次握手的過程?
- B+樹索引和Hash索引之間的差別?
- Spring IOC如何管理Bean之間的依賴關系,怎麼樣避免循環依賴?
- SpringBean建立過程中的設計模式?
- 說說AOP的實作原理?
- Tomcat的基本架構是什麼?
三面(主要是緩存,高并發,分布式)
- 自己項目中的總結的并發經驗
- 說說MySQL的鎖并發?加鎖的機制是什麼?
- 高并發場景下如何防止死鎖,保證資料的一緻性?
- 叢集和負載均衡的算法與實作?
- 說說分庫與分表設計?
- 分庫分表帶來的分布式困境與對應之策有哪些?
- Redis和Setnx指令是如何實作分布式鎖的?使用Redis怎麼進行異步隊列?會有什麼缺點?
- 緩存擊穿的概念和解決方案?
- Redis的資料結構? 線程模型? Redis的資料淘汰機制?
- Redis的資料一緻性問題
- MQ底層原理的實作?
- 阻塞隊列不用Java提供的該怎麼實作?
- 講講負載均衡的原理?
- 如何實作高并發環境下的削峰、限流?
四面(主要項目入手)
- 講講項目中用到的中間件(Dubbo/MQ/Zookeeper/Redis/Kafka)?
- 什麼情況下會造成雪崩?該怎麼避免這種情況?
- 高并發架構的設計思路?
- 以前的項目中遇到的問題和解決政策?
- 生活中遇到過哪些挫折?最後怎麼解決的?
小結
一線網際網路公司都比較注重實際的項目中解決問題的能力,另外面試點主要圍繞JVM、多線程相關、基礎知識的底層原理、處理高并發的能力。這裡也不扯什麼面試技巧了,輕松發揮就好,祝大家都能有個高薪滿意的工作!
前邊主要介紹了學習架構和面經,下面分享一些幹貨,都是我平時學習的一些總結,需要的朋友點贊本文
,戳此處 即可免費下載下傳一份1、熱門面試題及答案大全
面試前做足功夫,讓你面試成功率提升一截,這裡一份熱門500道一線網際網路常問面試題及答案助你拿offer。
2、多線程、高并發、緩存入門到實戰項目pdf書籍
讀書既能學習 也有利于平靜心态!
3、文中提到面試題答案整理
總結
很多學曆不太好的人,可能對自己沒有太大的信心,實際上任何事情都有“奇迹”發生,而這個“奇迹”關鍵還是要靠自己去創造。無論你是白菜鳥,還是技術大牛,日常都不能夠落下學習這件事情。
機會都是留給有準備的人,隻有充足的準備,才可能讓自己可以在候選人中脫穎而出。
限于平台篇幅原因,更多内容展示不了,
需要完整版的小夥伴可以幫忙點贊+轉發,
戳這裡 即可免費下載下傳一份。