30天完成60多場技術(shù)面試,我學(xué)到了什么?
如果你致力于成為一名軟件工程師或數(shù)據(jù)科學(xué)家,技術(shù)面試往往是求職過程中的必經(jīng)流程。近日,軟件工程師兼科技作家 Uduak Obong-Eren 分享了他在 30 天內(nèi)完成 60 多場技術(shù)面試后總結(jié)的經(jīng)驗教訓(xùn)。
如果你是一位希望事業(yè)成長的軟件工程師或技術(shù)人員,技術(shù)面試肯定是必然會面臨的難關(guān),并且往往讓人覺得很難。因此無論是從感覺上還是在其它方面,技術(shù)面試有時會讓技術(shù)人員感到恐懼。
本文將介紹作者軟件工程師 Uduak Obong-Eren 在 30 天內(nèi)完成 60 多場技術(shù)面試的經(jīng)歷以及從那些成功和失敗中收獲的經(jīng)驗教訓(xùn)。這些經(jīng)驗教訓(xùn)分為三個類別,對應(yīng)典型招聘流程的三個階段。
盡管這里的大多數(shù)經(jīng)驗教訓(xùn)都直接針對的是軟件工程師和技術(shù)專業(yè)人士,但其背后的原理適用于幾乎所有職業(yè)。希望你能在其中看到對你的職業(yè)生涯有用的東西。
我是怎樣開始的?
「如果你必將失敗,那就快些失敗。」——佚名
和其他軟件工程師一樣,我也參加過多種不同類型的技術(shù)面試——從讓人望而生畏的白板編程面試到非同尋常的在 Hackerrank 平臺上的 45 分鐘編程挑戰(zhàn)賽。盡管我有一些很棒的面試經(jīng)歷,但也有一些很糟糕甚至極其糟糕的經(jīng)歷。
但我希望能在面試中表現(xiàn)更好,甚至非常好。我希望學(xué)習(xí)克服面試恐懼癥并在面試中展現(xiàn)自信。就像一個技能精湛的沖浪者,我希望能在面試所帶來的高壓力浪潮中乘風(fēng)破浪。恰好那時我也一直想要換個工作。
因此從 2020 年 1 月到 3 月初,我申請了美國和歐洲的多家公司并得到了他們的回應(yīng)。其中既有 Coda 等處于早期階段的創(chuàng)業(yè)公司,也有 Crunchbase 等處于較后階段的創(chuàng)業(yè)公司,還有 Affirm 等中等規(guī)模的公司以及亞馬遜等大型公司,甚至還有 Webflow 等遠程公司。
發(fā)出了至少 109 份申請之后,我收到了超過 60 份面試邀請。總結(jié)起來,其中包括超過 60 次介紹性的電話面試、50 多次技術(shù)視頻電話面試、18 次居家編程項目、11 個編程挑戰(zhàn)賽以及 8 場現(xiàn)場面試(包括 3 次虛擬面試)。
為了便于理解,我將學(xué)到的經(jīng)驗教訓(xùn)分為了三個類別,對應(yīng)典型招聘過程的三個階段。
面試前階段
這個階段是指與公司初次接觸到第一次面試發(fā)生前的階段。
有關(guān)工作申請的經(jīng)驗教訓(xùn)
當(dāng)我開始向公司申請工作崗位時,我想象的是我提交的申請越多,我獲得面試的機會就越多。看起來符合邏輯,對吧?所以我當(dāng)時設(shè)定的目標(biāo)是每天發(fā)出 5 個申請,期望每 5 個申請就能獲得一次面試機會。
但我的策略的效果并不如我期望的那樣。我收到的面試邀請的數(shù)量往往不及我的目標(biāo):差不多是 1:12 的比例,即每申請 12 次會獲得一次面試機會。
我面臨著這樣一個問題:我需要將我的每日申請量提高一些嗎?比如每天發(fā) 10 份申請?;蛘呶倚枰谄渌矫孀鲆恍└淖??每一份不成功的申請背后,我都能看到一些需要改變的東西。
當(dāng)我不再執(zhí)著于申請數(shù)量,修整一下并開始思考簡歷的質(zhì)量時,情況迎來了變化。我開始將每份申請看做是向招聘經(jīng)理或其他會看到我的簡歷的人的自我展銷,也就是說我自己就是我想出售的商品。如果公司需要填補人才空缺,而我說自己有這些技能,我還需要讓他們相信我確實有。
然后,我的新任務(wù)就變成了找到一種能有效推銷自己的技能、經(jīng)驗和個人特質(zhì)的方法,以便說服招聘經(jīng)理相信我就是適合他們崗位的人。
下面給出一個我想出的這類自我推銷的例子:
加上我的簡歷,這份求職信的成功率高達 95%。只有一次這份求職信沒有起效,但那位招聘經(jīng)理仍然回復(fù)了我,并告訴我那個崗位已經(jīng)不再招聘了,不過他希望未來能聯(lián)系我。
這里的經(jīng)驗教訓(xùn)是:你發(fā)出的申請應(yīng)該非常具有針對性——質(zhì)量優(yōu)于數(shù)量,最好兩者兼?zhèn)?。你要知道你的特有能力和?jīng)驗,并以一種能滿足公司需求的方式呈現(xiàn)它們,同時還要不失你的個性。
你也需要了解你所申請的公司的特點及其具體需求。創(chuàng)業(yè)公司或小公司的需求可能與大公司不一樣,因此需要不同的技能組合。
推銷你自己,并確保在面試時佐證你的說法。
從招聘者來信所學(xué)到的經(jīng)驗教訓(xùn)
在這期間,我收到了很多招聘者來信(大都是不請自來的),希望我去應(yīng)聘他們公司的空缺崗位,但其中大多數(shù)崗位我都不感興趣。
當(dāng)然,鑒于我的日程繁忙,這些郵件實在太多了,但我學(xué)會了保持同理心,我理解這些招聘者只是在完成自己的工作而已。
所以我不再將這些郵件視為我收件箱里的噪聲,而是開始努力回復(fù)所有招聘者的來信,即使那些職位我并不感興趣。這樣做讓我成功構(gòu)建了一個招聘者網(wǎng)絡(luò),這已經(jīng)成為了我未來轉(zhuǎn)變職業(yè)角色時的重要資源。
你倒不必開始回復(fù)你收到的每一封郵件。但你要知道,我獲得的一些有用的面試建議都是從我回復(fù)的不感興趣職位的招聘者那里得到的?;貜?fù)一下其實沒啥損失。
面試階段
這部分涵蓋有關(guān)面試本身的一切,其中涉及多種不同的面試類型。
如何應(yīng)答介紹性電話
是的,我懂的,你很忙,很多事情都在搶占你的時間。但是,你也是一位出色的專業(yè)人員,也就是說你在接到這樣的電話時,至少已經(jīng)知道了兩件事:
- 你的面試官的名字
- 關(guān)于該公司的至少一件具體有形的事情——他們是做什么的、公司位于何處、近期有什么新聞等等。
我注意到,當(dāng)我為準備面試而去了解這些事情時,我總是會開始真正對這家公司產(chǎn)生興趣。這通常是招聘人員在進行這類面試時所期望的事情。
如何應(yīng)對技術(shù)性視頻電話面試
在技術(shù)性視頻電話面試中,唯一最具決定性的因素是,你能否清晰地表達你的想法。
你之前可能聽說過這樣的事情:
「面試官關(guān)心的是你的思考過程。是的,他們可以看你的代碼,但重要的是他們想知道你這樣寫代碼的原因。」
面試官不在你的身邊,也就無法看見其它非語言的線索,比如你的手勢和細微動作。面試官只能通過你的聲音來理解你的思維過程。
現(xiàn)在你知道該如何引導(dǎo)這場對話了,接下來的問題是你該如何變得擅長?因為事實上,盡管某些人能夠自然地表達自己的思想,但另一些人則很難做到,其中就包括我。
答案是:練習(xí)!練習(xí)!!練習(xí)?。?!
練習(xí)很多次模擬面試。與朋友進行模擬面試能讓我更好更自信地解釋我自己的思維過程。但更有意思的,這能幫助我建立對面試的新看法。
我開始將面試看做是與朋友或團隊成員的對話。我將另一邊的面試官看作是我的朋友(有時候我還會在頭腦里給面試官一個名字)。因此,過去被我視為壓力巨大的面試,現(xiàn)在變成了我與朋友討論一個技術(shù)問題,僅此而已。
這個新看法輔以許多實際的面試經(jīng)歷幫助我變得更加自信,甚至讓我開始享受面試,不對,應(yīng)該是技術(shù)聊天。
如何開始解決問題
永遠不要在完全理解問題陳述之前開始解決問題。如果你一開始就讓對方澄清問題,那么你幾乎就不會出錯。如果你能夠事先清晰地提問,而不是自己一個人按自己的假設(shè)行事,也能給面試官留下一個好印象。
如何解決問題
優(yōu)秀的候選人知道如何解決問題(比如排序問題),但最好的候選人知道一個問題的多個解決方案,并且理解一個解決方案與另一個之間的權(quán)衡。我表現(xiàn)最好的面試是那些我不僅解決了算法難題的面試,而是還提供了替代解決方案并討論了權(quán)衡的面試。
你要以提供問題的多個解決方案為目標(biāo),要樂于討論權(quán)衡,并且至少要能實現(xiàn)其中一種方案。
對于技術(shù)面試而言,要寫出清晰的代碼。大多數(shù)面試官既關(guān)心你的代碼質(zhì)量,也關(guān)心你的解決方案的正確性。你要盡可能地寫模塊化代碼,將可復(fù)用的邏輯適當(dāng)?shù)貏澐譃閷嵱煤瘮?shù)、名稱變量和方法,就像你是 boss 一樣。
如果你被一個問題難住了該怎么辦?
有時候你會被難住。原因可能有很多:你缺乏必要的知識、你的假設(shè)不正確、你遺漏了細節(jié)等等。
我過去以為,在這樣的時候,面試官會基于我想出解決方案的快慢來評價我。所以我會很安靜地思考,不與面試官交流,只是思考。
這就是我們大多數(shù)人出錯的地方。我也明白,你需要一個人思考的時間。但很抱歉打破你的幻夢,你在接受面試時不是你的個人時間。
是的,如果你能自己想出一個解決方案,面試官當(dāng)然喜聞樂見,但不要忘了他們也希望看到你能與其他同事合作構(gòu)想解決方案。盡管公司想要技術(shù)明星,但他們也想要團隊合作者。
因為你的面試官是一個朋友、一個伙伴、一個團隊成員,他和你是一邊的,也就意味著你在思考解決方案時應(yīng)該與他們交談。
你應(yīng)該分享你的思維過程,直到你卡住為止;你要充滿自信地尋求幫助,而不是哭泣般請求幫助。這樣做時你可能就會揭示出解決方案,就像我在接受 Coda 面試時那樣。
如何應(yīng)對編程挑戰(zhàn)
這里的經(jīng)驗教訓(xùn)適用于以在 Hackerrank 和 Codility 等平臺上執(zhí)行編程挑戰(zhàn)形式的面試。通常這些挑戰(zhàn)都是限時挑戰(zhàn),比如 45 分鐘或更長時間。
我前面分享的一些經(jīng)驗教訓(xùn)在這里也適用,但其它一些卻并不適用,比如讓別人澄清問題,因為這里沒人可問。這里我推薦一些步驟:
- 通讀并完全理解問題。
- 首先寫出能工作的代碼,即便是暴力搜索算法也行。這可能無法通過所有測試案例,但優(yōu)先事項是拿出可工作的代碼,最好能在前 15-20 分鐘完成。
- 使用不同的輸入類型測試你的代碼,因為這有助于你處理邊緣案例。
- 優(yōu)化效率。
- 重復(fù) 4 和 5 ,直到最后一分鐘。
這里,很好地掌握計算機科學(xué)基礎(chǔ)很關(guān)鍵。
如何應(yīng)對居家編程項目
居家編程項目能讓你有機會更好地展現(xiàn)自己的才能,因為你有更多時間。這也意味著這類項目更耗時間。
一家面試我的公司還為從事居家編程項目的時間提供了大約 68 美元一小時的薪資——說明這個任務(wù)很嚴肅,你也應(yīng)該嚴肅對待。不過在你花時間搞居家項目之前,你一定要相當(dāng)確信你希望進入這家公司。
永遠不要在居家項目的代碼質(zhì)量上松懈自己。要針對性地進行你的設(shè)計決策,即命名規(guī)范、代碼結(jié)構(gòu)等等都要好好考慮,并且要做好準備為你的選擇辯護。
你應(yīng)該使用什么工具?
在我接受 Course Hero 的面試時,我使用了 regex 來解決我本可用更簡單的字符串解析算法來解決的問題。事實證明,這是個糟糕的決定,我也沒通過面試。
經(jīng)驗教訓(xùn):僅使用你非常熟悉而且經(jīng)驗豐富的工具。
如何進行現(xiàn)場面試
在面試前一晚好好睡一覺。面試當(dāng)天提前到達,然后保持微笑(這有助于你展示信心,而且更重要的是能讓你保持放松并感覺一切都在控制中)。
直面你的恐懼并接受它——即使失敗,也不是世界末日,畢竟這只是又一場技術(shù)聊天而已。然后進門,開始聊天。
如何進行虛擬現(xiàn)場面試
這與現(xiàn)場面試大不相同,因為每個人的眼睛都看著你,這可能讓人神經(jīng)緊張。
我收到了三個虛擬現(xiàn)場面試,而我沒通過其中任何一個。很抱歉你沒法從我這里獲取成功經(jīng)驗。
面試之后
如何應(yīng)對失敗
你沒通過一輪面試的原因有很多,我認識的一些最好的工程師都曾在面試時受挫過,現(xiàn)在也仍然會失敗。
因此,不要執(zhí)著于失敗的面試,而要從失敗的面試經(jīng)歷中找到可以吸取的教訓(xùn),然后借助它們繼續(xù)前行。就像他們說的——前進!
面試成功了又怎樣?
慶祝你的成功吧,不管你覺得這個成功有多小。我有一些慶祝的思路。
你接下來應(yīng)該做什么?
- 與朋友進行很多模擬面試。盡管我并不完全同意「練習(xí)造就完美」的說法(因為在我看來完美是個一直在變動的目標(biāo)),但練習(xí)能幫助你快速識別面試問題中的模式,幫助你熟練,最終提升你的信心。
- 對于技術(shù)面試,很好地理解數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)是必需的。
- 開始面試并不斷面試。即便你有工作,也可以時不時面試一下——也許每兩個月或一個季度一次。面試是一項技能,可以繼續(xù)磨煉。
希望這篇文章能幫助到你。