【附考古題】如何面試 6 家頂尖科技公司並全部拿到 offer?神人:練好考古題

【為什麼我們要挑選這篇文章】在 Google、Facebook 等科技巨頭上班,是不少工程師的夢想,這些公司的入場券非常難拿,然而有人卻被 6 家頂尖科技公司面試,並全部拿到 offer!作者表示,自己並非名校出身,然而靠著「持之以恆的學習」,取得這些 offer。作者將以第一人稱敘述,分享他的面試準備技巧與經驗學習,並附上熱門的面試考古題。(責任編輯:郭家宏)

能在矽谷頂尖公司工作是每個行業人士的夢想。這位作者在 2018 年 8 月 13 日至 8 月 20 日的六天內,分別於 LinkedIn、Yelp、Apple、Amazon、Facebook 和 Google 進行了面試,獲得了全部六份工作邀約!

他並非出身名校,不自認為是大神,甚至可以說基礎知識非常缺乏,但持之以恆的學習和總結幫他拿到了心儀的工作。獲得一份 dream job 並不是那樣遙不可及。他在自己的博客上與我們分享了自己準備面試的經驗和教訓。開工第一天,一起來看看!

以下是作者第一人稱敘述:

從去年開始,我就在計劃跳槽的事情。由於不想在全美國來回飛,所以我決定把所有的面試安排在一起,把它們一次都解決掉。

雖然我面試的是行動應用方面的職位,但對於其他領域的職位,相關的研究方法、技巧和建議應該是通用的。

希望我能激勵那些和我一樣,對現在的工作不是非常滿意,對矽谷的生活抱有夢想,但在「學習準備」方面卻嚴重缺乏的朋友們,放手去試試看吧!

面試 6 家科技巨頭,全部取得 offer

我知道我想在矽谷找到一份可以使我在通訊行動行業快速成長的工作。我以前在新創公司工作過,我很喜歡新創公司的體驗,但出於一些原因,這次我想去一個大公司。

我不確定自己想在哪裡工作,也不確定自己能獲得多少報酬。但是我知道,我不想再像大學畢業時那樣海投 100 多個申請了。

我共計申請了 20 家公司,被其中 4 家公司(Reddit、Nest、Stripe、Uber)明確拒絶。剩下的 16 家公司中,10 家公司沒有任何回覆(lyft、airbnb、dropbox、instagram、youtube、square、robinhod、twitter、snap、slack)。我獲得其餘 6 家公司的進一步面試機會。在這 6 家公司中,我成功從每一家公司都獲得了電話面試,網絡面試,以及最終的工作 Offer 。

回顧我的日曆,我的進展大概是:
10 天內 7 次招聘篩選
11 天內 7 個技術面試
8 天內 29 次現場面試
3 次後續電話面試

綜上所述,我在 73 天內接受了 46 次面試(包括面試之間等待的時間)。這讓人筋疲力盡,這意味著連續幾週我大部分的午餐休息時間都是面試。我必須很早就開始工作,這樣我才能早點離開公司,回家接電話。

一邊面試,一邊認真完成自己的工作對我來說也是一種挑戰,我始終把現在的工作放在第一位,如果兩者之間有衝突,我會更改面試時間。我不會請假去面試的。因為這會讓人看起來很不敬業,如果沒找到新的工作,還會給原來的單位留下壞印象。

6 家公司的面試過程與整體印象

LinkedIn

LinkedIn 的應用程式相當精巧,它們對開源社區有一些堅實的貢獻。在整個與 LinkedIn 的面試過程中,他們的企業文化和專業技術,都給我留下了深刻的印象。

Yelp

Yelp 有一個非常漂亮的應用程式,展現了 iOS 的許多微妙之處,顯示出其對平台的理解。我喜歡面試現場的氣氛,他們有一座漂亮的大樓,我很想和我的任何一位面試官一起工作,它比我申請的其他公司小得多,但在所有方面都顯示出了它的優秀。整個面試過程很緊密也很快。

Apple

Apple 曾經是 iOS 的重要組成部分。我是個狂熱的蘋果迷(至少從 12 歲開始)。 Mac 是我寫程式的啟蒙, iPhone SDK 鼓勵我構建和發佈第一個應用程式。他們邀請我參加面試並給我 offer 簡直不可思議,興奮喜悅之情難以言喻。

Amazon

我根本不認為亞馬遜是一家「行動優先」的公司。不過,這個職位/團隊符合我提出的標準。我不喜歡我去面試的帕洛阿爾託大樓,這是一個臨時的辦公室,之後會搬進 Amazon-y 大樓,所以這個面試時機不太好。和我交談的人似乎很專注於他們的產品。雖然每家公司都喜歡告訴我「這真的像一家新創公司!」,但 Amazon 是最名副其實的。

Facebook

我在 Facebook 的最新大樓面試,由於連續五天在睡眠不足的情況下面試,我對面試本身的細節有些印象模糊,但總體上我覺得很棒。我記得我很喜歡和我交談的人,並且體驗了很有洞見的午餐面試。

Google

我感覺谷歌對這個職位進行了相當「通用」的面試。我在 iOS 上與谷歌最大的產品之一的許多成員進行了交談,但我並沒有專門為該團隊的職位進行面試。在通過谷歌的招聘委員會後,我進入了團隊配對階段,最終與一個團隊配對。其他公司的面試相比,這是一個非常非常長的過程。

面試考古題的練習計劃

說實話,一開始,我大概 30 分鐘內可以完成大部分 Leetcode 裡的「簡單」級別的 問題 ,能夠沒有時間限制地解決僅僅 25% 的 Leetcode「中等」級別問題。對那時的我來說,解決 Leetcode「困難」級別的題目就太難了。簡言之,我有很大的基礎缺口。

為了學習演算法,我首先從《Cracking the Coding Interview》開始。每個星期天早上,我會起床去一家咖啡店,在 Objective-C 中解決一些問題。一旦我在這本書中做了足夠多的問題(我想我解決了大約 35 個問題),我會在我讀過的章節中回顧一些 Leetcode 問題。這樣持續幾週之後,我覺得我已經有基礎了,然後進入下一個階段。

隨著基礎知識的完成,我開始著手學習《Elements of Programming Interviews》,這本書比前一本書要困難得多。這本書使我找到了之後一直堅持的學習計劃,其中有一項計劃需要四周,我順利的完成了。在我看來,對著一個人在白板上解釋問題或模擬電話面試是至關重要的,不是「非常重要」中的重要,而是「至關重要」中的重要。在學習時,你應該將其視為絶對要求。或許沒有它你也能找到一份工作,但這是我經過實踐之後的最佳經驗。

如果有人想模擬 iOS 的電話面試,我很樂意幫助,也許我們可以在時間允許的情況下解決一些問題。除了我以外,還有很多人願意幫忙。這個過程會很尷尬,但如果不尷尬的話,你也就不需要練習了,不是嗎?如果你開始在電話或白板上練習並且覺得有點尷尬,這表明你正在做你應該做的事情:練習。一直練習到不尷尬為止,就成功了。

經過大約一個月的每天持續練習後(每天 2 ~ 3 小時,週末更多),我開始主要做 Leetcode 的熱門面試題。我沒有把它們全做完,但我做得足夠多了。準備演算法面試的關鍵是讓自己在面試中指出問題,而不必知道如何解決每個問題,因為這是不可能的。在長達一週的現場面試中,我聽到的問題對自己來說幾乎都是新的,但它們與我見過的問題類似。這也是行業中大多數的發展方向。你也會有很多類似的問題,只不過特定的用例有著特定的約束條件。

熱門面試題 傳送門

和科技巨頭面試的 10 個經驗學習

我將把我學到的內容以要點形式呈現(不分先後順序)。下面列出的所有內容都是我相見恨晚的,無論是技術方面的準備還是在日程安排和其他非技術技巧方面。這些內容不是針對 iOS 的,而是廣泛適用於我們行業的所有面試。

堅持下去

當我剛畢業找工作的時候,我總是在學習一到兩個星期後就放棄了。我的理由是我根本不適合學習這些東西。在我第一次開始學習的幾個星期以來,進展很小,那麼浪費更多時間又有什麼意義呢?這一次,我想我別無選擇。最終,事情開始步入正軌。這需要付出大量的努力,但學習的意願最終會幫你成為成功的候選人,在眾多申請人中脫穎而出。

實踐幾乎就是一切

你當然需要一定的天賦能力,但練習(即學習)可以填補非常廣泛的能力差距。公司不會根據人們與生俱來的知識來僱用員工。他們會僱用那些能夠履行職責並表現良好的人,無論他們是在何時何地獲得這些知識。

與朋友一起練習

無論是在白板上還是 Codeshare 之類的平台上,在一定時間內,與某人進行模擬面試會讓自己對面試減少很多恐懼。因為你的大腦適應了,你會克服面對面試官說出一些完全愚蠢的東西時的尷尬。最好的方法是,確定幫助你的朋友懂那個你以前從未見過的問題,因為他們可以給你一些提示,幫助你找到解決方案。說真的,這種練習非常寶貴。

這是一個數字遊戲

你可能大量的練習後仍然沒有找到工作,因為合適的人還沒有看到你的履歷,或者你沒有及時找到白板問題的解決方案。你可以做的最好的事情是最大化你的機率。這意味著你可以去申請任何符合你工作需求並且你想要工作的地方,而不僅僅只申請自己的首選工作。我申請了心儀的前 20 個工作崗位!

專注於解決問題的過程,而不是結果

靠記憶是不夠的。我在一週內遇到的大約 20 個演算法問題都可能是我之前看到過的一類問題(並且我讓我的面試官知道這件事,儘管許多人不認為應該這樣做)。我看到過很多常見的模式,並且我能夠很快地提出解決方案。

不要氣餒

很多次面試中,我不知道解決方案,所以面試者不得不引導我找到解決方案。我仍然收到了我面試的所有公司的 offer 。而且,我覺得有一次面試徹底失敗了(那天的五次面試中有四個我認為是被完全拒絶的),但公司後來給了我一個 offer 。顯然,任何事情都可能發生。

不要輕易忽視問題

有很多次我和一個朋友一起練習,他對特別困難的問題不以為然,認為沒必要知道。奇怪的是,我記得他說過四種「永遠不會」出現的類型,但其中兩個就是出現了。雖然不是我們要練習的確切形式,但是非常相似。如果你在練習中經常出現某個概念,請學習它。

不要低估行為問題的重要性

我認為我成功的原因之一,是我誠實的回答是公司想要的。我的理論是,許多開發人員擁有強大的技術能力,仍然難以找到完美的工作,這是因為他們粗魯、不誠實,或者不願意和技術環境以外的人交談。在我看來,這些都是拒絶候選人的合理理由。請像練習技術問題一樣練習它們。

如果你了解更多的東西,請展示出來

在我現場面試的時候,有很多次我回答一個問題並提到我其他的一些知識,但解釋說我沒有時間在面試中完全實現這個解決方案。回答有關字元串的問題?展示你的 Unicode 知識或解釋如何支持 Unicode 。實現私有方法?討論方法的 Objective-C 代碼約定。更新表格視圖?談談可以支持的不同動畫。如果你並不瞭解,就不要說了,但是如果瞭解的話,它可以讓你在問題所提供的狹窄窗口之外展示知識儲備。

不要努力清除障礙,要努力設置障礙

面試表現顯然決定你是否能夠獲得某個公司的 offer ,但它也決定這份工作的內容是什麼樣的。如果你到了自認為足以得到 offer 的地步的話,那就太好了。但請記住,「勉強夠好」和「絶對足夠好」之間存在著很大差異。要努力爭取後者!儘管我相對缺乏經驗,但我最初(即還沒有談判)獲得的 offer 相當不錯,我相信面試表現發揮了很大的作用。

推薦:CS Career Hackers,軟體工程師的交流園地

差不多就是這樣了!這是一次瘋狂的旅程,我沒有遺憾。我真的,真的希望上述內容可以幫助大家克服困難,找到夢寐以求的工作。如果對 iOS 方向特別感興趣,我可以發佈一些技巧,所以請評論並告訴我。

其他也許有用的信息:這次跳槽是我大學畢業之後的第二份工作。在我的履歷中,只有大約兩年半的工作經驗,沒有任何特別華麗的實習或僱主;我畢業於一所非常小的學校,其招聘會中都沒有知名的軟體公司;我在 4 月下旬開始準備,在 6 月、 7 月開始申請;最後,幾個月後,我獲得了自己夢寐以求的工作。

我最後再一次推薦 CS Career Hackers。如果你正在尋找一個地方練習,並想和類似情況下的其他人交談,請瞭解一下這個社區。在我簽下 offer 的幾個月之後,我才發現它,真的是一個很棒的地方。

祝大家學習愉快!

(本文經 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 非名校毕业,如何在六天面试六家顶尖科技公司,并拿到全部 Offer?〉 。首圖來源:Flickr, CC Licensed

更多面試資訊

Amazon 面試 SEO PM 超詳盡過程分享:不同領域主管對談、追問式提問
捨棄了創意,微軟如何改造出世上「最簡單卻最好」的面試題?
三個月拿下 6 次主管職面試機會,LinkedIn 達人告訴你怎麼用才能達成最大效益


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

點關鍵字看更多相關文章: