6天面試、斬獲6家硅谷巨頭Offer,我是如何做到的?

本文作者自稱灣區文學家,他在2018年8月13日至8月20日這六天時間裏,面試了LinkedIn、Yelp、Apple、亞馬遜、Facebook和谷歌這6家硅谷頂級科技公司,並拿到了6個offer。在此之前,工作時間短暫、知識及經驗均有限的作者,在經歷一次失敗的面試之後,並未失去信心,而是從頭來過。作爲一名全職工作者,他在閒暇之餘準備面試,最後能同時拿到多家科技巨頭的 Offer確實非常幸運,但是其背後付出的努力也不容忽視。
本文接下來將與大家分享作者在面試時所做的準備工作、面試技巧以及自己的一些實踐經驗,希望可以爲正在準備跳槽的工程師提供一些幫助。本文譯自 Medium.com 中原標題爲《I interviewed at six top companies in Silicon Valley in six days, and stumbled into six job offers》的文章,原文作者爲 Bay Area Belletrist 。

我想在灣區找到一份工作,然後在一家大公司裏讓自己在移動開發方面有所成長。我以前也在創業公司工作過,我很喜歡這些公司,但出於一些其他的原因,我一直想看一看大公司的機會。我不確定自己想去哪裏工作,也不知道多少薪水才能與當前的水平相匹配,但我知道我不想像大學畢業時那樣海投簡歷。

我總共投了20家公司,其中有4家公司(Reddit、Nest、Stripe、Uber)明確拒絕。在剩下的16家公司中,有10家沒有給我我回復(Lyft、Airbnb、Dropbox、Instagram、YouTube、Square、Robinhood、Twitter、Snap、Slack)。在剩下的6家公司中,我進行了6次電話面試、6次現場面試,並拿到6個offer。

回看我的谷歌日曆,我大概做了以下這些事情:

  • 10天內進行了7次招聘人員面試;
  • 11天內進行了7次技術面試;
  • 8天內進行了29次現場面試;
  • 3次後續電話面試。

總的來說,我在73天內接受了46次面試。整個過程讓人筋疲力盡,也就是說,有那麼幾個星期,我的午休時間都用來面試。我必須很早就去上班,這樣就可以提早下班回家接受電話面試。與此同時,又要確保仍然可以完成工作上的事情,這是一項艱鉅的挑戰。我給工作上的事定了更高的優先級,在必要的時候我會重新安排面試時間。我不會爲了面試停下手中的工作,因爲那樣會讓你看起來很糟糕,這是不道德的。而且如果你沒有拿到offer,你的績效就會有問題。

拿到offer的公司

LinkedIn(桑尼維爾)

LinkedIn的移動應用實際上非常流暢,他們對開源社區做出了一些可靠的貢獻。在整個面試過程中,LinkedIn的工程文化給我留下了非常深刻的印象,它們在我的“iOS聲望”清單中名列前茅。

Yelp(舊金山)

Yelp有一個非常漂亮的應用程序,帶有大量的iOS細節,這些細節彰顯了他們對這個平臺的理解。我非常喜歡現場面試的氛圍。他們的大樓很漂亮,我很樂意和我的面試官一起工作。Yelp比我申請其他公司要小得多,但通過各種方式展示了他們好的方面。面試過程進展得很快。

Apple(庫比蒂諾)

我是一個極端的果粉(從12歲開始)。Mac讓我開始接觸編程,然後使用iPhone SDK開發和發佈了我的第一個應用程序。他們邀請我到現場面試,然後再給我一個offer,這就像在做夢一樣。我不知道該說什麼好了。

亞馬遜(帕洛阿爾託)

我不認爲亞馬遜是一家“移動優先”的公司(根本不是)。不過,這個職位和團隊符合我一開始設定的目標。我並不是特別喜歡帕洛阿爾託的建築,但在搬進更有亞馬遜風格的建築之前,這只是一個臨時的辦公場所。面試我的人似乎非常專注於他們的產品。雖然每家公司都喜歡跟我說“這真的感覺像是一家初創公司”,但這句話在亞馬遜聽起來最真實。

Facebook(門洛帕克)

我去了Facebook的新大樓。總體來說,我覺得它很酷。雖然我對面試細節已經有些模糊,因爲我已經連續五天睡眠不足了。我只記得與面試的人聊得很開心,午餐時間的面試也很有見地。

谷歌(山景城)

根據我的理解,谷歌會對候選人進行“一般性”的面試。我與谷歌最大的一個iOS產品團隊的成員進行了交談,但並沒有面試該團隊的職位。在我通過谷歌招聘委員會的面試之後,進入了團隊匹配階段,並最終與一個團隊進行了匹配。與我面試過的其他公司相比,這是一個非常漫長的過程。

學習計劃

需要說明的是,我先從簡單的Leetcode題目開始,確保可以在大約30分鐘內完成大部分這類問題,然後可以用無限時間解決25%中等難度的Leetcode問題。解決Leetcode難題類似於解決P = NP問題。簡單地說,我有一個很大的差距需要彌補。

爲了研究算法,我先是看了“Cracking the Coding Interview”(https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X)這本書。星期天早上,我醒來後就去咖啡館,使用Objective-C解決書中的一些算法問題。在解決書中足夠多的問題後(我想我解決了大約35個問題),我會繼續回顧書中提到一些Leetcode問題。幾個禮拜之後,我覺得我已經掌握了“基本知識”,可以進入下一階段。

在瞭解了這些基礎知識之後,我開始看“Elements of Programming Interviews”(https://www.amazon.com/gp/product/1479274836/)這本書。這本書比上一本要難得多。這本書推薦了一些學習計劃。其中有一個爲期四周的學習計劃,我幾乎完成了所有的學習任務。在我看來,無論是在白板上與別人討論問題,還是模擬電話面試,對於我來說都至關重要。可能不能說它“非常重要”,但在學習時應該將其視爲一項絕對性的要求。我相信沒有它也找到工作,但這畢竟是一個最佳實踐。

如果有人想模擬iOS方面的電話面試,我很樂意幫忙——你可以在CS Career Hackers(https://www.cscareerhackers.org/)上找到我,也許我們可以在時間允許的情況下做點什麼。除了我以外,還有很多其他人願意提供幫助。不過這樣做會有點奇怪,這纔是重點。如果在面試時你表現得很自然,那就不需要練習了,不是嗎?但如果你開始模擬手機面試或者在白板上練習與別人討論問題,並且它會令你感到尷尬,那麼說明你需要這麼做:就是練習。在一開始我會感到很尷尬,直到變得很自然,這種做法也讓我獲得了回報。

經過大約一個月的持續練習(可能每天2到3小時,週末會更長),我開始做Leetcode的“熱門面試問題”。我沒有全部做完,但做得“足夠”多。爲算法面試做準備的關鍵在於讓自己達到一個點,可以在面試中找出問題,而不一定知道如何解決每一個問題,因爲這是不可能的。我在網站上看到的幾乎所有問題對我來說都是“新”的,但與以前見過的問題相似。你有很多類似的問題,但在特定情況下有特定的約束。

我從中學到了什麼?

我將分享我學到的一大堆東西,並以列表的形式列出來,順序不分先後。下面列出的所有內容都是我希望之前就該知道的,無論是在技術方面的準備,還是日程安排和其他非技術技巧。這些東西不只是針對iOS開發的,我認爲它們適用於我們行業的所有面試。

堅持

在我剛走出校門找工作時,一般學習一兩週就放棄了。我的理由是,我根本不是學習這些東西的料。在剛開始的幾個星期,幾乎沒有什麼進展,所以浪費時間又有什麼意義呢?但這一次,我想我沒得選擇。最終我開始慢慢步入正軌。這是一項艱鉅的工作,但學習的意願是將成功的候選人與其他人分開的重要因素。

實踐就是一切

你當然需要一些先天能力,但練習(即學習)可以填補很大的能力差距。公司不會根據候選人與生俱來的知識來僱用員工。他們會僱傭那些能夠履行職責的人,並且無論候選人在哪裏或什麼時候培養了這些知識,都能很好地履行職責。

與朋友一起練習

無論是在白板上還是使用Codeshare(https://codeshare.io/),通過一段時間的模擬面試,可以消除很多實際面試的恐懼感。通過這種事前練習的方式,你可以克服對別人說一些完全愚蠢的廢話的尷尬。如果能找到一個有經驗並且瞭解那些你以前沒見過的問題的人,那便再好不過了,因爲他們可以給你提示,幫助你找到解決方案。說真的,這種練習是無價的。

以量取勝

你可以盡情練習,但不一定就會找到合適的工作,因爲有可能合適的招聘人員沒有看到你的簡歷,或者你未能及時解決白板上的問題。但你可以最大化你的機會。申請你想要去的公司,以及你符合他們要求的公司,而不是隻申請首選的公司。我申請了我想去的前20家公司!

專注於如何解決問題,而不是解決方案本身

只是死記硬背是不夠的。在一週內看到的20多個算法題中,之前可能只見過其中的一個。但我知道很多常見的模式,所以能夠靈活地提出解決方案。

不要氣餒

有好幾次面試我壓根想不出解決方案,面試官不得不給我提示。但最後我仍然拿到了offer。此外,我覺得有一次面試完全被我搞砸了(那天五輪面試中有四輪在我看來是肯定“沒戲”了),公司後來還是給了我offer。顯然,一切皆有可能!

不要輕易忽視問題

有好幾次我和一個朋友在一起練習,他認爲有些問題太難了,沒必要掌握。奇怪的是,在實際面試時,他過“永遠不會”出現的四類問題中出現了兩類。雖然與我們練習的形式不完全一樣,但非常相似。如果你在練習過程中經常會遇到某個概念,那麼請學好它。

不要低估個人行爲的重要性

我認爲我很享受成功,因爲我(誠實)的答案正是公司想要的。我認爲很多開發人員的技術能力都很強,但仍然很難找到理想的工作,因爲他們對技術環境以外的人說話很粗魯,或者不夠誠實,或者讓人感到不舒服。在我看來,這些都是公司拒絕候選人的合理理由。所以,我們要像練習技術問題一樣練習它們。

如果你知道更多,就展示出來

在現場面試中經常遇到這種情況,我會回答問題,並提及其他的一些知識,但解釋說我沒有足夠的時間在面試中完全實現這些解決方案。在回答有關字符串的問題時,可以展示一下你的Unicode知識或解釋一下如何支持Unicode。在回答如何實現私有方法時,可以討論Objective-C在方法方面的約定。在回答如何更新表視圖時,可以談談你知道的不同的動畫效果。如果你不能暢所欲言,就不要提出來,但如果可以的話,可以讓你在問題提供的狹小窗口之外展示知識,讓你在嚴格遵循常規的人面前佔得先機。

不要滿足於及格線,努力設定更高的標準

面試中的表現不僅決定你是否可以拿到這家公司的 offer,還會決定你能拿到什麼樣的 offer。如果你認爲自己知道要達到怎樣的程度才能拿到offer,那很好。但請記住,“勉強夠好”和“非常好好”之間有很大的區別。你要爭取做到後者!儘管我相對缺乏經驗,但我最初(即沒有經過談判)的offer還是相當不錯的,我相信面試表現起了很大的作用。

總結

就是這樣!這是一個瘋狂的旅程,我沒有留下任何遺憾。我真的希望上述內容可以幫助你們在尋找夢寐以求的工作時克服困難。

我可以透露一些額外的信息:這是我大學畢業後的第二份工作,當時我有兩年半的工作經驗,簡歷上沒有任何值得注意的實習經歷或僱主。我上的是一所非常普通的學校,在他們的“招聘會”上,沒有一家知名的軟件公司會光顧。我從在4月下旬開始準備,並在6月/7月開始申請職位。幾個月後,我拿到了夢寐以求的工作機會。

我想再次推薦CS Career Hackers社區(https://www.cscareerhackers.org/)。如果你想找一個地方可以練習與其他人交談,不要猶豫。我是在簽了合同幾個月之後才發現這個網站,但它仍然是一個很棒的地方。

祝大家學習愉快!

更多內容,請關注AI前線

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章