簡單介紹下背景,我司是北美一大型互聯網公司,每一年九、10月份都會在一些高校招開發的實習生,但選拔標準和正式員工標準已經差很少了,通過實習後,很大機率會拿Return Offer。今年我第一次參加了家附近一所大學的實習生招聘,這是一所美國Top 10的知名大學,我是第一輪校園的面試官之一,此次校園招聘對我來講也是一次可貴的體驗,在周筠老師的建議下把這個過程寫下來記錄一下。css
首先HR在 Piazza.com 、Career Fair 等校園招聘網絡平臺上發佈招聘信息,也會在內部讓員工們推薦(推薦成功被錄用有不菲的獎勵),先一撥人到校園開宣講會,面對面答疑,這個環節沒參加,據之前參加過的同事說很是辛苦,得站一天,不停的回答各類問題。前端
而後HR會收集簡歷,初步篩選後,通知經過在同一天到大學的就業中心進行第一輪面試。整個面試過程從早到晚一成天時間,每一個候選人面試一次,一次55分鐘,每一個面試官當天要面試6我的左右,一小時一個。python
這一輪面試很關鍵,經過了會安排後續面試,沒經過就沒有機會,固然相對來講標準也會略微低一點,以避免錯過一些好的苗子。git
在首輪面試結束後,HR會給經過的候選人郵件和電話通知,安排下一波的面試,後面一波面試通常會直接安排在學校最近的公司分部辦公室,連續3輪,每輪1-2人,一次也是55分鐘。面試官通常來自不一樣部門不一樣角色,其中有專業技術人員,有目標崗位的經理,還有不一樣崗位的人會一塊兒參與,因此面試技術崗位,面試官也可能會是產品設計、市場的人。這些面試官其中有一個最重要的角色叫Bar Raiser,這我的要負責肯定候選人最終的面試結果。github
在全部面試結束後,HR會安排全部參與過這個候選人面試的面試官一塊兒開一個Debrief會議,最終Bar Raiser決定是否錄用。若是錄用的話,HR根據崗位和工做經驗評級以及肯定待遇,最終將結果通知到候選人。web
面試結束後,全部面試官都要給面試人打分,打分會分紅四檔:面試
根據你們打分的結果,Bar Raiser在Debrief會議上要組織你們一塊兒討論,基本原則是這樣的:算法
最終Bar Raiser會綜合你們意見來作出最終決定。sql
每一個面試官都會有本身的面試風格,一般來說個人面試風格是這樣的:編程
先提早5-10分鐘閱讀一下候選人的簡歷,對於簡歷提到的內容在網上查詢覈實一下,若是有github連接,是必定會去看看上面的項目和代碼,有linkin連接也會大概看看,有個大體印象。
見面後,首先會簡單自我介紹一下,讓對方對個人身份和角色有個簡單瞭解,也適當緩和一下緊張氣氛。我比較傾向於營造一個輕鬆的面試氛圍,讓面試人有機會充分發揮出他擅長的部分,經過觀察瞭解他擅長和突出的部分是否是跟我想要的匹配。有的面試官和我偏偏相反,喜歡給候選人很大壓力,觀察候選人在壓力下的反應。
自我介紹完後會讓對方開始簡要介紹本身和項目經歷,對於介紹的項目內容會適時打斷詢問一些細節,我須要經過對這些細節的提問,去核實候選人在簡歷上寫的和講述的內容是否真實,瞭解候選人在項目中擔任的角色,在遇到問題時是怎麼解決的,溝通能力如何。
除了項目以外,還會拉拉家常,問問他平常感興趣的事情,看候選人是否是屬於那種對技術真的有激情的,好比業餘時間還寫寫開源程序的確定是有加分的。這個過程會持續15-20分鐘左右,基本上會對各方面有個大體瞭解:技能是否是和目標崗位匹配,是否是適合團隊合做,是否是對技術有持續熱愛,有沒有成長潛力,是被動仍是主動工做。
面試技術崗,代碼能力是相當重要的,甭管說的多溜多牛逼,仍是得show me the code,因此接下來的環節就是代碼測試,題目的難易度有時候是和前面相關的,若是前面聊的好,可能會相對容易一點,不想誤傷;若是以爲不靠譜,可能會直接上來一道很難的,這樣結果就不容易有爭議。此次校園面試我只是準備了一道介於Easy到Medium難度之間的題,不算複雜,作對也須要一點基礎。
一般每一個面試官都有幾道本身喜歡的面試題,從簡單到複雜的都有,甚至是一環接一環的,先一道容易的,作出來給你加點條件繼續。一般咱們代碼測試都是基於CodePad,能夠方便的把題目要求寫在上面,支持多種語言,能夠實時編譯和查看運行結果。也有同事喜歡用白板的。我此次直接選了用Leetcode,不只能夠像CodePad同樣在線運行調試代碼,還有不少test cases幫助驗證代碼正確。我通常給這個階段會安排30~40分鐘,作的過程當中會有一些溝通,必要的時候給一些提示和指導,若是到時間沒作出來,那麼很遺憾恐怕是沒辦法經過的,若是作出來後,還會問一些後續問題,在這個過程當中能夠觀察候選人寫代碼的熟悉程度,解決問題的方式方法。
最後我通常會預留5分鐘左右時間給候選人提一些問題,這也是個很好的互動過程,畢竟面試是雙向的,公司在選擇候選人,候選人也在選公司,能夠經過這種方式讓候選人對公司和將來可能的工做環境有更多瞭解。
如前面所述,每一個面試官都有本身的風格,以上僅表明我的。
給我分配的有6個候選人,都是剛上大三的學生,從9點開始,上午三個,下午三個,中午休息一小時順便寫上午的總結,每一個面試官都有單獨的一間會議室,條件不錯,有白板、投影和WIFI。
0號候選人爽約了,因而我有了一個小時的休息時間,趁這時間解決了個bug,順便把剩下的候選人簡歷又都看了一遍。
第1號候選人簡歷很好看,有個用GitHub的Pages作的,網頁作的挺漂亮的,css動效也很酷。美國本土出生的小孩,從初中畢業就開始本身寫App,軟件硬件項目都有涉獵,大二暑假就有實習經歷,還參加了各類俱樂部,github上還有個C++ 項目,代碼不算多,但也還算工整。
在聊的過程當中,發現小夥子很健談,也展現出他興趣的普遍。我特別問了他github的項目,這是他參加一個機器人項目的副產品。另外我也對他的我的網頁表示了很大的確定,捎帶着諮詢了他一些CSS和js細節,但發現其實用的是現成的模板,對細節並非很瞭解。因此說簡歷包裝的太好,也不見得是好事,會擡高面試官指望,若是沒有與之匹配的實力,反而容易造成落差。
前面20分鐘聊下來,感受這哥們屬於興趣普遍,但不算太專一,善於溝通。可能更適合作PM之類的崗位,感受不像那種能沉下心來鑽研技術的那種。從崗位匹配的狀況來看我以爲不算特別合適。
無論怎麼說仍是看看代碼測試的結果吧。打開leetcode,把題目介紹了一遍後,1號候選人立刻就有了思路,因而拿上紙和筆給我分析和講思路,並寫了僞代碼實現,給個人感受是應該是之前刷過這題,以及有過一些針對面試的套路培訓。接下來就是代碼實現,選擇了他熟悉的C++,很快就把代碼實現了,從寫代碼的熟練程度來看,看的出仍是有必定代碼量的,代碼格式有點亂。代碼第一次運行沒法編譯經過,好像是API有些不同,C++我是真一點不懂,幫不上,因此建議他直接Google,很快就找到了答案,可是有幾個測試沒經過,幾回修正後順利經過全部測試。預計花了30分鐘時間,若是之前沒作過的話,這個成績仍是不錯的,若是作過的話只能說通常,可是作沒作過並很差考證。
繼續問follow up問題,回答的也不錯,最後問他有沒有問題須要問個人,他問了我司同事間人際關係如何,他以前實習的公司人際關係很複雜。這點我司到仍是不錯的,給他解答一番後他也比較滿意。
總體面試下來,雖然我感受他題目他刷過,可是綜合來說代碼水平還行,只能說他運氣不錯,並且這畢竟是第一輪面試,我這邊經過了,他後面可不必定這麼好運氣都能遇到作過的題。因此最終仍是給了經過。
從簡歷看,2號候選人是個學霸,從印度考過來的,GPA 3.9+,要知道學校牛的話拿高GPA挺難的。上大學前就開始利用假期實習作項目了,算下來如今大三都有三年項目經歷了,在學校也跟着導師有作一些項目。
2號候選人給我介紹了一些他的項目經歷,其中有些web前端的,有些是後端的,暑假實習的一個項目是基於MEAN架構(MongoDB Express Angularjs Node)的,都是他本身邊學邊搭建的,詢問了一些技術細節,基本能夠印證他說的仍是挺靠譜的。爲了考察他知識面,讓他講了一下MongoDB和Mysql的區別,關鍵點講的挺到位,很明顯平時比較注意積累這些方面知識,做爲大學生來講很不錯了。
聊下來給我感受很是不錯,屬於那種作事情比較專一和認真、也勤奮努力的,這種人才挺很少見的,若是沒看走眼的話,應該屬於那種給一個任務,稍微指導就能夠有個不錯結果的,幾年下來能成長爲團隊核心。
接下來是代碼測試,一樣的技術題,在搞明白意思後也沒有多廢話,直接開始寫代碼,實現比較中規中矩,但對語言熟練程度不錯,一看就是有寫過不少代碼行經驗的,代碼格式不是太注意。第一遍寫完,結果提交到LeetCode後,有幾個test cases失敗了,發現是有些邊界條件沒有判斷清楚,幾個來回後,幾乎沒有太多提示,就把修復了全部問題,經過了全部測試用例。用了大約30分鐘。而後我又花了大約5分鐘時間問了一些follow up的問題,也答的不錯。
最後留了大約5分鐘給他問一些問題,他很感興趣咱們平常工做內容是什麼?對於這種人才我確定是要費心讓他有機會加入的,否則就被別的公司搶走了!因而我給他詳細講了一下今年暑假咱們組實習生平常的工做,以及咱們是怎麼幫助她成長的。
最後結果固然是經過,很是不錯的候選人。
3號候選人的簡歷也不錯,從國內考過來的,大一暑假就開始實習,大二暑假也都在實習,上學期間當助教,有個漂亮的我的主頁,把他全部的項目都列上去了,看着很可觀。最讓我印象深入仍是在App Store有個能夠下載的App,GitHub上有幾個活躍的項目。
在給我介紹他項目經歷的時候,我重點問了下他App Store上的項目,他跟我說他上學期間,發現學校的網站很難用,因而他就本身把數據扒了下來,作成了iOS和Apple Watch的App,一共有4500多的下載,大量的好評。爲了覈實這項目確實是他本身完成的,我提問了一些技術細節,例如他如何抓數據,和如何實現登陸的,他給我解釋完了後,順便說了下全部代碼都提交到了github上,因而我立刻打開了對應的GitHub Repo看了下,兩年來一共280多個commit,代碼細節和他描述的徹底吻合。
前期的溝通結果我很是滿意,我我的是特別喜歡這種類型開發人員的:善於發現問題,本身動手解決問題,善於自學和樂於分享。前期的溝通是有不少主觀色彩在裏面的,無論喜歡仍是不喜歡,最終招過來仍是要看能不能寫代碼,能不能完成平常工做,因此代碼測試都是必不可少的。
在瞭解清楚題目意思後,也沒有太多廢話,直接就開始寫代碼了,我原覺得他會選擇Swift或者OC,沒想到是用的Python,並且還挺熟練的。代碼也算是中規中矩,邏輯清楚,可是在一些邊界條件上有些欠缺,短期內沒能本身搞定,因而給了一些提示,在提示下很快解決了。問了一些follow up的問題,也答覆的不錯。
從代碼面試的結果看,也暴露出3號候選人的一點問題,就是代碼經驗是偏向平常實際項目的,對於基礎性的,尤爲是面試方面的訓練偏少一些。並非說他的代碼能力有問題,工做中的代碼他確定能夠完成的不錯,但在面試代碼測試會比較吃虧,我甚至有點擔憂他後續面試會不會遇到不會作的題目而不能經過,那就太惋惜了。
最後提問環節,他問了我以爲在平常工做中最好的部分是什麼?我告訴他在我司工做最好的部分就是你寫的程序,天天全世界都有好多人在用你的產品,這足夠激動人心了。我順便問了他一下畢業的打算,他說還沒想好是工做仍是考研,我從一個過來人角度建議他畢業後仍是先去工做幾年比較好,而後再決定要不要上研,感受他畢竟不像那種科研型的,更適合到大公司去歷練歷練。
最後結果固然也是經過,這種雖然面試經驗不足但動手能力強的候選人,其實偏偏是面試中容易被誤傷和忽視的,不少leetcode刷的爛熟的在實際工做中多半沒這種好使。
4號候選人學習也不錯,GPA 3.8,在Machine Learning和軟件開發都有經驗,美國本土孩子,大一暑假就開始創業作項目賺錢,大二暑假在一個醫療中心實習,這學期開始在學校當助教。
他在Machine Learning和軟件開發兩個領域都挺感興趣的,我問他對哪一個更有興趣一點,他也是有點糾結。在介紹項目的時候,我對他給醫療中心作的項目很感興趣,問了一些項目上的細節,討論了一下若是項目的需求發生特定變動時,他的設計會如何修改,總體上回答的仍是不錯的。對於這些有實際項目經驗,而且認真完成項目的都都是感受不錯的。
接下來是代碼測試部分,咱們花了一點時間在理解題目意思上,多是我沒表達清楚,但在動手前搞清楚問題絕對是一個值得確定的事情。也是選的python,一樣的沒有太多廢話,開始動手編碼,代碼熟練程度絕對是能夠的,代碼風格偏向快猛糙一點,代碼邏輯我一時之間沒太能理解,不過先看看運行結果再說,運行後有幾個測試用例跑不過去,因而他開始加上一些特殊邏輯的處理,但很快又發現有其餘邊緣條件須要考慮,因而添加了更多代碼,並跟我解釋,我表示能夠先把代碼跑起來,後面還能夠優化。可是時間開始愈來愈少,有點着急了,而我對他的邏輯還沒能徹底理解,嘗試幫助他一塊兒分析一下,沒想到反而是在添亂。而時間更少了,但我以爲他應該有能力本身搞定,因此就讓他不要着急,我能夠多給他一點時間,最後花了將近40分鐘時間,仍是沒能解決,我以爲也不必繼續了,因而咱們先結束了編碼。
每兩個面試之間,我有5分鐘休息時間,已經快到下一個面試的時間了,但我以爲仍是應該把這個時間給他問他有沒有什麼能夠問的,他問了咱們通常平常工做是什麼樣的?這是個挺好的問題,因而我給他大概描述了一下平常工做的內容,由於他也學過一些敏捷開發項目管理的知識,因此也給他講了下咱們平常如何使用敏捷開發的。這個溝經過程還挺不錯,在下一個面試開始前1分鐘結束了整個面試。
從他寫代碼的過程來看,他代碼能力仍是不錯的,對Python很熟悉,面試過程可能仍是有些緊張影響了發揮,若是是平時應該是能夠作出來的。我甚至以爲他應該是比1號候選人要更合適一些,願意給他一個機會。但代碼沒完成仍是硬傷,我有些糾結,因而決定看看最後一個面試的結果再最終決定。
5號候選人是個ABC,大學裏拿了很多獎,大一大二暑假都在實習,還有幾個我的項目,在Github上能夠看到記錄,可是不少都是Private的無法查看,有Web和iOS開發經驗。
在向我描述項目經驗的時候,他重點介紹了正在作的我的項目,是一個跨平臺的移動App,基於React Native來寫的,正好React我也比較熟悉,就問了一下他React和Redux的關係,如何用Redux管理state,沒想到他解釋的很是清楚,這讓我很意外,由於這個問題其實不少有幾年工做經驗的前端開發人員都不必定搞的清楚。接下來他又談到由於他在作App時遇到產品設計和UI設計上的一些問題,因此前不久開始學習產品設計和UI設計相關的知識。由於正好他作的事情我都很熟悉,因此聊的很投緣,時間還超了一點。
從聊的過程當中,我能感受到這是一個很是聰明的人,動手能力強,同時興趣也普遍,不只本身搞定代碼,還會去嘗試學習設計領域。但這也讓我隱隱有些擔憂,由於若是興趣轉移快,容易分心,不夠專一,那麼即便很聰明,也可能會作事情很隨性,到頭來什麼都會,卻什麼都不精。
在搞明白題目要求後,他立刻開始寫代碼,選的是Javascript,邏輯清晰,代碼規範很好,縮進空行對齊都剛恰好,讓我這個有點代碼規範強迫症的看了一天糟糕的代碼規範後瞬間舒服了不少。他先實現了個簡單邏輯,簡單測試沒問題後,接着實現了完整的邏輯,代碼很是簡潔清晰,來回兩三次就經過了所有測試,整個過程估計15分鐘到20分鐘,很是高效。
對於代碼測試的結果我很是滿意,這是我當面面試最好的一個,接近完美了,也打消了我前面的一絲疑慮,以爲這種真正聰明的人,屬於徹底有超出常人精力和智力去搞定這些事情的。我以爲也不必繼續其餘的代碼測試,簡單的問了一下follow up問題,而後把剩下時間留給他看有沒有什麼問題的。
他也問了下咱們平時平常的工做是怎樣的,跟2號候選人的回答差很少,我給他講了下咱們暑期實習生的平常工做,以及她暑期實習得到的成長。由於時間很充裕,因此他又接着問了一個在咱們公司工做和生活平衡性的問題,看得出他還比較注意工做和生活的平衡,這個問題我並無一味吹噓咱們公司多好,而是從我我的平常工做的狀況客觀描述了一下,好的方面,例如咱們平常能夠根據須要Work From Home,對我這種能夠節約大量路上的時間,很差的方面例如咱們也會有oncall,有時候半夜會被生產環境故障的報警電話叫醒,可是輪班制的,因此整體仍是不錯的。同時我也給他委婉建議了一下,前期能夠多專一一些,精力不要太分散,一些事情能夠需求別人的幫助完成。
對於5號候選人,我給了全天全部候選人裏最高的面試評價,同時也最終決定4號候選人是不經過,只能說運氣差了點。
此次校招的面試,我一共面了6我的(算上一個缺席的),最終經過了4個,經過比例還算比較高的,這也有些緣由:
在拿到各個候選人最終結果彙總後,我必須得認可個人同事們都很厲害,從不少不一樣角度看到了我面試時沒發現的問題。個人不少面試結論更多來源於一種靠經驗積累獲得的直覺,雖然個人直覺仍是比較可靠的,可是在Debrief會議上並很差表達這種結論是如何得出的,而他們的結論更可能是從不一樣角度基於事實的推斷。這是我須要在之後的面試過程當中去學習和提升的。
下面仍是簡要說一下各個候選人後續結果。
1號候選人在第二波面試結果裏面爭議很大,從1分Not Hire到4分Strongly Inclined to Hire的結果都有。
4分的同事的意見是以爲他有潛力、積極,能完成平常工做,還有緣由是基於文化和種族上的考量,這是個少數族裔候選人。3分的同事以爲代碼方面能力仍是不錯的,知足崗位要求。
2分的同事是Bar Raiser,他其中一個擔心和我是比較接近的,即1號候選人的的興趣並不在於技術上,他的精力和興趣太過於分散,沒有明確的目標。另外他看到了一些我沒看到的問題,例如過於關注細節而忽略總體,溝通的時候少傾聽多絮叨。
1 分的同事是考察的技術設計,客觀講這輪仍是有點難度的,設計應該不是1號候選人所擅長的領域,因此他在很大壓力的狀況下開始急躁起來,暴露出了溝通上很大的問題,在面試過程當中執拗己見,不理會面試官的建議和提示,在錯誤道路上越走越遠,最終設計結果和溝通結果都很糟糕。
在每一個人陳述完本身的結果後,Bar Raiser問有沒有改變本身結果的,並重點和Not hire的面試官溝通,看有沒有可能改變結果,可是這個同事很是堅持,認爲確實不合適,通過反覆討論沒法達成一致後,Bar Raiser決定最終選擇不經過。
2號候選人得到你們一致好評,一個4分,其餘都是3分。你們都對他的代碼能力、溝通、學習能力等方面充分確定。在Debrief會議上簡單走了下流程就算是經過了。
前面我在面試3號候選人時說到過,對他代碼測試方面是有一點擔心的,果真他的結果裏,一個2分(Inclined Not to Hire)一個3分和兩個4分,有個2分是個危險的信號。
此次的Bar Raiser是個產品經理妹子,她給了4分,理由很充分:
3分的同事對於他的代碼和溝通都表示了確定,以爲略微欠缺的仍是在作的過程當中須要一些提示,可是反應還挺快。
2分的同事主要也是考察編程的,但對於編程的結果不是很滿意,以爲低於他目前面試的候選人的平均水平。
另外一個4分同事是和Bar Raiser一塊兒面試的,一樣對於3號候選人的溝通、學習能力、主動性很是滿意。
總體結果都不錯,可是仍是有個2分,關鍵時刻我幫助說了幾句:首先這個候選人確實不太擅長這種面試時的編碼,有所欠缺,可是他的學習能力和潛力都毋庸置疑,另外從他github上對那個App的將近300條提交記錄來看,足以能夠證實他是一個能鍥而不捨,而且主動學習的優秀人才。
最後給2分的同事在聽完咱們的陳述後打消了他對3號候選人編碼能力的疑慮,決定改爲3分(Inclined to Hire),最終經過了整個面試,拿到了Offer。
5號候選人最終結果也很不錯,一個4分,其餘都是3分,沒有什麼爭議。
Bar Raiser是個工做經驗比較豐富的女同事,他對5號候選人各方面都很是滿意,惟一有些擔心的就是這個候選人很是聰明,不知道是否會興趣轉移太快而作事情隨性,但誰不肯意給聰明人一個機會呢?
面試的一個Manager給了4分,而且很是強烈的但願5號候選人能到他所在的項目組去實習。
最終也是毫無懸念的拿到了Offer。
此次我經過的4個候選人有3個拿到了最終的Offer,結果仍是挺不錯的,整個過程也是挺客觀公正的。但願他們明年暑假都能過來實習,有更大的成長。
最後祝你們好運!我微博帳號是 @寶玉xp ,知乎專欄 - 寶玉的專欄 謝謝!