1. 程式人生 > >記在美國的一次校園招聘

記在美國的一次校園招聘

背景

背景介紹

簡單介紹下背景,我司是北美一大型網際網路公司,每年9、10月份都會在一些高校招開發的實習生,但選拔標準和正式員工標準已經差不多了,經過實習後,很大概率會拿Return Offer。今年我第一次參加了家附近一所大學的實習生招聘,這是一所美國Top 10的知名大學,我是第一輪校園的面試官之一,這次校園招聘對我來說也是一次難得的體驗,在周筠老師的建議下把這個過程寫下來記錄一下。

招聘流程

首先HR在 Piazza.com 、Career Fair 等校園招聘網路平臺上釋出招聘資訊,也會在內部讓員工們推薦(推薦成功被錄用有不菲的獎勵),先一撥人到校園開宣講會,面對面答疑,這個環節沒參加,據以前參加過的同事說非常辛苦,得站一天,不停的回答各種問題。

然後HR會收集簡歷,初步篩選後,通知通過在同一天到大學的就業中心進行第一輪面試。整個面試過程從早到晚一整天時間,每個候選人面試一次,一次55分鐘,每個面試官當天要面試6個人左右,一小時一個。

這一輪面試很關鍵,通過了會安排後續面試,沒通過就沒有機會,當然相對來說標準也會略微低一點,以免錯過一些好的苗子。

在首輪面試結束後,HR會給通過的候選人郵件和電話通知,安排下一波的面試,後面一波面試一般會直接安排在學校最近的公司分部辦公室,連續3輪,每輪1-2人,一次也是55分鐘。面試官一般來自不同部門不同角色,其中有專業技術人員,有目標崗位的經理,還有不同崗位的人會一起參與,所以面試技術崗位,面試官也可能會是產品設計、市場的人。這些面試官其中有一個最重要的角色叫Bar Raiser,這個人要負責確定候選人最終的面試結果。

在所有面試結束後,HR會安排所有參與過這個候選人面試的面試官一起開一個Debrief會議,最終Bar Raiser決定是否錄用。如果錄用的話,HR根據崗位和工作經驗評級以及確定待遇,最終將結果通知到候選人。

招聘標準

面試結束後,所有面試官都要給面試人打分,打分會分成四檔:

  1. (1分) Not Hire:表示候選人水平是低於平均水平的,也不適合其他崗位,不錄用
  2. (2分) Inclined Not to Hire:表示候選人不適合目標崗位,但可能適合其他崗位,傾向於不錄用
  3. (3分) Inclined to Hire:表示候選人水平符合目標崗位,建議錄用
  4. (4分) Strongly Inclined to Hire:說明候選人屬於那種非常優秀,水平高於公司75%值的,強烈建議錄用

根據大家打分的結果,Bar Raiser在Debrief會議上要組織大家一起討論,基本原則是這樣的:

  1. 高標準要求:所有錄用的應該高於公司平均水平(50%),應該招聘哪些優秀的並且能帶動其他人的人才。
  2. 公司優先:招聘那些學習能力強,能適應公司崗位要求,適應公司文化的人才。
  3. 專業性:招聘在專業領域有專業技能的人才
  4. 成就&證據:招聘那些取得過一定成就和聰明的人勝過只是有工作經驗的;要能證明這些成就是真實的。
  5. 明確的結果:如果糾結這個人招還是不招,那麼答案就是不招,寧缺毋濫。
  6. 一票否決:一般來說Bar Raiser不需要動用一票否決權,目標是大家通過討論達成一致意見。

最終Bar Raiser會綜合大家意見來做出最終決定。

我的面試風格

每個面試官都會有自己的面試風格,通常來講我的面試風格是這樣的:

先提前5-10分鐘閱讀一下候選人的簡歷,對於簡歷提到的內容在網上查詢核實一下,如果有github連結,是一定會去看看上面的專案和程式碼,有linkin連結也會大概看看,有個大致印象。

見面後,首先會簡單自我介紹一下,讓對方對我的身份和角色有個簡單瞭解,也適當緩和一下緊張氣氛。我比較傾向於營造一個輕鬆的面試氛圍,讓面試人有機會充分發揮出他擅長的部分,通過觀察瞭解他擅長和突出的部分是不是跟我想要的匹配。有的面試官和我恰恰相反,喜歡給候選人很大壓力,觀察候選人在壓力下的反應。

自我介紹完後會讓對方開始簡要介紹自己和專案經歷,對於介紹的專案內容會適時打斷詢問一些細節,我需要通過對這些細節的提問,去核實候選人在簡歷上寫的和講述的內容是否真實,瞭解候選人在專案中擔任的角色,在遇到問題時是怎麼解決的,溝通能力如何。

除了專案之外,還會拉拉家常,問問他日常感興趣的事情,看候選人是不是屬於那種對技術真的有激情的,比如業餘時間還寫寫開源程式的肯定是有加分的。這個過程會持續15-20分鐘左右,基本上會對各方面有個大致瞭解:技能是不是和目標崗位匹配,是不是適合團隊合作,是不是對技術有持續熱愛,有沒有成長潛力,是被動還是主動工作。

面試技術崗,程式碼能力是至關重要的,甭管說的多溜多牛逼,還是得show me the code,所以接下來的環節就是程式碼測試,題目的難易度有時候是和前面相關的,如果前面聊的好,可能會相對容易一點,不想誤傷;如果覺得不靠譜,可能會直接上來一道很難的,這樣結果就不容易有爭議。這次校園面試我只是準備了一道介於Easy到Medium難度之間的題,不算複雜,做對也需要一點基礎。

通常每個面試官都有幾道自己喜歡的面試題,從簡單到複雜的都有,甚至是一環接一環的,先一道容易的,做出來給你加點條件繼續。通常我們程式碼測試都是基於CodePad,可以方便的把題目要求寫在上面,支援多種語言,可以實時編譯和檢視執行結果。也有同事喜歡用白板的。我這次直接選了用Leetcode,不僅可以像CodePad一樣線上執行除錯程式碼,還有很多test cases幫助驗證程式碼正確。我一般給這個階段會安排30~40分鐘,做的過程中會有一些溝通,必要的時候給一些提示和指導,如果到時間沒做出來,那麼很遺憾恐怕是沒辦法通過的,如果做出來後,還會問一些後續問題,在這個過程中可以觀察候選人寫程式碼的熟悉程度,解決問題的方式方法。

最後我一般會預留5分鐘左右時間給候選人提一些問題,這也是個很好的互動過程,畢竟面試是雙向的,公司在選擇候選人,候選人也在選公司,可以通過這種方式讓候選人對公司和未來可能的工作環境有更多瞭解。

如前面所述,每個面試官都有自己的風格,以上僅代表個人。

首輪面試

給我分配的有6個候選人,都是剛上大三的學生,從9點開始,上午三個,下午三個,中午休息一小時順便寫上午的總結,每個面試官都有單獨的一間會議室,條件不錯,有白板、投影和WIFI。

0號候選人

0號候選人爽約了,於是我有了一個小時的休息時間,趁這時間解決了個bug,順便把剩下的候選人簡歷又都看了一遍。

1號候選人

第1號候選人簡歷很好看,有個用GitHub的Pages做的,網頁做的挺漂亮的,css動效也很酷。美國本土出生的小孩,從初中畢業就開始自己寫App,軟體硬體專案都有涉獵,大二暑假就有實習經歷,還參加了各種俱樂部,github上還有個C++ 專案,程式碼不算多,但也還算工整。

在聊的過程中,發現小夥子很健談,也展示出他興趣的廣泛。我特別問了他github的專案,這是他參加一個機器人專案的副產品。另外我也對他的個人網頁表示了很大的肯定,捎帶著諮詢了他一些CSS和js細節,但發現其實用的是現成的模板,對細節並不是很瞭解。所以說簡歷包裝的太好,也不見得是好事,會擡高面試官期望,如果沒有與之匹配的實力,反而容易形成落差。

前面20分鐘聊下來,感覺這哥們屬於興趣廣泛,但不算太專注,善於溝通。可能更適合做PM之類的崗位,感覺不像那種能沉下心來鑽研技術的那種。從崗位匹配的情況來看我覺得不算特別合適。

不管怎麼說還是看看程式碼測試的結果吧。開啟leetcode,把題目介紹了一遍後,1號候選人馬上就有了思路,於是拿上紙和筆給我分析和講思路,並寫了虛擬碼實現,給我的感覺是應該是以前刷過這題,以及有過一些針對面試的套路培訓。接下來就是程式碼實現,選擇了他熟悉的C++,很快就把程式碼實現了,從寫程式碼的熟練程度來看,看的出還是有一定程式碼量的,程式碼格式有點亂。程式碼第一次執行無法編譯通過,好像是API有些不一樣,C++我是真一點不懂,幫不上,所以建議他直接Google,很快就找到了答案,但是有幾個測試沒通過,幾次修正後順利通過所有測試。預計花了30分鐘時間,如果以前沒做過的話,這個成績還是不錯的,如果做過的話只能說一般,但是做沒做過並不好考證。

繼續問follow up問題,回答的也不錯,最後問他有沒有問題需要問我的,他問了我司同事間人際關係如何,他之前實習的公司人際關係很複雜。這點我司到還是不錯的,給他解答一番後他也比較滿意。

整體面試下來,雖然我感覺他題目他刷過,但是綜合來講程式碼水平還行,只能說他運氣不錯,而且這畢竟是第一輪面試,我這邊通過了,他後面可不一定這麼好運氣都能遇到做過的題。所以最終還是給了通過。

2號候選人

從簡歷看,2號候選人是個學霸,從印度考過來的,GPA 3.9+,要知道學校牛的話拿高GPA挺難的。上大學前就開始利用假期實習做專案了,算下來現在大三都有三年專案經歷了,在學校也跟著導師有做一些專案。

2號候選人給我介紹了一些他的專案經歷,其中有些web前端的,有些是後端的,暑假實習的一個專案是基於MEAN架構(MongoDB Express Angularjs Node)的,都是他自己邊學邊搭建的,詢問了一些技術細節,基本可以印證他說的還是挺靠譜的。為了考察他知識面,讓他講了一下MongoDB和Mysql的區別,關鍵點講的挺到位,很明顯平時比較注意積累這些方面知識,作為大學生來說很不錯了。

聊下來給我感覺非常不錯,屬於那種做事情比較專注和認真、也勤奮努力的,這種人才挺不多見的,如果沒看走眼的話,應該屬於那種給一個任務,稍微指導就可以有個不錯結果的,幾年下來能成長為團隊核心。

接下來是程式碼測試,同樣的技術題,在搞明白意思後也沒有多廢話,直接開始寫程式碼,實現比較中規中矩,但對語言熟練程度不錯,一看就是有寫過很多程式碼行經驗的,程式碼格式不是太注意。第一遍寫完,結果提交到LeetCode後,有幾個test cases失敗了,發現是有些邊界條件沒有判斷清楚,幾個來回後,幾乎沒有太多提示,就把修復了所有問題,通過了所有測試用例。用了大約30分鐘。然後我又花了大約5分鐘時間問了一些follow up的問題,也答的不錯。

最後留了大約5分鐘給他問一些問題,他很感興趣我們日常工作內容是什麼?對於這種人才我肯定是要費心讓他有機會加入的,不然就被別的公司搶走了!於是我給他詳細講了一下今年暑假我們組實習生日常的工作,以及我們是怎麼幫助她成長的。

最後結果當然是通過,非常不錯的候選人。

3號候選人

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號候選人

4號候選人學習也不錯,GPA 3.8,在Machine Learning和軟體開發都有經驗,美國本土孩子,大一暑假就開始創業做專案賺錢,大二暑假在一個醫療中心實習,這學期開始在學校當助教。

他在Machine Learning和軟體開發兩個領域都挺感興趣的,我問他對哪個更有興趣一點,他也是有點糾結。在介紹專案的時候,我對他給醫療中心做的專案很感興趣,問了一些專案上的細節,討論了一下如何專案的需求發生特定變更時,他的設計會如何修改,整體上回答的還是不錯的。對於這些有實際專案經驗,並且認真完成專案的都都是感覺不錯的。

接下來是程式碼測試部分,我們花了一點時間在理解題目意思上,可能是我沒表達清楚,但在動手前搞清楚問題絕對是一個值得肯定的事情。也是選的python,同樣的沒有太多廢話,開始動手編碼,程式碼熟練程度絕對是可以的,程式碼風格偏向快猛糙一點,程式碼邏輯我一時之間沒太能理解,不過先看看執行結果再說,執行後有幾個測試用例跑不過去,於是他開始加上一些特殊邏輯的處理,但很快又發現有其他邊緣條件需要考慮,於是添加了更多程式碼,並跟我解釋,我表示可以先把程式碼跑起來,後面還可以優化。但是時間開始越來越少,有點著急了,而我對他的邏輯還沒能完全理解,嘗試幫助他一起分析一下,沒想到反而是在添亂。而時間更少了,但我覺得他應該有能力自己搞定,所以就讓他不要著急,我可以多給他一點時間,最後花了將近40分鐘時間,還是沒能解決,我覺得也沒必要繼續了,於是我們先結束了編碼。

每兩個面試之間,我有5分鐘休息時間,已經快到下一個面試的時間了,但我覺得還是應該把這個時間給他問他有沒有什麼可以問的,他問了我們一般日常工作是什麼樣的?這是個挺好的問題,於是我給他大概描述了一下日常工作的內容,因為他也學過一些敏捷開發專案管理的知識,所以也給他講了下我們日常如何使用敏捷開發的。這個溝通過程還挺不錯,在下一個面試開始前1分鐘結束了整個面試。

從他寫程式碼的過程來看,他程式碼能力還是不錯的,對Python很熟悉,面試過程可能還是有些緊張影響了發揮,如果是平時應該是可以做出來的。我甚至覺得他應該是比1號候選人要更合適一些,願意給他一個機會。但程式碼沒完成還是硬傷,我有些糾結,於是決定看看最後一個面試的結果再最終決定。

5號候選人

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個,通過比例還算比較高的,這也有些原因:

  • 首先我校招的學校是美國Top 10的名校,本科錄取率極低,能錄取的本身就都是非常優秀的學生
  • 然後我們的HR在篩選簡歷的時候,優先選的是那些有過實習、專案經歷的學生,這類學生本身就有一定的專案實踐經驗,自學能力強,所以更容易通過面試。
  • 最後這是第一輪面試,不像後面幾輪是綜合評定,是一票否決的,如果不通過後面就不能繼續了,所以要稍微鬆一點,所以1號候選人我最終還是選擇了通過,即使是題目沒有完全做對的4號候選人,如果不是因為這次跟他一起面試的其他候選人都表現非常傑出,整體錄取比例要考慮進去,我也會選擇通過的。
  • 遇到什麼樣的候選人也是有一定偶然性的,我對比了一下其他面試官的通過率,基本上都在6個通過3到4個。

最終面試結果

在拿到各個候選人最終結果彙總後,我必須得承認我的同事們都很厲害,從很多不同角度看到了我面試時沒發現的問題。我的很多面試結論更多來源於一種靠經驗積累得到的直覺,雖然我的直覺還是比較可靠的,但是在Debrief會議上並不好表達這種結論是如何得出的,而他們的結論更多是從不同角度基於事實的推斷。這是我需要在以後的面試過程中去學習和提高的。

下面還是簡要說一下各個候選人後續結果。

1號候選人

1號候選人在第二波面試結果裡面爭議很大,從1分Not Hire到4分Strongly Inclined to Hire的結果都有。

4分的同事的意見是覺得他有潛力、積極,能完成日常工作,還有原因是基於文化和種族上的考量,這是個少數族裔候選人。3分的同事覺得程式碼方面能力還是不錯的,滿足崗位要求。

2分的同事是Bar Raiser,他其中一個擔憂和我是比較接近的,即1號候選人的的興趣並不在於技術上,他的精力和興趣太過於分散,沒有明確的目標。另外他看到了一些我沒看到的問題,例如過於關注細節而忽略整體,溝通的時候少傾聽多絮叨。

1 分的同事是考察的技術設計,客觀講這輪還是有點難度的,設計應該不是1號候選人所擅長的領域,所以他在很大壓力的情況下開始急躁起來,暴露出了溝通上很大的問題,在面試過程中固執己見,不理會面試官的建議和提示,在錯誤道路上越走越遠,最終設計結果和溝通結果都很糟糕。

在每個人陳述完自己的結果後,Bar Raiser問有沒有改變自己結果的,並重點和Not hire的面試官溝通,看有沒有可能改變結果,但是這個同事非常堅持,認為確實不合適,經過反覆討論無法達成一致後,Bar Raiser決定最終選擇不通過。

2號候選人

2號候選人獲得大家一致好評,一個4分,其他都是3分。大家都對他的程式碼能力、溝通、學習能力等方面充分肯定。在Debrief會議上簡單走了下流程就算是通過了。

3號候選人

前面我在面試3號候選人時說到過,對他程式碼測試方面是有一點擔憂的,果然他的結果裡,一個2分(Inclined Not to Hire)一個3分和兩個4分,有個2分是個危險的訊號。

這次的Bar Raiser是個產品經理妹子,她給了4分,理由很充分:

  1. 有很強烈的學習慾望,能夠發現問題解決問題
  2. 願意承認錯誤並吸取教訓
  3. 刮鬍子了(我很驚訝會把這一條專門寫上,看來面試時注意下形象還是有幫助的)
    其實最打動她的理由和我比較類似:3號候選人做的App非常有說服力,首先能發現生活中的問題,然後能自己動手自己學習去解決,並且能堅持不斷優化改進。

3分的同事對於他的程式碼和溝通都表示了肯定,覺得略微欠缺的還是在做的過程中需要一些提示,但是反應還挺快。

2分的同事主要也是考察程式設計的,但對於程式設計的結果不是很滿意,覺得低於他目前面試的候選人的平均水平。

另一個4分同事是和Bar Raiser一起面試的,同樣對於3號候選人的溝通、學習能力、主動性非常滿意。

整體結果都不錯,但是還是有個2分,關鍵時刻我幫助說了幾句:首先這個候選人確實不太擅長這種面試時的編碼,有所欠缺,但是他的學習能力和潛力都毋庸置疑,另外從他github上對那個App的將近300條提交記錄來看,足以可以證明他是一個能持之以恆,並且主動學習的優秀人才。

最後給2分的同事在聽完我們的陳述後打消了他對3號候選人編碼能力的疑慮,決定改成3分(Inclined to Hire),最終通過了整個面試,拿到了Offer。

5號候選人

5號候選人最終結果也很不錯,一個4分,其他都是3分,沒有什麼爭議。

Bar Raiser是個工作經驗比較豐富的女同事,他對5號候選人各方面都非常滿意,唯一有些擔憂的就是這個候選人非常聰明,不知道是否會興趣轉移太快而做事情隨性,但誰不願意給聰明人一個機會呢?

面試的一個Manager給了4分,並且非常強烈的希望5號候選人能到他所在的專案組去實習。

最終也是毫無懸念的拿到了Offer。

最終面小結

這次我通過的4個候選人有3個拿到了最終的Offer,結果還是挺不錯的,整個過程也是挺客觀公正的。希望他們明年暑假都能過來實習,有更大的成長。

對於參加校園招聘的計算機專業(不限於)學生的一點建議

  1. 實習實習實習
你可以看到,這些通過面試甚至沒通過面試的學生,他們每一個都是從大一甚至更早的時候就開始去實習,去到各個公司去實踐,哪怕有些是小公司,但是都可以幫助他們積累很多學校學不到的實際專案經驗,發現自身的不足,進而可以努力彌補,如果運氣好一點在實習時能遇到好一點的Mentor,那真的是終身受益!
  2. 專案經驗
實習是最好的獲取專案經驗的途徑,但並不是唯一途徑,比如前面提到的3號候選人,如果他沒有做那個App以及把程式碼放到GitHub,那麼都不一定能通過我的第一輪面試,更不用說後面PM妹子和我在Debrief會議上對他的力挺。開發的同學建議多在github上提交一些高質量程式碼,並且能持續更新。這一點我強烈推薦大家看看劉未鵬寫的《怎樣花兩年時間去面試一個人》
  3. 專業課
針對校園招聘,包括校招,必不可少都要直接或間接的考察專業課知識,例如所謂演算法題其實都來源於演算法、資料結構等基礎課程,還有像軟體工程這種課程也可以幫助你加分
  4. 刷題
刷題確實是有一定幫助的,不一定要太多,可以把各個型別的簡單到中等難度的代表性題反覆做一做,這樣可以在面試時不會太慌張,不用說非要刷到考的題都刷過,那是不可能的,萬變不離其宗,只有把演算法基礎打好,對各個型別的題目基本解法都熟練了,自然能不變應萬變。這個可以推薦一個朋友寫的文章:《我五天面試了五家矽谷頂級公司,幸運地拿到了五個Offer 》
  5. 注意溝通技巧上的培養
這其實是很多候選人的一個通病,不善於溝通表達。但實際上溝通表達是可以刻意訓練的,不需要達到演講的水平,只要達到一些基本要求就可以了,例如:能簡明的表達自己的意思;能在理解和確認對方意思後再回應;能傾聽。這基本上就滿足絕大部分崗位要求了。
  6. 簡歷
簡歷不需要太多無用的資訊,1-2兩面足夠了,把主要的專案經驗和亮點放上去就好了,也不要誇大其詞,否則很容易像1號候選人一樣形成落差反而影響結果。
  7. 投簡歷
內部推薦是成功率最高的獲得面試的方法,如果沒有認識的人也可以通過一些論壇或社交媒體去試試看,大部分公司對於推薦候選人都有獎勵,所以很多人其實樂於幫助推薦的。退而其次就是關注招聘會和各大招聘網站了。
  8. 面試過程
    1. 不要緊張:在面試過程中,努力克服緊張情緒,可以朋友之間模擬面試過程,甚至多參加面試,這樣就可以很好增強心理素質。
    2. 確認清楚:在面試官詢問問題時,如果不清楚一定要反覆確認清楚再反饋,不要想當然去回答。
    3. 虛心請教:在做技術題時,如果在一些技術點卡住了,不要盲目的陷入細節中,要冷靜一點跳出來,虛心向面試官請教,這時候一般面試官都會給你適當提示,幫助你繼續下去。
    4. 承認不足:很可能會遇到一些不會的問題,或者回答錯誤的問題,通常面試官的經驗都是比較豐富的,很少有人會喜歡狂妄自大、拒絕不足的人,這時候老老實實承認不會或者錯了會更好。
  9. 面試結果
對結果有個好的期待,但是不必過於介懷,很多時候,沒有拿到Offer可能只是運氣不好或者和目標崗位不匹配,並不代表你能力不行!心態上還是要樂觀積極一點,不要因為幾個拒信打擊了自信心。我畢業的時候被很多家公司都拒絕過,前些天還在群裡說Atlassian連面試的機會都不給我呢。我有個同學被Google拒了兩次,後來第三次終於成了。

最後祝大家好運!我微博賬號是 @寶玉xp知乎專欄 - 寶玉的專欄 謝謝!