天天看點

在公司裡寫代碼天天摸魚偷懶,出去面試又該怎麼寫履歷?

一、寫在前面

上一篇文章:《工作10年我面試過上百個程式員,真想對他們說…》

用一個面試連環炮引出了平時中大型網際網路公司的面試官是如何發問的。

緊接着從技術廣度、底層技術、技術深度幾個角度說了一下,我們一般是如何來考察候選人的技術。

本文是下篇,将會從項目經驗、系統設計、履曆/學曆/素質、候選人與崗位的比對、多輪面試官的協作這些方面,繼續告訴大家,網際網路公司是如何全方位、無死角來考察候選人的。

二、項目經驗的考察

項目經驗,絕對是面試官必須考察的,很可能上來就是讓你先畫一下項目整體架構圖,說一下你們項目用了哪些技術以及核心的業務思路。

然後從項目入手,考察你項目裡各個技術掌握的如何,通過連環炮對你掌握最好的技術進行深入考察,對一些高階技術的考察,直接下探到底層。

舉個例子,如果你說你們公司裡用了dubbo作為服務架構,那麼會問問你dubbo底層的通信架構是什麼?Netty?Mina?

然後再問問你底層的NIO是啥?網絡通信裡的長連接配接和短連接配接是啥?

你是否看過dubbo的源碼?dubbo源碼中你印象深刻的對并發技術的運用是什麼?

一些面試官喜歡從項目展開問各種技術,也有一些面試官上來直接從你履歷上的技術開始發問,從技術深入到項目。這就看個人喜好了。

當然無論如何,最後總會聊到項目的一些業務細節,好的面試官會掌握一個原則:死扣細節。

提問時,必須要深入到你把某個業務細節講清楚,以及結合這個業務細節到底是如何落地和設計技術方案的,如何使用各種技術在業務中的。

在公司裡寫代碼天天摸魚偷懶,出去面試又該怎麼寫履歷?

這隻是一個例子,實際上各種技術都可以在項目裡深扣細節。這就能考察出,你對這個技術的實踐到底有多深,經曆過多麼複雜的線上業務的實踐,能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出來面試你第五輪。

但是不管如何分,整體考察的内容都是上面的那套東西以及那個流程和過程。