歡迎關注個人公眾號:石杉的架構筆記(ID:shishan100)
週一至週五早8點半!精品技術文章準時送上!
一、寫在前面
上一篇文章:網際網路公司的面試官是如何360°無死角考察候選人的?(上篇)
用一個面試連環炮引出了平時中大型網際網路公司的面試官是如何發問的。
緊接著從技術廣度、底層技術、技術深度幾個角度說了一下,我們一般是如何來考察候選人的技術。
本文是下篇,將會從專案經驗、系統設計、履歷/學歷/素質、候選人與崗位的匹配、多輪面試官的協作這些方面,繼續告訴大家,網際網路公司是如何全方位、無死角來考察候選人的。
二、專案經驗的考察
專案經驗,絕對是面試官必須考察的,很可能上來就是讓你先畫一下專案整體架構圖,說一下你們專案用了哪些技術以及核心的業務思路。
然後從專案入手,考察你專案裡各個技術掌握的如何,通過連環炮對你掌握最好的技術進行深入考察,對一些高階技術的考察,直接下探到底層。
舉個例子,如果你說你們公司裡用了dubbo作為服務框架,那麼會問問你dubbo底層的通訊框架是什麼?Netty?Mina?
然後再問問你底層的NIO是啥?網路通訊裡的長連線和短連線是啥?
你是否看過dubbo的原始碼?dubbo原始碼中你印象深刻的對併發技術的運用是什麼?
一些面試官喜歡從專案展開問各種技術,也有一些面試官上來直接從你簡歷上的技術開始發問,從技術深入到專案。這就看個人喜好了。
當然無論如何,最後總會聊到專案的一些業務細節,好的面試官會掌握一個原則:死扣細節。
提問時,必須要深入到你把某個業務細節講清楚,以及結合這個業務細節到底是如何落地和設計技術方案的,如何使用各種技術在業務中的。
比如說
● 你說你用了Redis,那就會進一步問你,你哪個業務用了Redis?那個業務的流程請你敘述一下?
● 在Redis裡你們具體是選用了哪種資料結構存放什麼資料?資料的過期時間是什麼?如果快取過期了,你的資料兜底方案是什麼,到哪兒去回查?
● 你的key如何設計的,為什麼要這麼設計?你的這個業務把資料放在了Redis裡,是其他哪個業務來查Redis?為什麼要這樣子做?如果不用Redis會怎麼樣?
這只是一個例子,實際上各種技術都可以在專案裡深扣細節。這就能考察出,你對這個技術的實踐到底有多深,經歷過多麼複雜的線上業務的實踐,能hold住一個技術解決線上系統中的哪些問題。
總之,從專案裡,我們可以看出你是否負責過複雜業務架構下的分散式系統的設計和開發?
你們的系統是否是線上高併發大流量高負載場景的挑戰,你是否經歷過這種技術挑戰?
你們的系統是否承載過億級別海量資料的儲存以及高效能讀寫的挑戰,你是否解決過這些問題?
此外,從專案考察中,還可以直接看出你的整體能力技術定位。你是僅僅負責過一個模組呢?還是負責過一個子系統?
或者是作為架構師負責過一個完整的專案群,帶過幾十人的團隊,設計過大規模複雜的系統架構?
所以說,你到底把控過什麼樣的專案,具備什麼樣的能力,從你負責過的專案裡,直接可以看出來。
如果你來面試的是中級的崗位,那麼可能我們覺得你技術整體ok,獨立負責過核心模組的開發,同時對各種技術都有一定的實踐經驗,就OK了。
如果你面的是高階/資深的崗位,那麼我們會看看你是否帶領一個小團隊獨立負責過一個有一定複雜度和難度的完整系統的架構設計和開發。
如果你面試的是架構師的崗位,那我們肯定是要求你在一個公司裡主導過很多人協作完成的大型而且複雜的專案群。
並且我們要求你對一個大型系統架構有深度的思考和整體的把控,而且這個專案要有足夠的技術挑戰,大使用者量、高併發、海量資料,等等。
因此,專案考察,是重中之重。很多同學平時積累了不少的技術學習,但是有一個很大的問題是,專案經驗和實踐太少。
這些同學可能確實沒經歷過複雜系統的架構設計的歷練,所以非常容易在專案經驗考察這塊出現問題,被面試官判定為技術不錯,但是經驗缺乏。
三、系統設計的考察
這個也是很多網際網路大廠的面試官,在考察一些高階工程師及以上的同學,喜歡發問的。
一般會用自己公司或者團隊裡的一些業務場景拿出來,或者是普遍性的一些業務場景,然後來問你如何針對這個業務場景設計系統架構?
舉幾個例子:
- 如何設計一個電商秒殺系統架構?
- 如何設計一個訊息推送系統架構?
- 雙11大促的時候如何設計系統的動態擴容/縮容的機制?
類似諸如此類的一些場景式的系統設計考察。其實這個主要是用一些你可能沒接觸過的場景,來現場考察一下你的架構設計思維。
尤其是針對上面說的高階/資深、架構類的崗位,我們尤其會注重現場考察你沒接觸過的業務場景的架構設計。
因為畢竟你來了以後,肯定要讓你接觸全新的業務,然後立馬給出合理而且靠譜的架構設計方案,在新的公司來落地你的經驗。
很多同學平時不太注意積累系統設計的能力,導致出去面試的時候,人家一問場景系統設計問題,直接發矇了。
所以,平時應該對公司裡各種業務場景多思考,自己設定一些挑戰,比如假設你公司的請求量暴增100倍,資料量暴增100倍,你的系統架構應該如何設計?
多給自己設立挑戰,然後去嘗試著思考設計,才能積累出系統設計的思維和能力來。
四、基本功的考察
很多大廠都會考察候選人的基本功,尤其是資料結構和演算法。比如現場手寫一些常見的演算法題。
很多同學很容易倒在基本功這塊,一些基礎的資料結構和演算法題都不會寫,那就是有點問題了。
這裡強調一下,這個東西並不是應屆生專用的,其實也代表了一個工程師,甚至一個架構師的基本技術素養問題。
因此建議大家平時還是要注重基本功的保持,平時寫寫演算法題,熟悉一下資料結構,能保持自己的技術素養不會掉落。
否則資料結構和演算法都不熟悉,對複雜系統的技術細節把控基本也就沒法做到,因為很多複雜分散式系統的原始碼裡,到處是自己寫的資料結構和複雜演算法。
五、履歷背景/學歷背景/過往經驗/綜合素質
最後一定會綜合看一下一個候選人整體的背景,比如你的履歷背景。
● 你過去是外包公司出身?還是傳統IT公司出身?或者是一些小型網際網路公司?或者是一二線大網際網路公司出身?
● 另外你的學歷如何?是大專?普通本科?211 / 985本科?普通碩士?211/985大學的碩士 or 博士?
● 你過去做的都是一些內部系統,比如OA系統,財務系統?或者都是C端系統,有上千萬使用者量的系統?或者你過去做的都是某種偏門的專案,比如爬蟲之類的?
● 你的溝通表達能力如何?性格是否踏實和nice,不浮躁?你是否有團隊協作精神?
這些綜合性的東西,其實都會在我們的整體考察範圍之內,都會納入考慮範圍內,最後決定要不要發offer。
六、候選人與崗位需求的匹配
其實按照上述流程考察下來以後,會經歷多輪面試,基本一次好的面試就可以綜合考察出一個候選人的完整情況了。
這個候選人的技術面是否完整,是否有幾個技術領域有足夠的深度?
候選人做過什麼樣的專案,專案的實踐經驗如何,把控過多大的團隊和多大的專案,
對全新業務場景的系統設計能力如何,基本功如何,綜合背景和素質如何。這些東西,基本上都可以很好的考察出來了。
此時就會將一個候選人跟崗位的需求進行匹配,比如說你要招聘的是一個資深Java的崗位,需要他過來開發的是公司裡較為核心的子系統。
然後呢,你公司的技術棧是dubbo、zk、kafka、redis,等等
你們公司每秒有上萬的併發訪問壓力,資料量一億以上,線上系統偶爾故障,比如高併發下zk突然報錯異常,導致系統業務中斷,然後需要帶4個初級和中級的兄弟一起開發。
這時,你考察完一個候選人,就知道他的技術能力是否匹配這個崗位,技術深度能否cover住線上系統常見的一些故障。
能否線上上故障的時候,立馬有足夠的原始碼功底分析、定位和解決問題。是否有過往類似足夠的高併發和海量資料的專案經驗。
是否帶過幾個人獨立把控過一個核心繫統的架構設計和開發,過去的公司背景咋樣,學歷咋樣,綜合素質咋樣。
這個候選人和崗位需求是否匹配,基本上就出來了。
七、多輪面試官的分工協作
上面列舉了大量的技術考察的內容,實際上很難說是一輪面試官直接完成的。
因此,一般我們都是分成多輪面試官協作考察。但是根據不同的公司,不同輪的面試官的職責會稍微有一些不一樣。
比如說一面面試官可能主要就是考察一下技術內容,包括技術面以及連環炮發問考察技術深度,以及演算法功底,不太涉及專案。
二面面試官可能會著重考察專案經驗,系統設計,同時對技術深度也會繼續考察。
三面面試官可能會從你把控過的專案規模、帶的團隊規模、團隊管理能力、規範和流程設計能力、整體工作履歷背景和經驗、軟素質(溝通表達、團隊協作、價值觀,等等)來考察你。
上面說的只是一種分法,一個公司內的不同團隊的分工可能是不一樣的。
也有的可能是一二面都是考察技術面和技術深度,不涉及專案,三面來考察你的專案經驗,四面來考察你的一些綜合素質。
或者可能你面的職位很高,比如是總架構師之類的職位,也許還有CTO或者技術VP出來面試你第五輪。
但是不管如何分,整體考察的內容都是上面的那套東西以及那個流程和過程。
八、Java進階面試系列的開始
下一篇文章,我們就開始以連載的形式,跟大家聊聊中大型網際網路公司Java面試時高頻考察的技術點以及相關的面試技巧。
敬請期待:
《哥們,你們的系統架構中為什麼要引入訊息中介軟體呢?》
《哥們,那你說說系統架構引入訊息中介軟體有什麼缺點?》
END
如有收穫,請幫忙轉發,您的鼓勵是作者最大的動力,謝謝!
一大波微服務、分散式、高併發、高可用的原創系列文章正在路上
歡迎掃描下方二維碼,持續關注:
石杉的架構筆記(id:shishan100)
十餘年BAT架構經驗傾囊相授
推薦閱讀:2、【雙11狂歡的背後】微服務註冊中心如何承載大型系統的千萬級訪問?
3、【效能優化之道】每秒上萬併發下的Spring Cloud引數優化實戰
6、大規模叢集下Hadoop NameNode如何承載每秒上千次的高併發訪問
7、【效能優化的祕密】Hadoop如何將TB級大檔案的上傳效能優化上百倍
8、拜託,面試請不要再問我TCC分散式事務的實現原理坑爹呀!
9、【坑爹呀!】最終一致性分散式事務如何保障實際生產中99.99%高可用?
11、【眼前一亮!】看Hadoop底層演算法如何優雅的將大規模叢集效能提升10倍以上?
16、億級流量系統架構之如何設計全鏈路99.99%高可用架構
18、大白話聊聊Java併發面試問題之volatile到底是什麼?
19、大白話聊聊Java併發面試問題之Java 8如何優化CAS效能?
20、大白話聊聊Java併發面試問題之談談你對AQS的理解?
21、大白話聊聊Java併發面試問題之公平鎖與非公平鎖是啥?