逆天程式設計師,6 天面試了 6 家矽谷頂級公司並拿下 6 份 Offer !

智雲程式設計發表於2019-02-14

本文作者在去年的 6 天時間裡,參加了 LinkedIn、Yelp、Apple、亞馬遜、Facebook 和 Google 的面試,並拿下了 6 份 Offer。

以下為譯文:

寫在前面

原本我只是考慮換公司的可能性。我不想為了尋找完美的工作而飛來飛去,所以我知道我必須做好日程計劃,將所有面試都安排在一起。雖然我尋找的職位是移動開發,但是這個過程中的學習方法、技巧和建議應該是普遍適用的。

我希望能夠激勵那些處境與我相同的人(對目前的工作並非百分之百滿意,夢想著在灣區生活,但缺乏嚴肅的“學習準備”的人),積極地去尋找,看看未來的路將通向何方。

簡介與統計資料

逆天程式設計師,6 天面試了 6 家矽谷頂級公司並拿下 6 份 Offer !

我想在灣區找一家大公司從事移動開發的工作。以前我在創業公司工作,我挺喜歡創業公司,但由於一些原因,這次我想找一家大公司(主要看資產,團隊規模倒是其次)。而且我也不是很在意工作崗位以及薪酬。另外,我也不希望像大學剛畢業那樣一下子申請 100 多份工作。

簡而言之,我申請了 20 家公司。其中 4 家公司(Reddit、Nest、Stripe、Uber)明確地拒絕了我。其餘的 16 家中,10 家公司沒給我回復(Lyft、Airbnb、Dropbox、Instagram、YouTube、Square、Robinhood、Twitter、Snap、Slack)。只有最後的 6 家公司的招聘人員聯絡了我。在這 6 家公司中,我參加了 6 次電話面試,6 次現場面試,並拿下了 6 個 offer。

根據我的 Google 日曆,大致過程如下:

  • 7 次招聘人員面試,共計花費 10 天;

  • 7 次技術人員面試,共計花費 11 天;

  • 29 次現場面試,共計花費 8 天;

  • 3 次後續電話面試。

以上統計資料表明我在 73 天內參加了 43 次面試(包括每次面試之間的間隔)。這個過程讓我筋疲力盡,有好幾個星期大多數午休時間我都在參加面試。我不得不很早就去上班,以便能早點下班回家打電話。在找新工作的同時,我依然需要確保完成份內的工作,但是我優先考慮了面試,所以在有必要的時候調整了工作日程安排。我不會為了參加面試而打電話請假,因為這樣做不道德,而且如果你找不到新工作,在目前的工作中表現又不好,豈不是很糟?

6 家公司

LinkedIn(加利福尼亞州桑尼維爾)

逆天程式設計師,6 天面試了 6 家矽谷頂級公司並拿下 6 份 Offer !

我在參加現場面試時的心跳率(正常的靜息心跳率大約為 60)

LinkedIn 的移動應用做的非常流暢,而且他們對開源社做了很多貢獻。從文化角度和工程角度來看,整個 LinkedIn 的面試過程給我留下了非常深刻的印象。整個面試過程從開頭到結束,LinkedIn 在我心目中的地位一直名列前茅。

Yelp(加利福尼亞州舊金山)

image
image

我在參加現場面試時的心跳率

Yelp 有一個非常漂亮的應用,裡面承載了大量精妙的 iOS 細節,彰顯了該平臺的魅力。我很喜歡現場的氛圍。他們有一座漂亮的大樓,而且我很願意與我的面試官一起工作。雖然 Yelp 比我申請的其他公司都小,但是它給我的印象非常好。感覺這家公司組織嚴密,流程快捷。

Apple(加利福尼亞州庫比蒂諾)

逆天程式設計師,6 天面試了 6 家矽谷頂級公司並拿下 6 份 Offer !

我在參加現場面試時的心跳率

蘋果是 iOS 重要的一部分:)我從 12 歲起就是蘋果的忠實粉絲。最初是 Mac 吸引了我開始程式設計。iPhone SDK 鼓勵我開發併發布了我的第一個應用。收到他們的邀請去參加現場面試,後來還給我下了 offer,我簡直受寵若驚。

亞馬遜(加利福尼亞州帕洛阿爾託)

image
image

我在參加現場面試時的心跳率

我不認為亞馬遜是一個“移動優先”的公司。但是他們的職位和團隊符合我制定的標準。 當我去現場的時候,感覺並不是很喜歡帕洛阿爾託的那棟大樓,但那只是一個臨時的辦公室,後來他們搬進了一棟更像亞馬遜的大樓,所以當時的面試感覺很差。面試我的人似乎非常專注於他們的產品。雖然每家公司都喜歡告訴我,“他們的公司感覺就像創業公司一樣!”,但在亞馬遜這種感覺最真實。

Facebook(加利福尼亞州門洛帕克)

逆天程式設計師,6 天面試了 6 家矽谷頂級公司並拿下 6 份 Offer !

我在參加現場面試時的心跳率

我在一座最新的大樓裡參加了 Facebook 的面試。我感覺那棟建築整體非常酷,但是我對面試的細節卻有些模糊,大概是因為當時的我連續參加了五天的面試,睡眠不足。但是我卻記得與面試官的談話非常愉快,那是一次有深刻見解的面試。

Google(加利福尼亞州山景城)

逆天程式設計師,6 天面試了 6 家矽谷頂級公司並拿下 6 份 Offer !

我在參加現場面試時的心跳率

據我所知,Google 並沒有針對某個特定的職位進行專門的面試,而是採用了非常“通用”的形式。當時我與 Google 最大的 iOS 產品團隊的許多成員進行了交談,但是我面試的職位並不屬於那個團隊。在我透過了 Google 的面試後,我進入了分配團隊的階段,最終被分到了一個團隊。與其他公司的面試相比,那是一個非常非常漫長的過程,因此我必須讓每個人都瞭解 Google 的最新動態。我也必須讓 Google 知道我和其他人的狀況。

學習計劃

首先說明,剛開始的時候我做的都是 Leetcode 上簡單級別的問題,大約可以在 30 分鐘內完成,如果不限時間的話,我可以解決 Leetcode 上 25%的中等難度的問題。做 Leetcode 上高等難度的題目感覺就像解決 P=NP 的問題(注:理論資訊學中計算複雜度理論領域裡至今未被解決的問題)。簡而言之,我差遠了。

為了研究演算法,我開始做《Cracking the Coding Interview》上的題目。每個星期天的早上,我起床後都會去咖啡店鑽研一些 Objective-C 的問題。在做了大量題目後(我做完了大約 35 道題),我去書店翻了翻 Leetcode 的題目。幾個星期後,我感覺基礎已經打得差不多了,可以繼續下一個階段了。

在打好基礎以後,我開始做《 Elements of Programming Interviews》。這本書比上一本更難。這本書還推薦了學習計劃,我都採納了。當時有一個四周的學習計劃,我幾乎全部完成了。在我看來,找一個人陪你模擬在白板上做題或電話面試很重要。雖然不至於非做不可,但是至少你應該將其視為非常有必要。雖然我相信即使不做這一步你可以找到工作,但是我認為這是最佳的實踐形式。
模擬的時候,你們會略感尷尬,但這才是關鍵。如果你感覺自然,那就不用練習了,不是嗎?如果模擬電話面試或在白板上做題,你感覺很尷尬或不好意思,那麼就說明你做得非常正確:你需要練習。剛開始時,我也感覺非常尷尬,但是這種練習絕對值得。

在堅持每天練習了大約一個月後(每天 2-3 個小時,週末更多),我開始集中精力做 Leetcode 的“熱門面試問題”。雖然沒全做完,但我做的足夠了。準備演算法面試的關鍵在於持續練習,直到你可以在面試中解決問題,並不一定要做完每一道題。做完所有的題是不可能的。在我參加現場面試的那一週,幾乎所有的題目都是“新”的,但是卻與見過的問題很類似。這也是該領域的絕大多數開發人員完成工作的秘訣。你見過很多類似的問題,但是你所面臨的特殊用例有特殊的限制。

經驗教訓

下面是我的一些經驗教訓(排序不分先後)。其中列出的每一條都是我希望事先有所瞭解的,無論是技術方面的準備,日程計劃,還是其他非非技術方面的小貼士。這些經驗教訓不僅限於 iOS 開發,我覺得它們適用於軟體開發界所有的面試。

下定決心。

剛畢業找工作的時候,我學習了 1-2 周之後就放棄了。我覺得原因是我根本沒有下決心學習這些東西。剛開始學習的幾周裡,我的進步很小,那麼浪費那麼多時間又有什麼意義呢?但是這一次我沒有選擇。最終,我開始步上正軌。需要學習的東西很多,但是是否願意學習才是成敗的關鍵。

實踐才是真理。

當然你需要一些天賦,但是練習可以彌補先天的不足。各個公司並不是根據應聘者與生俱來的知識決定僱傭誰。無論你們是從何時何地掌握的知識,只有那些能夠履行職責且表現良好的人才會受到賞識。

與朋友一起練習非常關鍵。

無論是在白板上還是在 Codeshare 上做題,在一段時間內與朋友模擬面試的環境可以減弱你對面試的畏懼。你可以克服因為大腦一片空白而胡言亂語的尷尬。如果能找到一個人明白你以前沒見過的問題,那便再好不過了,因為他們可以給你提示,幫助你找到解決方案。說真的,這種做法非常有價值。

以量取勝。

你可以練習,非常有效地練習,如果仍然找不到工作,那麼只是因為沒有正確的人看到你的簡歷,或者你沒有及時地找出白板問題的解決方案。你所能做的就是儘可能多地嘗試。也就是說多申請幾個職位,只要是你喜歡的地方,又符合你的要求,那麼統統申請,而不僅僅是你的首選。我當時申請了 20 家公司呢!

關注解決問題,而不是解決方案。

我們的記憶力很有限。我在一週內做了大約 20 道演算法題,而我以前見到過的只有 1 個(我告訴了我的面試官,儘管很多人不同意這種做法)。見過的常見模式多了,那麼自然就能夠找到解決方案。

不要氣餒。

有好幾次面試的時候,我不知道解決方案,不得不在面試官的指導下解決問題。但是我仍然收到了所有的 offer。還有一次,我感覺那次面試絕對沒戲了(我以為我的 5 個面試都沒戲,那一次是第 4 個),結果那家公司最後還是給我下了 offer。可見,一切皆有可能。:)

不要輕易忽視某個問題。

有好幾次我與朋友一起練習的時候,他覺得這些問題太難了,沒必要掌握。很有趣的是,我記得當時他說了 4 種型別的問題“永遠”不可能出現,結果有其中的兩種都出現了。雖然與我們練習的並非完全一樣,但非常類似。如果在你的練習中經常出現某個概念,那麼一定要記住它。

不要低估個人行為的重要性。

我感覺很享受自己的成功,因為說實話我的答案正是公司想要的。我認為,很多開發人員的技術力都非常強,但仍然很難找到完美的工作,那是因為他們對待技術圈外的人非常粗魯、不誠實或講話方式讓人很不舒服。在我看來,這些都是他們遭到拒絕的正當理由。你應該像對待技術問題一樣,練習你的行為。

如果你知道得更多,那麼別忘了展示。

在現場面試的時候,有好幾次我在回答一個問題的同時提到了其他的一些知識,並解釋說面試的時間不夠所以無法實現這個解決方案。在回答一個有關字串問題的時候,應該在解決方案中展示 Unicode 的知識或解釋如何支援 Unicode。在實現私有方法的時候,應該討論一下 Objective-C 的慣用方法。在討論更新表檢視的時候,應該談談你可以支援的不同動畫。如果你並不是十分明白就不要說,但如果你知道,那麼就應該展示與這個問題有關的外圍知識,把那些侷限在問題本身的人都比下去。

不要滿足於過關,要努力爭取到最好。

面試中的表現不僅決定你是否可以拿到這家公司的 offer,還會決定你能拿到什麼樣的 offer。如果你認為你有那個水平拿下 offer,自然再好不過了。但是一定要記住,“勉勉強強”與“非常好”之間的差異很大!努力爭取後者!儘管相對來說我的經驗不足,但我最初拿到的(沒有經過談判)offer 就非常好,我相信面試中的表現起了很大的作用。

總結

整個過程就是這樣!這是一次瘋狂的旅程,我沒有遺憾。我真的非常希望上述內容可以幫助你們克服所有困難,找到夢寐以求的工作。如果你對 iOS 特別感興趣,那麼我可以給出一些提示,所以請在下面留言。

補充:自大學畢業以來,這是我第二次參加面試,我有兩年半的工作經驗,而且我的簡歷中沒有值得一提的實習生或員工經歷。我上的是一所非常小的學校,各大軟體公司的招聘會上對我們學校一無所知。我於 4 月下旬開始準備,在 6-7 月間開始申請,幾個月後終於找到了夢寐以求的工作。

希望大家開心地學習!

英文:I interviewed at six top companies in Silicon Valley in six days, and stumbled into six job offers

連結: https://blog.usejournal.com/i-interviewed-at-six-top-companies-in-silicon-valley-in-six-days-and-stumbled-into-six-job-offers-fe9cc7bbc99


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2634824/,如需轉載,請註明出處,否則將追究法律責任。

相關文章