引言
阿里巴巴這四個字對于一個技術人來說,是一個朝圣對地方,是一個制造夢想對地方,看過無數次馬老師對演講視頻以及紀錄片,在驚嘆于馬老師的商業眼光的同時也萌生了去看看阿里巴巴到底是一家什么樣的公司的愿望,本文主要闡述了作者如何在繁忙的作業中通過三個月的準備拿到阿里offer的程序,希望對想進入阿里巴巴的同學有所裨益,面試準備經歷適用于將要走出校園尋找人生第一份Java開發作業的應屆生,也適用于作業好幾年的老司機,
為什么換作業
作者的最主要的作業經歷是在一家領域內排名全球第一的公司作業,但是這家公司是以硬體為主的,軟體只是配套,雖然一直謀求在軟體道路上的突破,形成新的利潤增長點,但是轉型是痛苦的,作者經歷了整個轉型的程序,但是越越發現自己遇到的技術上以及發展上的瓶頸,逐漸進入了舒適區以及溫水煮青蛙的狀態,因此萌生了離職換作業謀求發展的想法,由于對于阿里巴巴的盲目向往,給自己定了去阿里的目標,于是開啟了自己三個月的面試準備之旅,
面試準備
面大廠的技術崗,還是需要好好準備,最好不要打無準備之仗,因為每次面試都是有面試記錄的,如果沒有準備好就面試,很有可能留下不好的面試記錄,后面再面試其他部門的時候,面試官會參考之前的面試記錄對你進行初步的評判,影響后面的面試,因此如果想要面試大廠必須好好進行面試準備,
另外大家在準備面試的時候不能光看,要學會自己總結,用輸出倒逼輸入,無論寫文章還是思維導圖,都是需要自己總結沉淀的,
我把面試內容主要分成了三大部分,分別為技術知識,專案經驗以及HR面試,下面我就針對這三大部分分別進行詳細說明,
技術知識
1、 Java功底
扎實基礎知識是一切的基礎,因此無論是應屆生還是老司機都需要具備,在準備面試的時候這部分還是不可以偷懶的,因為一般第一面都是會從基礎知識入手考察面試者的技術底子如何,
Java的基本資料結構,像List、HashMap、ConcurrentHashMap,這些原始碼都要爛熟于胸,常見的問題就是HashMap為什么執行緒不安全?Volatile關鍵字原理,可不可以從硬體層面進行分析描述,
2、JVM
JVM是java程式運行的基礎,因此是非常重要的基礎知識,建議大家在準備的時候,可以通過畫圖來進行理解,如果有實際的JVM調優經驗那就更好了,像下面的這種流程圖我們可以憑借自己的記憶可以畫出來,對于常見的OOM如何分析?fullGC如何分析我們都要非常熟練,
3、并發
我們都知道大廠由于業務規模非常大,經常會有高并發的場景,面試官對于候選者的在高并發方面的沉淀也是非常看重的,首先我們要明白并發安全的原因是什么?我們的解決方案是什么?在分布式場景下如何解決并發安全問題?
并發安全分析文章
4、Spring框架
Spring框架是我們每天都會用到的開發框架,因此我們需要對它的原理、設計思想以及如何擴展都要非常熟悉,AOP、IOC的原理?Bean創建流程、回圈依賴如何解決的?有哪些設計模式?有哪些擴展點?
Spring原理分析
中間件
中間件是分布式系統中必備的基礎組件,作為一名優秀的工程師,我們不僅需要熟悉各個中間件的原理,還要明確知道他們的使用場景以及如何進行選型對比,比如同樣是MQ中間件,為什么你的專案中使用的是RabbitMQ而不是Kafka?其中的選型思考是怎樣的?這些都是面試中經常碰到的,面試官其實更想聽到的是你的思考是什么,
另外建議大家在面試前好好準備一些生產上面的遇到的問題以及解決問題的小案例,這樣面試的時候可以信手拈來而不是當場去想,避免面試程序中可能由于緊張一下子想不起來的尷尬場面,當然必須是質量較高的案例,

資料庫
雖然各種資料庫層出不窮,但是實際作業中,我們大部分的業務資料還是存盤在關系型資料庫中,因此對于資料庫的掌握是面試關非常重視的,就拿Mysql來說,我們可以先按照如下的結構進行梳理,Mysql的存盤結構我們得清楚,一條SQL的執行程序我們能用自己的語言描述出來,在實際專案中的資料量有多大?如何進行分庫分表?索引怎么設計的?有哪些設計規則?有沒有進行SQL優化?怎么優化的? 
Mysql索引原理分析
Redis
Redis作為當前分布式系統中最常用的快取基礎組件,也是面試中的重點考察物件,我們在準備程序中,需要梳理下我們平常在使用Redis的程序中遇到過哪些問題,比如資料快取后,Redis資料與資料庫的資料一致性如何保證?專案中如何保證Redis的高可用的?使用的是主從模式還是哨兵模式?為什么?

MQ
MQ是微服務架構的必備基礎中間件,因此非常重要,大家務必好好準備,主要包括MQ在微服務架構中的作用是什么?Kafka、RabbitMQ、RocketMQ等訊息中間件的選型對比是怎樣的?訊息如何存盤的?怎么保證訊息中間件的高可用?MQ的網路通信模塊如何實作的?
通過以上的描述,大家知道如何準備中間件的面試了嗎?如果再學習到一款新的中間件,大家也可以按照如下方法進行準備,
中間件是在什么場景下使用的?有沒有做過選型對比?為什么專案中使用RabbitMQ而不使用Kafka?中間件的高可用怎么保證的?中間件的高性能怎么實作的?
專案經歷
在面試前一定要把自己做過的專案重新梳理一遍,重點是你負責的部分,一定要非常熟悉,同時串聯下自己的上下游服務,形成完整的業務倍訓,把專案中最具有技術挑戰的問題提煉出來,在面試前準備好,這是面試必問的問題,準備好專案中最大的技術挑戰是什么(問題描述清楚),自己是怎么分析問題的(自己的分析程序),如何解決的(實際解決程序),解決的結果是怎樣的(拿到什么樣的結果),這就是我總結的問題回答公式,即W(What)A(Analysis)H(How)R(Result)回答法,面試準備中按照這樣的方法論去套你的回答,肯定會驚艷全場,
演算法
這個沒什么好說的就是要多練多寫,甚至可以用白紙寫出來基本的快排演算法、LRU等,這里推薦Leetcode,一定要把常見的題目弄的很熟,如果現場寫不出來,但至少自己要有對應的思路,
HR面試
經歷了前面多輪技術面試之后,恭喜你終于來到最后HR面試這一關,雖然不是技術面試,但是也是非常重要的一輪面試,像阿里這樣的大廠,HR擁有一票否決權,
HR面試一般會讓你先介紹下自己的經歷,如果是學生的話就是自己的求學經歷,做過哪些專案,如果是社會招聘,則重點說下自己的作業經歷以及為什么換作業,HR面試問題主要有以下幾類,大家可以根據自身的情況進行準備,
1、自我介紹,盡量簡要而不簡單,整段介紹要有記憶點,讓HR對你有個基本的印象,
2、自己目前在團隊中的角色以及現狀,
3、為什么想要換作業,現在發展不順利還是有什么其他原因?
4、展現自己能吃苦、愿意接收挑戰的傾向,最好輔以具體的小故事加以說明,
5、為什么想來XX,手上有其他offer嗎?
總結
面試準備是一場修行,是對自己知識體系、技術體系以及自身價值對全面總結和梳理,無論最后的結果如何,我覺得都會讓自己得到一些提升,就拿我自己來說,在準備面試的程序中,總結了自己梳理知識的方法論,改掉了睡懶覺的習慣,已經可以每天六點半起床了,這些小而美的改變都是在這個程序中修煉獲得的,同時希望大家明確一件事情,面試準備不是背Java八股文,而是需要進行技術思考,技術思考力是大廠非常看中的重要品質,多問自己幾個為什么?我想你會識訓到更多,
最后和大家分享一句話,真正的大師永遠懷著一顆學徒的心,人外有人,山外有山,時刻保持一顆謙卑的心,保持一種空杯狀態,你才會識訓更多,努力不一定就有回報,但是不努力肯定不會有回報,預祝大家都可以找到自己心儀的作業,
PS:打個廣告,阿里巴巴已經開啟史上最大規模校招,可以聯系我進行內推,另外團隊也在進行社會招聘,有需要的同學可以聯系我進行內推,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/291359.html
標籤:其他
