天天看點

兩年CRUD,沒料到我這渣二本,備戰兩個月面試阿裡,居然僥幸拿下P6的offer

對于很多沒有學曆優勢的人來說,面試大廠是非常困難的,這對我而言,也是一樣,出身于二本,原本以為就三點一線的生活度過一生,直到生活上的變故,才讓我有了新的想法和目标,是以我這個二本渣渣也奮鬥了起來,竟拿下了阿裡P6崗。今天分享這波面經,主要是希望能夠激勵到同樣被學曆所困擾的技術人,能夠對職業生涯和技術規劃有一個參考價值,感謝!

兩年CRUD,沒料到我這渣二本,備戰兩個月面試阿裡,居然僥幸拿下P6的offer

一、面試阿裡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層網絡協定等,最好結合自己了解,背,你都要背下來。

還有就是一些分布式事務實作,架構實作,比如搶紅包,高并發下單等正常的場景設計,你來設計,你怎麼去設計?多找一些大牛或者上網自己查,幫你看看有哪些漏洞,有哪些解決方案?業界有哪些好的中間件?

兩年CRUD,沒料到我這渣二本,備戰兩個月面試阿裡,居然僥幸拿下P6的offer
由于圖檔太大壓縮了,高清完整版可以文末領取

二、阿裡面試過程(共四面)

一面(主要是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。

兩年CRUD,沒料到我這渣二本,備戰兩個月面試阿裡,居然僥幸拿下P6的offer

2、多線程、高并發、緩存入門到實戰項目pdf書籍

讀書既能學習 也有利于平靜心态!

兩年CRUD,沒料到我這渣二本,備戰兩個月面試阿裡,居然僥幸拿下P6的offer

3、文中提到面試題答案整理

兩年CRUD,沒料到我這渣二本,備戰兩個月面試阿裡,居然僥幸拿下P6的offer

總結

很多學曆不太好的人,可能對自己沒有太大的信心,實際上任何事情都有“奇迹”發生,而這個“奇迹”關鍵還是要靠自己去創造。無論你是白菜鳥,還是技術大牛,日常都不能夠落下學習這件事情。

機會都是留給有準備的人,隻有充足的準備,才可能讓自己可以在候選人中脫穎而出。

限于平台篇幅原因,更多内容展示不了,

需要完整版的小夥伴可以幫忙點贊+轉發,

戳這裡 即可免費下載下傳一份