一、寫在前面
用一個(gè)面試連環(huán)炮引出了平時(shí)中大型互聯(lián)網(wǎng)公司的面試官是如何發(fā)問的。
緊接著從技術(shù)廣度、底層技術(shù)、技術(shù)深度幾個(gè)角度說了一下,我們一般是如何來考察候選人的技術(shù)。
本文是下篇,將會(huì)從項(xiàng)目經(jīng)驗(yàn)、系統(tǒng)設(shè)計(jì)、履歷/學(xué)歷/素質(zhì)、候選人與崗位的匹配、多輪面試官的協(xié)作這些方面,繼續(xù)告訴大家,互聯(lián)網(wǎng)公司是如何全方位、無死角來考察候選人的。
二、項(xiàng)目經(jīng)驗(yàn)的考察
項(xiàng)目經(jīng)驗(yàn),絕對(duì)是面試官必須考察的,很可能上來就是讓你先畫一下項(xiàng)目整體架構(gòu)圖,說一下你們項(xiàng)目用了哪些技術(shù)以及核心的業(yè)務(wù)思路。
然后從項(xiàng)目入手,考察你項(xiàng)目里各個(gè)技術(shù)掌握的如何,通過連環(huán)炮對(duì)你掌握最好的技術(shù)進(jìn)行深入考察,對(duì)一些高階技術(shù)的考察,直接下探到底層。
舉個(gè)例子,如果你說你們公司里用了dubbo作為服務(wù)框架,那么會(huì)問問你dubbo底層的通信框架是什么?Netty?Mina?
然后再問問你底層的NIO是啥?網(wǎng)絡(luò)通信里的長連接和短連接是啥?
你是否看過dubbo的源碼?dubbo源碼中你印象深刻的對(duì)并發(fā)技術(shù)的運(yùn)用是什么?
一些面試官喜歡從項(xiàng)目展開問各種技術(shù),也有一些面試官上來直接從你簡歷上的技術(shù)開始發(fā)問,從技術(shù)深入到項(xiàng)目。這就看個(gè)人喜好了。
當(dāng)然無論如何,最后總會(huì)聊到項(xiàng)目的一些業(yè)務(wù)細(xì)節(jié),好的面試官會(huì)掌握一個(gè)原則:死扣細(xì)節(jié)。
提問時(shí),必須要深入到你把某個(gè)業(yè)務(wù)細(xì)節(jié)講清楚,以及結(jié)合這個(gè)業(yè)務(wù)細(xì)節(jié)到底是如何落地和設(shè)計(jì)技術(shù)方案的,如何使用各種技術(shù)在業(yè)務(wù)中的。
比如說
?●?你說你用了Redis,那就會(huì)進(jìn)一步問你,你哪個(gè)業(yè)務(wù)用了Redis?那個(gè)業(yè)務(wù)的流程請(qǐng)你敘述一下?
●?在Redis里你們具體是選用了哪種數(shù)據(jù)結(jié)構(gòu)存放什么數(shù)據(jù)?數(shù)據(jù)的過期時(shí)間是什么?如果緩存過期了,你的數(shù)據(jù)兜底方案是什么,到哪兒去回查?
●?你的key如何設(shè)計(jì)的,為什么要這么設(shè)計(jì)?你的這個(gè)業(yè)務(wù)把數(shù)據(jù)放在了Redis里,是其他哪個(gè)業(yè)務(wù)來查Redis?為什么要這樣子做?如果不用Redis會(huì)怎么樣?
這只是一個(gè)例子,實(shí)際上各種技術(shù)都可以在項(xiàng)目里深扣細(xì)節(jié)。這就能考察出,你對(duì)這個(gè)技術(shù)的實(shí)踐到底有多深,經(jīng)歷過多么復(fù)雜的線上業(yè)務(wù)的實(shí)踐,能hold住一個(gè)技術(shù)解決線上系統(tǒng)中的哪些問題。
總之,從項(xiàng)目里,我們可以看出你是否負(fù)責(zé)過復(fù)雜業(yè)務(wù)架構(gòu)下的分布式系統(tǒng)的設(shè)計(jì)和開發(fā)?
你們的系統(tǒng)是否是線上高并發(fā)大流量高負(fù)載場景的挑戰(zhàn),你是否經(jīng)歷過這種技術(shù)挑戰(zhàn)?
你們的系統(tǒng)是否承載過億級(jí)別海量數(shù)據(jù)的存儲(chǔ)以及高性能讀寫的挑戰(zhàn),你是否解決過這些問題?
助力各位在每年的金三銀四有個(gè)好的前程:JAVA高階交流群:
851531810
此外,從項(xiàng)目考察中,還可以直接看出你的整體能力技術(shù)定位。你是僅僅負(fù)責(zé)過一個(gè)模塊呢?還是負(fù)責(zé)過一個(gè)子系統(tǒng)?
或者是作為架構(gòu)師負(fù)責(zé)過一個(gè)完整的項(xiàng)目群,帶過幾十人的團(tuán)隊(duì),設(shè)計(jì)過大規(guī)模復(fù)雜的系統(tǒng)架構(gòu)?
所以說,你到底把控過什么樣的項(xiàng)目,具備什么樣的能力,從你負(fù)責(zé)過的項(xiàng)目里,直接可以看出來。
如果你來面試的是中級(jí)的崗位,那么可能我們覺得你技術(shù)整體ok,獨(dú)立負(fù)責(zé)過核心模塊的開發(fā),同時(shí)對(duì)各種技術(shù)都有一定的實(shí)踐經(jīng)驗(yàn),就OK了。
如果你面的是高級(jí)/資深的崗位,那么我們會(huì)看看你是否帶領(lǐng)一個(gè)小團(tuán)隊(duì)獨(dú)立負(fù)責(zé)過一個(gè)有一定復(fù)雜度和難度的完整系統(tǒng)的架構(gòu)設(shè)計(jì)和開發(fā)。
如果你面試的是架構(gòu)師的崗位,那我們肯定是要求你在一個(gè)公司里主導(dǎo)過很多人協(xié)作完成的大型而且復(fù)雜的項(xiàng)目群。
并且我們要求你對(duì)一個(gè)大型系統(tǒng)架構(gòu)有深度的思考和整體的把控,而且這個(gè)項(xiàng)目要有足夠的技術(shù)挑戰(zhàn),大用戶量、高并發(fā)、海量數(shù)據(jù),等等。
因此,項(xiàng)目考察,是重中之重。很多同學(xué)平時(shí)積累了不少的技術(shù)學(xué)習(xí),但是有一個(gè)很大的問題是,項(xiàng)目經(jīng)驗(yàn)和實(shí)踐太少。
這些同學(xué)可能確實(shí)沒經(jīng)歷過復(fù)雜系統(tǒng)的架構(gòu)設(shè)計(jì)的歷練,所以非常容易在項(xiàng)目經(jīng)驗(yàn)考察這塊出現(xiàn)問題,被面試官判定為技術(shù)不錯(cuò),但是經(jīng)驗(yàn)缺乏。
三、系統(tǒng)設(shè)計(jì)的考察
這個(gè)也是很多互聯(lián)網(wǎng)大廠的面試官,在考察一些高級(jí)工程師及以上的同學(xué),喜歡發(fā)問的。
一般會(huì)用自己公司或者團(tuán)隊(duì)里的一些業(yè)務(wù)場景拿出來,或者是普遍性的一些業(yè)務(wù)場景,然后來問你如何針對(duì)這個(gè)業(yè)務(wù)場景設(shè)計(jì)系統(tǒng)架構(gòu)?
舉幾個(gè)例子:
如何設(shè)計(jì)一個(gè)電商秒殺系統(tǒng)架構(gòu)?
如何設(shè)計(jì)一個(gè)消息推送系統(tǒng)架構(gòu)?
雙11大促的時(shí)候如何設(shè)計(jì)系統(tǒng)的動(dòng)態(tài)擴(kuò)容/縮容的機(jī)制?
類似諸如此類的一些場景式的系統(tǒng)設(shè)計(jì)考察。其實(shí)這個(gè)主要是用一些你可能沒接觸過的場景,來現(xiàn)場考察一下你的架構(gòu)設(shè)計(jì)思維。
尤其是針對(duì)上面說的高級(jí)/資深、架構(gòu)類的崗位,我們尤其會(huì)注重現(xiàn)場考察你沒接觸過的業(yè)務(wù)場景的架構(gòu)設(shè)計(jì)。
因?yàn)楫吘鼓銇砹艘院?,肯定要讓你接觸全新的業(yè)務(wù),然后立馬給出合理而且靠譜的架構(gòu)設(shè)計(jì)方案,在新的公司來落地你的經(jīng)驗(yàn)。
助力各位在每年的金三銀四有個(gè)好的前程:JAVA高階交流群:
851531810
很多同學(xué)平時(shí)不太注意積累系統(tǒng)設(shè)計(jì)的能力,導(dǎo)致出去面試的時(shí)候,人家一問場景系統(tǒng)設(shè)計(jì)問題,直接發(fā)蒙了。
所以,平時(shí)應(yīng)該對(duì)公司里各種業(yè)務(wù)場景多思考,自己設(shè)定一些挑戰(zhàn),比如假設(shè)你公司的請(qǐng)求量暴增100倍,數(shù)據(jù)量暴增100倍,你的系統(tǒng)架構(gòu)應(yīng)該如何設(shè)計(jì)?
多給自己設(shè)立挑戰(zhàn),然后去嘗試著思考設(shè)計(jì),才能積累出系統(tǒng)設(shè)計(jì)的思維和能力來。
四、基本功的考察
很多大廠都會(huì)考察候選人的基本功,尤其是數(shù)據(jù)結(jié)構(gòu)和算法。比如現(xiàn)場手寫一些常見的算法題。
很多同學(xué)很容易倒在基本功這塊,一些基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)和算法題都不會(huì)寫,那就是有點(diǎn)問題了。
這里強(qiáng)調(diào)一下,這個(gè)東西并不是應(yīng)屆生專用的,其實(shí)也代表了一個(gè)工程師,甚至一個(gè)架構(gòu)師的基本技術(shù)素養(yǎng)問題。
因此建議大家平時(shí)還是要注重基本功的保持,平時(shí)寫寫算法題,熟悉一下數(shù)據(jù)結(jié)構(gòu),能保持自己的技術(shù)素養(yǎng)不會(huì)掉落。
否則數(shù)據(jù)結(jié)構(gòu)和算法都不熟悉,對(duì)復(fù)雜系統(tǒng)的技術(shù)細(xì)節(jié)把控基本也就沒法做到,因?yàn)楹芏鄰?fù)雜分布式系統(tǒng)的源碼里,到處是自己寫的數(shù)據(jù)結(jié)構(gòu)和復(fù)雜算法。
五、履歷背景/學(xué)歷背景/過往經(jīng)驗(yàn)/綜合素質(zhì)
最后一定會(huì)綜合看一下一個(gè)候選人整體的背景,比如你的履歷背景。
履歷背景
●?你過去是外包公司出身?還是傳統(tǒng)IT公司出身?或者是一些小型互聯(lián)網(wǎng)公司?或者是一二線大互聯(lián)網(wǎng)公司出身?
●?另外你的學(xué)歷如何?是大專?普通本科?211 / 985本科?普通碩士?211/985大學(xué)的碩士 or 博士?
●?你過去做的都是一些內(nèi)部系統(tǒng),比如OA系統(tǒng),財(cái)務(wù)系統(tǒng)?或者都是C端系統(tǒng),有上千萬用戶量的系統(tǒng)?或者你過去做的都是某種偏門的項(xiàng)目,比如爬蟲之類的?
●?你的溝通表達(dá)能力如何?性格是否踏實(shí)和nice,不浮躁?你是否有團(tuán)隊(duì)協(xié)作精神?
這些綜合性的東西,其實(shí)都會(huì)在我們的整體考察范圍之內(nèi),都會(huì)納入考慮范圍內(nèi),最后決定要不要發(fā)offer。
六、候選人與崗位需求的匹配?
其實(shí)按照上述流程考察下來以后,會(huì)經(jīng)歷多輪面試,基本一次好的面試就可以綜合考察出一個(gè)候選人的完整情況了。
這個(gè)候選人的技術(shù)面是否完整,是否有幾個(gè)技術(shù)領(lǐng)域有足夠的深度?
候選人做過什么樣的項(xiàng)目,項(xiàng)目的實(shí)踐經(jīng)驗(yàn)如何,把控過多大的團(tuán)隊(duì)和多大的項(xiàng)目,
對(duì)全新業(yè)務(wù)場景的系統(tǒng)設(shè)計(jì)能力如何,基本功如何,綜合背景和素質(zhì)如何。這些東西,基本上都可以很好的考察出來了。
助力各位在每年的金三銀四有個(gè)好的前程:JAVA高階交流群:
851531810
此時(shí)就會(huì)將一個(gè)候選人跟崗位的需求進(jìn)行匹配,比如說你要招聘的是一個(gè)資深Java的崗位,需要他過來開發(fā)的是公司里較為核心的子系統(tǒng)。

然后呢,你公司的技術(shù)棧是dubbo、zk、kafka、redis,等等
你們公司每秒有上萬的并發(fā)訪問壓力,數(shù)據(jù)量一億以上,線上系統(tǒng)偶爾故障,比如高并發(fā)下zk突然報(bào)錯(cuò)異常,導(dǎo)致系統(tǒng)業(yè)務(wù)中斷,然后需要帶4個(gè)初級(jí)和中級(jí)的兄弟一起開發(fā)。
這時(shí),你考察完一個(gè)候選人,就知道他的技術(shù)能力是否匹配這個(gè)崗位,技術(shù)深度能否cover住線上系統(tǒng)常見的一些故障。
能否在線上故障的時(shí)候,立馬有足夠的源碼功底分析、定位和解決問題。是否有過往類似足夠的高并發(fā)和海量數(shù)據(jù)的項(xiàng)目經(jīng)驗(yàn)。
是否帶過幾個(gè)人獨(dú)立把控過一個(gè)核心系統(tǒng)的架構(gòu)設(shè)計(jì)和開發(fā),過去的公司背景咋樣,學(xué)歷咋樣,綜合素質(zhì)咋樣。
這個(gè)候選人和崗位需求是否匹配,基本上就出來了。
七、多輪面試官的分工協(xié)作
上面列舉了大量的技術(shù)考察的內(nèi)容,實(shí)際上很難說是一輪面試官直接完成的。
因此,一般我們都是分成多輪面試官協(xié)作考察。但是根據(jù)不同的公司,不同輪的面試官的職責(zé)會(huì)稍微有一些不一樣。

比如說一面面試官可能主要就是考察一下技術(shù)內(nèi)容,包括技術(shù)面以及連環(huán)炮發(fā)問考察技術(shù)深度,以及算法功底,不太涉及項(xiàng)目。
二面面試官可能會(huì)著重考察項(xiàng)目經(jīng)驗(yàn),系統(tǒng)設(shè)計(jì),同時(shí)對(duì)技術(shù)深度也會(huì)繼續(xù)考察。
三面面試官可能會(huì)從你把控過的項(xiàng)目規(guī)模、帶的團(tuán)隊(duì)規(guī)模、團(tuán)隊(duì)管理能力、規(guī)范和流程設(shè)計(jì)能力、整體工作履歷背景和經(jīng)驗(yàn)、軟素質(zhì)(溝通表達(dá)、團(tuán)隊(duì)協(xié)作、價(jià)值觀,等等)來考察你。
上面說的只是一種分法,一個(gè)公司內(nèi)的不同團(tuán)隊(duì)的分工可能是不一樣的。
也有的可能是一二面都是考察技術(shù)面和技術(shù)深度,不涉及項(xiàng)目,三面來考察你的項(xiàng)目經(jīng)驗(yàn),四面來考察你的一些綜合素質(zhì)。
或者可能你面的職位很高,比如是總架構(gòu)師之類的職位,也許還有CTO或者技術(shù)VP出來面試你第五輪。
但是不管如何分,整體考察的內(nèi)容都是上面的那套東西以及那個(gè)流程和過程。