做者: 連城 來源: 程序員雜誌 發佈時間: 2017-11-22 14:28 閱讀: 20460 次 推薦: 33 [收藏] 程序員
摘要:技術招聘也是技術活。上下求索的不僅是應聘者,面試官也一樣絞盡腦汁。在本文中,做者前後回顧了身爲應聘者和麪試官兩種角色的經歷,帶你一瞥國內外技術招聘的那些事兒。面試
原文發佈於2013年算法
年初加州求職不利,撰文《加州求職記》一篇,蒙列位看官擡愛,短短兩天時間點擊量破萬。以後,收到《程序員》雜誌編輯的約稿郵件,詢問可否結合既往的招聘經歷寫一寫國內外招聘的異同點。畢業至今,除去年初嘗試的Google、Amazon、Facebook三大公司,身爲應聘者參加的正式招聘面試就只有多年前加入百度的那次而已。相較之下,在百度作了兩年招聘,身爲面試官的經驗反卻是豐富多了。思忖了一下便應了下來,打算結合我的經歷寫寫招聘面試這檔事。須要說明的是,這裏記述的只是我的的一些經驗,不具有通用性。文中面試官角度的意見不能表明百度乃至國內IT企業的廣泛特色;一樣,做爲應聘者的意見也沒法表明灣區大公司的廣泛特色。編程
面試官的心思網絡
招聘面試,就是面試官和應聘者之間的溝通和過招。一般狀況下,在面試中佔據主動地位的都是面試官。應聘者可否經過面試,便取決於可否在幾十分鐘內證實本身具有面試官所表明的組織須要的素質。俗話說知己知彼方能百戰不殆,面試官大人們都在想什麼呢?他們但願看到的素質,大致可分爲軟硬兩類。數據結構
所謂硬素質,就是算法、數據結構、程序語言等基礎技能及體系結構、操做系統、網絡、數據挖掘、分佈式系統等細分專業方向技能的掌握狀況。硬素質之因此謂「硬」,便在於這些素質出題一考便知,應聘者基本上沒有矇混過關的可能。編輯器
所謂軟素質,是那些虛無縹緲,難以經過普通考題判斷出來的東西,如學習能力、抗壓能力、溝通能力、邏輯思惟能力、價值觀取向等。這一羅列,是否是很眼熟?分佈式
很多應聘者都會在簡歷中加上「自我評價」一欄,其中列上「學習能力優秀」、「抗壓能力良好」、「溝通能力佳」、「邏輯思惟能力強」,我剛畢業時也未能免俗。 其實呢,這幾句話寫了也是白寫:什麼也證實不了,空佔篇幅,甚至還可能會起反效果。簡歷上仍是寫些實打實的東西爲好,軟素質不妨在合適的時機經過推薦信等方式表達,或者乾脆留待面試時交由面試官親自考察。函數
不難想象,軟素質比硬素質要更難考察,甚至多少有點「跟着感受走」的意思。很多面試官都不擅長考察軟素質,新手尤甚。邏輯思惟能力和溝通能力倒還好說,面試時看你反應夠不夠快,說話有沒有條理,基本上能給出比較靠譜的評價。這學習能力、抗壓 能力、價值觀之類的怎麼考?說穿了就是三個字:挖細節。工具
誠然,判斷一我的的軟素質,每每須要長期的相處和觀察。但咱們最終的判斷依據,其實是發生在這我的身上的各類典型事例。所以,只要能在面試中讓應聘者給出足以證實本身某種/某些軟素質的事例,即可以達到考察的目的。而事例的真實性,即是經過挖掘細節來保證的——若是是瞎編的經歷,最終多半會支支吾吾語焉不詳。
剛當面試官時,曾經碰到這麼一個反面案例。當時是一場社招面試,來應聘的是個剛工做不久的小夥子。起先我對他的評價挺好。後來,在敘述項目經歷時,他提到本身曾經作過一套系統,而我恰好有相似系統的經驗,便產生了 興趣,興致勃勃地接連問了幾個該系統設計思路和實現細節相關的問題。
沒想到幾個問題下來,他愈加緊張,最後忽然紅着臉說:「對不起,其實我沒作過這套系統,只是爲了豐富項目經驗而虛構了一個,但實在編不下去了……」當時我實際上還不知道這種方法,只是一時興起不斷追問細節才讓他露了馬腳。後來,在參加校招面試時從公司組織的面試官培訓中才學到了這招,學名喚做「STAR面試法」,專用於軟素質考察,感興趣的讀者不妨搜上一搜。
強攻硬取闖灣區
就我的經驗而言,灣區大公司的面試考察點偏硬,面試官出招廣泛剛猛有力,沒有點鐵布衫之類的硬功夫還真是招架不住。這點突出體如今面試中的編程題上。
在四十五分鐘到一個小時的面試中,根據應聘者的解題速度,面試官會拋出一至三個問題,應聘者不只要迅速想出解題思路,還要在紙上或白板上寫出完整且無錯的代碼(電話面試時則經過Google Docs、CollabEdit等在線協同編輯器,少數狀況下也會讓應聘者直接在電話裏「說」代碼)。所以,有ACM背景的應聘者會佔據很大的優點。
相對於大部分國內IT公司的面試,這個要求仍是至關嚴格的。不過,面試畢竟不是競賽,相對於難度,考題的區分度才更爲關鍵。因此這些編程題的難度廣泛不高, 離ACM/ICPC競賽題相去甚遠。打個不恰當的比方,灣區大公司的面試多少有點兒像考研,都是書本上的知識點,就看考生掌握得扎不紮實。
在年初的兩場面試中,我在解題時分別用到了C++標準庫中的binary_search和partition,因而兩位面試官分別要求我寫出這兩個函數的完 整實現。這兩個算法可謂人盡皆知,就看你理解得是否透徹,邊界狀況處理得是否乾淨利落了。年初的面試經歷已在《加州求職記》中詳述,此處就再也不贅述了。
灣區大公司的面試固然也不是隻玩兒硬的,軟素質考察通常交由HR以及專門的「behavioral interview」負責。不過整體來講,灣區大公司技術職位的這類軟素質類面試的套路仍是比較明顯的,在Google上搜一下「60 behavioral interview questions」,很容易找到竅門。應聘者須要作的就是在面試前將簡歷中列出的各類項目經歷的背景拾掇清楚,以求在面試中作到簡明扼要、實事求是、恰如其分,博得面試官的青睞。
一開始,我對灣區大公司的這種面試風格是持有異議的。畢竟實際工做中沒人會要求你在不借助調試器等工具的狀況下一次性編碼成功。並且,競賽型算法題的代碼和工業界的代碼徹底就是兩種套路(在工業界幹過幾年的前ACM選手應該很是有體會)。
但反過來一想,周圍能達到這個水準的,無一不是牛人、聰明人。再者這種考法對就是對錯就是錯,高度統一,易於斷定,在大規模面試中更利於統一面試官的評判標準,從而達到嚴格把關面試質量的目的。固然,它的缺點也比較明顯,好比對軟素質考察不足,應聘者自由發揮餘地較小,很難看出應聘者創造性的一面等。此外, 因爲算法題的代碼風格和工業代碼風格迥異,這類面試也較難評判應聘者在實際工做中的表現。
須要強調的是,我年初參加的只是普通技術職位的面試,觀察到的內容十分有限。上述結論徹底基於我的經驗,很難說有多少通用性。
剛柔並濟戰中關
反觀當年本身操心招聘那些事兒的時候,我和同爲面試官的同事們在面試中更爲關注的則是軟素質以及實際工做能力——尤爲是社招。
咱們一直信奉的一點是,只要能達到咱們的基本要求,應聘者的技術能力等硬素質是比較容易培養和鍛鍊的,而溝通能力、學習能力、邏輯思惟能力、抗壓能力等軟素質則相對較難培養。至於看中實際工做能力,那固然是由於但願應聘者入職後能儘快投入戰鬥。
本着這樣的原則,我在面試中通常會交叉運用如下三種方式進行考察。
1. 聊項目經驗。
2. 出較簡單的基礎試題。
3. 出較困難的漸進開放型試題。
對校招面試,因爲應屆生的項目經驗每每比較單薄,可挖掘點很少,主要採用第二種和第三種;對社招面試,則三種並用。
聊過往項目經驗是個很好的軟素質考察手段。在這個過程當中,每每能夠捕捉到不少值得深度挖掘的典型案例。我通常喜歡讓候選人挑過往經歷中最爲困難或最爲得意的一個項目來說。在候選人的敘述過程當中,我會不斷要求對方補充各類細節,例如關鍵設計背後的決策過程,難點攻堅過程當中作過哪些嘗試,尋求過哪些幫助,參考過哪些資料,團隊在項目中碰到過哪些問題,諸如此類,不一而足。
經過深刻挖掘這些問題,應聘者的形象也會迅速豐滿起來。例如,有些應聘者會在設計階段多方嘗試,或是在認爲團隊走入歧途時主動大聲疾呼,也有人會由於「上面要求這麼搞」而放棄原則消極聽從。孰優孰劣,一目瞭然。
聊完項目經驗,應聘者的緊張情緒也基本平緩下來,這時就能夠拿出一兩道基礎試題小試牛刀。基礎試題的形式和做用與灣區大公司採用的編程題相似,但通常不要求寫出完整代碼。它的做用在於快速判斷應聘者的基本能力,進而決定後續的面試節奏和時長。
若是應聘者能夠比較順暢地給出解答,那麼即可以進入下一個環節。反之,若是應聘者給出的答案錯得離譜,或者幾經提示仍然沒有絲毫進展,那麼也就不太必要進行後續的面試了。
漸進開放型試題主要用於考察邏輯思惟能力和溝通能力。這類試題難度較大,且不必定有惟一的標準答案,可逐層發散,通常不期望應聘者能獨立給出完整解答。出難題顯然是要給應聘者設置障礙,但最終目的毫不是將應聘者難倒。這裏是在考察應聘者在面對困難問題時可否對問題進行恰當的分解,可否在一團亂麻中找出最早要解決的問題,可否將直接阻擋本身前進的障礙清楚地描述出來,是否勇於、善於提問,以及在獲得提示以後,可否迅速運用提示中的線索翻越障礙。
若是應聘者在拿到題目以後由於沒有頭緒而不知所措,我便會向他解釋這類試題的用意,鼓勵他不要擔憂一時沒有頭緒,儘管大膽地和我交流本身當前的思路並尋求幫助。因而,在這類試題的考察中,氣氛每每會更趨向於討論而不是面試。這樣一來,應聘者會更爲放鬆,我做爲面試官也得以更爲準確地評判應聘者的溝通能力和邏輯思惟能力,候選人最終找出答案後本身也會有成就感。某次社招面試中,曾經有一個沒有什麼分佈式系統背景的小夥兒,在這樣的討論中自行總結出了CAP原理,讓我非常驚喜。
還有一次校園招聘,我讓候選人改進他本身的一個項目中的客戶端自動升級機制,來回溝通了幾回以後候選人思路泉涌,很快畫出了若干種更加合理的設計。事實證實,在面試中能有相似表現的應聘者,多半都能成爲中流砥柱。
這套路數看似剛柔並濟、滴水不漏,卻也有它的命門:那就是面試標準過於模糊,難以統一。若是組織不大,面試官人數少且精,倒還好說。假若是員工數破萬的大公司,那就很難保證全部部門、全部面試官的面試標準了。在百度時,整個招聘過程還會輔以各類流程措施和規範,以期儘可能彌合面試官之間的個體差別。這個問題要是解決不到位,其危害對校園招聘這種集中式大規模招聘活動是十分致命的。
伯樂的賭局
面試的最後一個環節十分敏感,那就是決定候選人是否經過面試。哪一匹纔是千里馬?這是伯樂們永恆的賭局。百度的面試是5分制,3分以上經過,2分如下不經過。有些面試官——尤爲是新面試官——比較「仁慈」,對於一些落在及格線上的候選人總會很糾結,最後給出一個2.5分。一旦出現2.5分的候選人,咱們就會問面試官一個問題:把這我的放到你的團隊,你要不要?【注:百度的面試每每由不一樣團隊的面試官交叉進行,每一個面試官都常常對其餘團隊的候選人進行面試。】若是回答是確定的,那麼咱們便再安排一輪面試繼續考察,不然便終止面試流程。
「2.5候選人」分兩種,第一種雖然就答題狀況來看勉強能夠經過,但就是給人的感受不太舒服,或者說第一印象不夠好。這其實是候選人可能存在軟素質問題的一個警鐘。若是面試官本人不指望這個候選人加入本身的團隊,那麼其餘團隊負責人多半也不肯意。這個判斷看似過於嚴苛,但其背後倒是歷往慘痛經驗的總結。
另外一種則更爲有趣,這類候選人雖然答題狀況通常,但仍然讓人想要給他一個機會。我就曾經碰到這樣一個案例。當時我是二面面試官,一面面試官十分糾結,最後給出面試結果是2.5。我問他,給你,你要不?沒想到他絕不猶豫地說「要」,因而我便決定對這名候選人進行二面。候選人挺年輕,雙臂還刺着紋身,讓我着實印象深入。不過面試過程當中,發現這個小夥兒對技術頗有熱情,很是有幹勁,頭腦也比較靈活。實際上他就是上面提到的在後續的面試過程當中獨立總結出了CAP原理的那個候選人。後來這個「2.5候選 人」果真沒有讓人失望,成長迅速,很快就成了骨幹。因此說,面試這檔事,不管對應聘者仍是面試官,都是個碰運氣的事兒。
關於招聘面試的文章一抓一大把,不過同時站在兩個角色上進行總結的彷佛很少。但願個人這點片面的經驗能給你帶來一些啓發和幫助。