最近有些朋友在面試阿里,加上 Java-Interview 項目的緣由也有小夥伴和我討論,近期也在負責部門的招聘,這讓我想起年初那段長達三個月的奇葩面試經歷🤣。java
原本沒想拿出來講的,畢竟最後也沒成。git
但因爲那幾個月的經歷讓我瞭解到了大廠的工做方式、對候選同窗的考察重點以及面試官的套路等都有了全新的認識。github
固然最重要的是這段時間的查漏補缺也讓本身精進很多。面試
先交代下背景吧:redis
從去年 12 月到今年三月底,我前先後後面了阿里三個部門。算法
其中兩個部門經過了技術面試,還有一個跪在了三面。數據庫
光看結果還不錯,但整個流程堪稱曲折。設計模式
下面我會盡可能描述流程以及大體的面試題目大綱,但願對想要跳槽、正在面試的同窗帶來點靈感,幫助可能談不上,但啓發仍是能有。緩存
如下內容較長,請再次備好瓜子板凳。安全
首先是第一次機會,去年 12 月份有位大佬加我,後來才知道是一個部門的技術 Leader 在網上看到個人博客,問我想不想來阿里試試。
這時距離上次面阿里也過去一年多了,也想看看如今幾斤幾兩,因而便贊成了。
在推薦一週以後收到了杭州打來的電話,說來也巧,那時候我正在機場候機,距離登記還有大概一個小時,心想時間確定夠了。
那是我時隔一年多第一次面試,仍是在機場這樣嘈雜的環境裏。多多少少仍是有些緊張。
如下是我印象比較深入的內容:
面試官:
談談你作過項目中印象較深或自認爲作的比較好的地方?
博主:
我以爲我在 XX 作的不錯,用了 XX 需求實現 XX 功能,性能提升了 N 倍。
面試官:
你說使用到了 AOP ,能談談它的實現原理嘛?
博主:
它是依靠動態代理實現的,動態代理又分爲 JDK 自身的以及 CGLIB 。。。。
面試官:
嗯,能說說他們的不一樣及優缺點嘛?
博主:
JDK 是基於接口實現,而 CGLIB 繼承代理類。。。
就是這樣會一直問下去,若是聊的差很少了就開始問一些零散的問題:
大概是以上這些,當聊到倒數第二個時我已經登機了。最後不得不提早掛斷,結束以前告訴我以後會換一個同事和我溝通,聽到這樣的回覆一面應該是過了,
後面也確實證明了這點。
大概過了一週,二面如期而至。
我聽聲音很熟,就嘗試問下是否是以前一面的面試官,結果然是。
因爲二面的面試官臨時有事因此他來替一下。因而我趕忙問他可否把以前答的很差的再說說?的到了確定的答覆後開始了個人表演。
有了第一次的經驗這一次天然也輕車熟路,本來感受一切盡在掌握卻被告知須要筆試忽然被激醒。
筆試是一個在線平臺,須要在網頁中寫代碼,會有一個明確的題目:
從一個日誌文件中根據關鍵字讀取日誌,記錄出現的次數,最後按照次數排序打印。
在這過程當中切記要和麪試官多多交流,由於筆試有時間限制,別到最後發現題目理解錯了,這就和高考做文寫完發現方向錯了同樣要命。
並且在溝經過程中體現出你解題的思路,即便最終結果不對,但說不定思考的過程很符合面試官的胃口哦。這也和今年的高考改卷同樣;過程正確得高分,只有結果得低分。
又過了差很少一週的時間接到了三面的電話,通常到了三面會是技術 Leader 之類的角色。
這個過程當中不會過多強調技術細節,更多的考察軟件能,好比團隊協做、學習能力等。
但我記得也問了如下一些技術問題:
一週以後我接到了 HR 助理的電話約了和 HRBP 以及產品技術負責人的視頻面試。
可是我卻沒有面下去,具體緣由得往下看。
在 A 部門三面完成後,我等了差很少一星期,這期間我卻收到了一封郵件。
大概內容是他在 GitHub 上看到的我,他們的技術總監對我很感興趣(我都不敢相信個人眼鏡),問我想不想來阿里試試。
我對比了 A B 部門的區別發現 B 部門在作的事情上確實更加有誘惑力,以後我表達了有一個面試正在流程中的顧慮;對方表示能夠私下和我快速的進行三面,若是一切沒問題再交由我自行選擇。至少對雙方都是一個共贏嘛。
我想也不虧,而且對方頗有誠意,就答應試試;因而便有了下面的面試:
面試官:
對 Java 鎖的理解?
博主:
我談到了 synchronize,Lock 接口的應用。
面試官:
他們二者的區別以及優缺點呢?
博主:
synchronize
在 JDK1.6 以前稱爲重量鎖,是經過進出對象監視器來實現同步的;1.6 以後作了 XX 優化。。。
而 ReentrantLock
是利用了一個巧妙數據結構實現的,而且加鎖解鎖是顯式的。。。
以後又引伸到分佈式鎖,光這塊就聊了差很少半個小時。
以後又聊到了個人開源項目:
以後技術聊的不是不少,但對於我的發展卻聊了很多。
關於鎖相關的內容能夠參考這裏:ReentrantLock 實現原理 synchronize 關鍵字原理
隔了差很少一天的時間,二面很快就來了。
內容不是不少:
聊完以後表示次日應該會有三面。
三面的面試官應該是以前郵件中提到的那位總監大佬,之前應該也是一線的技術大牛;聊的問題不是不少:
本覺得技術面試完了,結果後面告知全部的面試流程都得有筆試了,因而又參與了一次筆試:
這個相對比較簡單,基於鎖、等待喚醒機制都是能夠的。最後也告知筆試經過。
以後在推薦個人那位大佬的幫助下戲劇般的經過了整個技術輪(真的很感謝他的承認),而且得知這個消息是在我恰好和 A 部門約好視頻面試時間以後。
也就意味着我必須拒掉一個部門!
沒看錯,是我要拒掉一個。這對我來講確實太難了,我壓根沒想過還有兩個機會擺在我面前。
最後憑着我的的愛好以及 B 部門的熱情我很很差意思的拒掉了 A 部門。。。
在面這以前我歷來沒有面過這樣大廠的 HR 流程,因而瘋狂搜索,但願能彌補點經驗。
也許這就是樂極生悲吧,我確實猜中了 HR 問的大部分問題,但遺憾的是最終依然沒能經過。
後來我在想若是我沒有拒掉 A ,會不會結局不同了?
但現實就是如此,沒有那麼多假設,而且每一個人也得爲本身的選擇負責!
大概的問題是:
HR 這關被 Pass 以後沒多久我竟然又收到了第三個部門的邀約。
說實話當時我是拒絕的,以前經歷了將近兩個月的時間卻沒能如願我心裏是崩潰的。
我向聯繫個人大佬表達了個人想法,他倒以爲我最後被 pass 的緣由是個小問題,再嘗試的話會有很大的概率經過。
我把這事給朋友說了以後也支持我再試試,反正也沒啥損失嘛,並且面試的狀態還在。
因此我又被打了雞血,纔有了下面的面試通過:
面試官:
服務化框架的選型和差別?
博主:
一塊兒探討了 SpringCloud、Dubbo、Thrift 的差別,優缺點等。
面試官:
博主:
將數據 Hash 以後落到一個 0 ~ 2^32-1
構成的一個環上。。。。
面試官:
談談你理解的 Zookeeper?
博主:
做爲一個分佈式協調器。。。
面試官:
如何處理 MQ 重複消費?
博主:
業務冪等處理。。。。
面試官:
客戶端負載算法?
博主:
輪詢、隨機、一致性 Hash、故障轉移、LRU 等。。
面試官:
long 類型的賦值是不是原子的?
博主:
不是。。。
面試官:
volatile 關鍵字的原理及做用?happen Before?
博主:
可見性、一致性。。
一面以後大概一週的時間接到了二面的電話:
原覺得會像以前同樣直接進入筆試,此次上來先簡單聊了下:
以後才正式進入筆試流程:
此次主要考察設計能力,其實就是對設計模式的理解?可否應對後續的擴展性。
筆試完了以後也和麪試官交流,原覺得會是算法之類的測試,後來得知他能看到前幾輪的筆試狀況,特意挑的沒有作過的方向。
因此你們也不用刻意去押題,總有你想不到的,平時多積累纔是硬道理。
又過了兩週左右,獲得 HR 通知;但願能過去杭州參加現場面試。而且阿里包了來回的機票酒店等。
可見阿里對人才渴望仍是捨得下成本的。
既然都這樣了,就當成一次旅遊因此去了一趟杭州。
現場面的時候有別於其餘面試,是由兩個面試官同時參與:
給一個場景,談談你的架構方式。
這就對平時的積累要求較高了。
還有一個印象較深的是:
在網頁上點擊一個按鈕到服務器的整個流程,儘可能完整。
其實以前看過,好像是 Google 的一個面試題。
完了以後讓我回去等通知,沒有見到 HR 我就知道涼了,果不其然。
看到這裏的朋友應該都是老鐵了,我也把上文提到的大多數面試題整理在了 GitHub:
廠庫地址:
https://github.com/crossoverJie/Java-Interview
最後總結下這將近四個月的面試心得:
還有一點:不要在某次面試失利後否認本身,有時真的不是本身能力不行。這個也講緣分。
因禍得福焉知非福
我就是個例子,雖然最後沒能去成阿里,如今在公司也是一個部門的技術負責人,在咱們城市還有個窩,舒適的家,和女友一塊兒爲想要的生活努力奮鬥。
歡迎關注做者公衆號於我交流🤗。