前言
最近有些朋友在面試阿里,加上 Java-Interview 項(xiàng)目的原因也有小伙伴和我討論,近期也在負(fù)責(zé)部門的招聘梁钾,這讓我想起年初那段長達(dá)三個(gè)月的奇葩面試經(jīng)歷??。
本來沒想拿出來說的逊抡,畢竟最后也沒成姆泻。
但由于那幾個(gè)月的經(jīng)歷讓我了解到了大廠的工作方式、對候選同學(xué)的考察重點(diǎn)以及面試官的套路等都有了全新的認(rèn)識冒嫡。
當(dāng)然最重要的是這段時(shí)間的查漏補(bǔ)缺也讓自己精進(jìn)不少拇勃。
先交代下背景吧:
從去年 12 月到今年三月底,我前前后后面了阿里三個(gè)部門孝凌。
其中兩個(gè)部門通過了技術(shù)面試方咆,還有一個(gè)跪在了三面。
光看結(jié)果還不錯(cuò)蟀架,但整個(gè)流程堪稱曲折瓣赂。
下面我會(huì)盡量描述流程以及大致的面試題目大綱,希望對想要跳槽片拍、正在面試的同學(xué)帶來點(diǎn)靈感煌集,幫助可能談不上,但啟發(fā)還是能有捌省。
以下內(nèi)容較長苫纤,請?jiān)俅蝹浜霉献影宓省?/p>
A 部門
首先是第一次機(jī)會(huì),去年 12 月份有位大佬加我纲缓,后來才知道是一個(gè)部門的技術(shù) Leader 在網(wǎng)上看到我的博客卷拘,問我想不想來阿里試試。
這時(shí)距離上次面阿里也過去一年多了色徘,也想看看現(xiàn)在幾斤幾兩恭金,于是便同意了。
在推薦一周之后收到了杭州打來的電話褂策,說來也巧横腿,那時(shí)候我正在機(jī)場候機(jī),距離登記還有大概一個(gè)小時(shí)斤寂,心想時(shí)間肯定夠了耿焊。
那是我時(shí)隔一年多第一次面試,還是在機(jī)場這樣嘈雜的環(huán)境里遍搞。多多少少還是有些緊張罗侯。
一面
以下是我印象比較深刻的內(nèi)容:
面試官:
談?wù)勀阕鲞^項(xiàng)目中印象較深或自認(rèn)為做的比較好的地方?
博主:
我覺得我在 XX 做的不錯(cuò)溪猿,用了 XX 需求實(shí)現(xiàn) XX 功能钩杰,性能提高了 N 倍纫塌。
面試官:
你說使用到了 AOP ,能談?wù)勊膶?shí)現(xiàn)原理嘛讲弄?
博主:
它是依靠動(dòng)態(tài)代理實(shí)現(xiàn)的措左,動(dòng)態(tài)代理又分為 JDK 自身的以及 CGLIB 。避除。怎披。。
面試官:
嗯瓶摆,能說說他們的不同及優(yōu)缺點(diǎn)嘛凉逛?
博主:
JDK 是基于接口實(shí)現(xiàn),而 CGLIB 繼承代理類群井。状飞。。
就是這樣會(huì)一直問下去蝌借,如果聊的差不多了就開始問一些零散的問題:
JMM 內(nèi)存模型昔瞧,如何劃分的?分別存儲(chǔ)什么內(nèi)容菩佑?線程安全與否自晰?
類加載機(jī)制,談到雙親委派模型后會(huì)問到哪些違反了雙親委派模型稍坯?為什么酬荞?為什么要雙親委派?好處是什么瞧哟?
平時(shí)怎么使用多線程混巧?有哪些好處?線程池的幾個(gè)核心參數(shù)的意義勤揩?
線程間通信的方式咧党?
HashMap 的原理?當(dāng)談到線程不安全時(shí)自然引申出 ConcurrentHashMap 陨亡,它的實(shí)現(xiàn)原理傍衡?
分庫分表如何設(shè)計(jì)?垂直拆分负蠕、水平拆分蛙埂?
業(yè)務(wù) ID 的生成規(guī)則,有哪些方式遮糖?
SQL 調(diào)優(yōu)绣的?平時(shí)使用數(shù)據(jù)庫有哪些注意點(diǎn)?
當(dāng)一個(gè)應(yīng)用啟動(dòng)緩慢如何優(yōu)化?
大概是以上這些屡江,當(dāng)聊到倒數(shù)第二個(gè)時(shí)我已經(jīng)登機(jī)了芭概。最后不得不提前掛斷,結(jié)束之前告訴我之后會(huì)換一個(gè)同事和我溝通盼理,聽到這樣的回復(fù)一面應(yīng)該是過了谈山, 后面也確實(shí)證實(shí)了這點(diǎn)。
二面
大概過了一周宏怔,二面如期而至。
我聽聲音很熟畴椰,就嘗試問下是不是之前一面的面試官臊诊,結(jié)果真是。
由于二面的面試官臨時(shí)有事所以他來替一下斜脂。于是我趕緊問他能否把之前答的不好的再說說抓艳?的到了肯定的答復(fù)后開始了我的表演。
有了第一次的經(jīng)驗(yàn)這一次自然也輕車熟路帚戳,原本感覺一切盡在掌握卻被告知需要筆試突然被激醒玷或。
筆試是一個(gè)在線平臺,需要在網(wǎng)頁中寫代碼片任,會(huì)有一個(gè)明確的題目:
從一個(gè)日志文件中根據(jù)關(guān)鍵字讀取日志偏友,記錄出現(xiàn)的次數(shù)闪唆,最后按照次數(shù)排序打印万伤。
在這過程中切記要和面試官多多交流闷营,因?yàn)楣P試有時(shí)間限制逛犹,別到最后發(fā)現(xiàn)題目理解錯(cuò)了含鳞,這就和高考作文寫完發(fā)現(xiàn)方向錯(cuò)了一樣要命每庆。
而且在溝通過程中體現(xiàn)出你解題的思路瑟押,即使最終結(jié)果不對廓八,但說不定思考的過程很符合面試官的胃口哦京景。這也和今年的高考改卷一樣窿冯;過程正確得高分,只有結(jié)果得低分确徙。
三面
又過了差不多一周的時(shí)間接到了三面的電話醒串,一般到了三面會(huì)是技術(shù) Leader 之類的角色。
這個(gè)過程中不會(huì)過多強(qiáng)調(diào)技術(shù)細(xì)節(jié)米愿,更多的考察軟件能厦凤,比如團(tuán)隊(duì)協(xié)作、學(xué)習(xí)能力等育苟。
但我記得也問了以下一些技術(shù)問題:
談?wù)勀闼斫獾?HTTP 協(xié)議较鼓?
對 TCP 的理解?三次握手?滑動(dòng)窗口博烂?
基本算法香椎,Base64 等。
Java 內(nèi)存模型禽篱,Happen Before 的理解畜伐。
一周之后我接到了 HR 助理的電話約了和 HRBP 以及產(chǎn)品技術(shù)負(fù)責(zé)人的視頻面試。
但是我卻沒有面下去躺率,具體原因得往下看玛界。
溫馨提示:面試經(jīng)驗(yàn)社交圈? 705194503
B 部門
在 A 部門三面完成后,我等了差不多一星期悼吱,這期間我卻收到了一封郵件慎框。
大概內(nèi)容是他在 GitHub 上看到的我,他們的技術(shù)總監(jiān)對我很感興趣(我都不敢相信我的眼鏡)后添,問我想不想來阿里試試笨枯。
我對比了 A B 部門的區(qū)別發(fā)現(xiàn) B 部門在做的事情上確實(shí)更加有誘惑力,之后我表達(dá)了有一個(gè)面試正在流程中的顧慮遇西;對方表示可以私下和我快速的進(jìn)行三面馅精,如果一切沒問題再交由我自行選擇。至少對雙方都是一個(gè)雙贏嘛粱檀。
我想也不虧洲敢,并且對方很有誠意,就答應(yīng)試試梧税;于是便有了下面的面試:
一面
面試官:
對 Java 鎖的理解沦疾?
博主:
我談到了 synchronize,Lock 接口的應(yīng)用第队。
面試官:
他們兩者的區(qū)別以及優(yōu)缺點(diǎn)呢哮塞?
博主:
synchronize 在 JDK1.6 之前稱為重量鎖,是通過進(jìn)出對象監(jiān)視器來實(shí)現(xiàn)同步的凳谦;1.6 之后做了 XX 優(yōu)化忆畅。。尸执。
而 ReentrantLock 是利用了一個(gè)巧妙數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的家凯,并且加鎖解鎖是顯式的。如失。绊诲。
之后又引申到分布式鎖,光這塊就聊了差不多半個(gè)小時(shí)褪贵。
之后又聊到了我的開源項(xiàng)目:
是如何想做這個(gè)項(xiàng)目的掂之?
已經(jīng)有一些關(guān)注了后續(xù)是如何規(guī)劃的抗俄?
你今后的學(xué)習(xí)計(jì)劃是什么?
平時(shí)看哪些書世舰?
之后技術(shù)聊的不是很多动雹,但對于個(gè)人發(fā)展卻聊了不少。
關(guān)于鎖相關(guān)的內(nèi)容可以參考這里:ReentrantLock 實(shí)現(xiàn)原理 synchronize 關(guān)鍵字原理
二面
隔了差不多一天的時(shí)間跟压,二面很快就來了胰蝠。
內(nèi)容不是很多:
線程間通信的多種方式?
限流算法震蒋?單機(jī)限流茸塞?分布式限流?
提到了 Guava Cache ,了解它的實(shí)現(xiàn)原理嘛查剖?
如何定位一個(gè)線上問題翔横?
CPU 高負(fù)載?OOM 排查等梗搅?
聊完之后表示第二天應(yīng)該會(huì)有三面。
三面
三面的面試官應(yīng)該是之前郵件中提到的那位總監(jiān)大佬效览,以前應(yīng)該也是一線的技術(shù)大牛无切;聊的問題不是很多:
談?wù)剬?Netty 的理解?
Netty 的線程模型丐枉?
寫一個(gè) LRU 緩存哆键。
筆試
本以為技術(shù)面試完了,結(jié)果后面告知所有的面試流程都得有筆試了瘦锹,于是又參與了一次筆試:
交替打印奇偶數(shù)
這個(gè)相對比較簡單籍嘹,基于鎖、等待喚醒機(jī)制都是可以的弯院。最后也告知筆試通過辱士。
之后在推薦我的那位大佬的幫助下戲劇般的通過了整個(gè)技術(shù)輪(真的很感謝他的認(rèn)可),并且得知這個(gè)消息是在我剛好和 A 部門約好視頻面試時(shí)間之后听绳。
也就意味著我必須拒掉一個(gè)部門颂碘!
沒看錯(cuò),是我要拒掉一個(gè)椅挣。這對我來說確實(shí)太難了头岔,我壓根沒想過還有兩個(gè)機(jī)會(huì)擺在我面前。
最后憑著個(gè)人的愛好以及 B 部門的熱情我很不好意思的拒掉了 A 部門鼠证。峡竣。。
HR 面
在面這之前我從來沒有面過這樣大廠的 HR 流程量九,于是瘋狂搜索适掰,希望能彌補(bǔ)點(diǎn)經(jīng)驗(yàn)。
也許這就是樂極生悲吧,我確實(shí)猜中了 HR 問的大部分問題攻谁,但遺憾的是最終依然沒能通過稚伍。
后來我在想如果我沒有拒掉 A ,會(huì)不會(huì)結(jié)局不一樣了戚宦?
但現(xiàn)實(shí)就是如此个曙,沒有那么多假設(shè),并且每個(gè)人也得為自己的選擇負(fù)責(zé)受楼!
大概的問題是:
為什么想來阿里垦搬?
個(gè)人做的最成功最有挑戰(zhàn)的事情是什么?
工作中最難忘的經(jīng)歷艳汽?
對加入我們團(tuán)隊(duì)有何期待猴贰?
溫馨提示:面試經(jīng)驗(yàn)社交圈? 705194503
C 部門
HR 這關(guān)被 Pass 之后沒多久我居然又收到了第三個(gè)部門的邀約。
說實(shí)話當(dāng)時(shí)我是拒絕的河狐,之前經(jīng)歷了將近兩個(gè)月的時(shí)間卻沒能如愿我內(nèi)心是崩潰的米绕。
我向聯(lián)系我的大佬表達(dá)了我的想法,他倒覺得我最后被 pass 的原因是個(gè)小問題馋艺,再嘗試的話會(huì)有很大的幾率通過栅干。
我把這事給朋友說了之后也支持我再試試,反正也沒啥損失嘛捐祠,而且面試的狀態(tài)還在碱鳞。
所以我又被打了雞血,才有了下面的面試經(jīng)過:
一面
面試官:
服務(wù)化框架的選型和差異踱蛀?
博主:
一起探討了 SpringCloud窿给、Dubbo、Thrift 的差異率拒,優(yōu)缺點(diǎn)等崩泡。
面試官:
一致性 Hash 算法的原理?
博主:
將數(shù)據(jù) Hash 之后落到一個(gè) 0~2^32-1 構(gòu)成的一個(gè)環(huán)上俏橘。允华。。寥掐。
面試官:
談?wù)勀憷斫獾?Zookeeper靴寂?
博主:
作為一個(gè)分布式協(xié)調(diào)器。召耘。百炬。
面試官:
如何處理 MQ 重復(fù)消費(fèi)?
博主:
業(yè)務(wù)冪等處理污它。剖踊。庶弃。。
面試官:
客戶端負(fù)載算法德澈?
博主:
輪詢歇攻、隨機(jī)、一致性 Hash梆造、故障轉(zhuǎn)移缴守、LRU 等。镇辉。
面試官:
long 類型的賦值是否是原子的屡穗?
博主:
不是。忽肛。村砂。
面試官:
volatile 關(guān)鍵字的原理及作用?happen Before屹逛?
博主:
可見性础废、一致性。罕模。
二面
一面之后大概一周的時(shí)間接到了二面的電話:
原以為會(huì)像之前一樣直接進(jìn)入筆試色迂,這次上來先簡單聊了下:
談?wù)剬ξ⒎?wù)的理解,好處以及弊端手销?
分布式緩存的設(shè)計(jì)?熱點(diǎn)緩存图张?
之后才正式進(jìn)入筆試流程:
這次主要考察設(shè)計(jì)能力锋拖,其實(shí)就是對設(shè)計(jì)模式的理解?能否應(yīng)對后續(xù)的擴(kuò)展性祸轮。
筆試完了之后也和面試官交流兽埃,原以為會(huì)是算法之類的測試,后來得知他能看到前幾輪的筆試情況适袜,特地挑的沒有做過的方向柄错。
所以大家也不用刻意去押題,總有你想不到的苦酱,平時(shí)多積累才是硬道理售貌。
三面
又過了兩周左右,得到 HR 通知疫萤;希望能過去杭州參加現(xiàn)場面試颂跨。并且阿里包了來回的機(jī)票酒店等。
可見阿里對人才渴望還是舍得下成本的扯饶。
既然都這樣了恒削,就當(dāng)成一次旅游所以去了一趟杭州池颈。
現(xiàn)場面的時(shí)候有別于其他面試,是由兩個(gè)面試官同時(shí)參與:
給一個(gè)場景钓丰,談?wù)勀愕募軜?gòu)方式躯砰。
這就對平時(shí)的積累要求較高了。
還有一個(gè)印象較深的是:
在網(wǎng)頁上點(diǎn)擊一個(gè)按鈕到服務(wù)器的整個(gè)流程携丁,盡量完整琢歇。
其實(shí)之前看過,好像是 Google 的一個(gè)面試題则北。
完了之后讓我回去等通知矿微,沒有見到 HR 我就知道涼了,果不其然尚揣。
溫馨提示:面試經(jīng)驗(yàn)社交圈? 705194503
最后總結(jié)下這將近四個(gè)月的面試心得:
一定要積極的推銷自己涌矢,像在 A 部門的三面時(shí),由于基礎(chǔ)答得不是很好快骗;所以最后我表達(dá)了自己的態(tài)度娜庇,對工作、技術(shù)的積極性方篮。讓面試官看到你的潛力值得一個(gè) HC 名額名秀。
面試過程中遇到自己的不會(huì)的可以主動(dòng)提出,切不可不懂裝懂藕溅,這一問就露餡匕得。可以將面試官引導(dǎo)到自己擅長的領(lǐng)域巾表。比如當(dāng)時(shí)我正好研究了鎖汁掠,所以和面試官一聊就是半小時(shí)這就是加分項(xiàng)。
平時(shí)要主動(dòng)積累知識集币。寫博客和參與開源項(xiàng)目就是很好的方式考阱。
博客可以記錄自己踩過的坑,加深印象鞠苟,而且在寫的過程中可以查漏補(bǔ)缺乞榨,最后把整個(gè)知識體系鞏固的比較牢固,良好的內(nèi)容還可以得到意想不到的收獲当娱,比如我第一次面試的機(jī)會(huì)吃既。
GitHub 是開發(fā)者的一張名片,積極參與開源項(xiàng)目可以和全球大佬頭腦風(fēng)暴跨细,并且在面試過程中絕對是一個(gè)加分利器态秧。
面試官一般最后都會(huì)問你有什么要問我的?千萬不要問一些公司福利待遇之類的問題扼鞋∩暧悖可以問下本次面試的表現(xiàn)愤诱?還有哪些需要完善的?從而知道自己答得如何也能補(bǔ)全自己捐友。
還有一點(diǎn):不要在某次面試失利后否定自己淫半,有時(shí)真的不是自己能力不行。這個(gè)也講緣分匣砖。
——文章屬于轉(zhuǎn)載科吭,如有侵權(quán)請聯(lián)系小編,立即刪除~