五天面試5個科技巨頭并斬獲全部Offer后,他分享了這些心得經(jīng)驗
故事的開始是由于筆者覺得目前的工作成長空間有限,同時不想繼續(xù)呆在芝加哥想到灣區(qū)去尋求一些機(jī)會。人生苦短,想到就做!結(jié)果在五天內(nèi)瘋狂面試了硅谷的五個科技巨頭——LinkedIn、Salesforce、Google、Airbnb 和 Facebook,并斬獲了所有的 offer!希望他的準(zhǔn)備和面試經(jīng)歷能讓正在找工作或者想要尋求新機(jī)會的你看到不同公司的共性和特點(diǎn),并有所啟發(fā)和思考。Enjoy~
準(zhǔn)備階段
作者面試并獲得 Offer 的五家公司分別是 LinkedIn,Google,F(xiàn)acebook,Salesforce 以及 Airbnb,面試崗位分別是機(jī)器學(xué)習(xí)工程師、軟件工程師和數(shù)據(jù)工程師,由于崗位的領(lǐng)域和要求不同所以作者在編程、機(jī)器學(xué)習(xí)和系統(tǒng)設(shè)計三個領(lǐng)域進(jìn)行了準(zhǔn)備。
編程
雖然編程面試不能完全反應(yīng)一個人的綜合能力,但是我們也必須承認(rèn)沒有更好的方法在短時間內(nèi)判斷一個開發(fā)人員的能力了,所以對于編程需要進(jìn)行一些必要的練習(xí)。
作者主要使用了 Leetcode 和 Geekforgeeks 來進(jìn)行練習(xí),但也推薦了 Hackerrank 和 Lintcode 兩個練習(xí)資源。作者進(jìn)行了幾個星期的數(shù)據(jù)結(jié)合和算法練習(xí),主要集中于自己不熟悉的方面,同時做了一些較為常見的題目,一般每天練習(xí)兩道編程題。
下面是作者的心得:
1. 練習(xí),不斷練習(xí),關(guān)于編程的技能沒有捷徑;
2. 作者并沒有把網(wǎng)站上的題目全部做一遍,而是挑出了其中的 70 題來進(jìn)行練習(xí),作者認(rèn)為如果真的弄懂了 70 題的解題思路和完整的方法就足夠了,不在多在精!
3. 先從最難的題目開始,那么后面的都會越來越簡單;
4. 如果卡在一題上太久,那就果斷的參考答案的解決方法,更多的時間并不會獲得更多的回報;
5. 在解決問題后,要參考答案的解決方法對照自己的方法,很多時候你會為別人的方法拍案叫絕!
6. 使用一種你最熟悉同時大家都常用的語言,方便與人溝通交流。
系統(tǒng)設(shè)計
這一部分與作者原先的工作比較接近,作者介紹了在這類面試中經(jīng)常會問到的問題包括:系統(tǒng)架構(gòu)、面向?qū)ο蟮脑O(shè)計、數(shù)據(jù)機(jī)制設(shè)計、分布式系統(tǒng)設(shè)計、大規(guī)模運(yùn)算等等。
在網(wǎng)絡(luò)上有很多資源可以幫助我們進(jìn)行這方面的準(zhǔn)備,作者主要閱讀了系統(tǒng)設(shè)計面試、大規(guī)模系統(tǒng)架構(gòu)、案例學(xué)習(xí)等方面的文章,下面是一些推薦的資源:
https://www.hiredintech.com/classrooms/system-design/lesson/52
http://www.lecloud.net/tagged/scalability
http://tutorials.jenkov.com/software-architecture/index.html
作者認(rèn)為雖然系統(tǒng)設(shè)計面試會覆蓋很廣的問題,但是依舊有一些主線和規(guī)律可循,下面是他的經(jīng)驗分享:
1. 首先要明確需求,隨后進(jìn)行頂層設(shè)計,再進(jìn)一步進(jìn)入實施的細(xì)節(jié)。不要再一開始就不顧需求的一頭扎入技術(shù)細(xì)節(jié)中去;
2. 世界上沒有完美的系統(tǒng),實際的系統(tǒng)都是在各方面的要求權(quán)衡后得出的。
但對于系統(tǒng)設(shè)計來說,最好的方式還是實際的設(shè)計一個系統(tǒng)。例如在日常工作中除了完成工作外,對于你所使用的工具、架構(gòu)和庫進(jìn)行更深入的了解。如果你在使用 HBase,那么不要僅僅是利用客戶端運(yùn)行一些簡單的命令,而是嘗試去理解它的整體架構(gòu),包括讀寫流的表達(dá)、如何確保連續(xù)性,最小最大壓縮是如何進(jìn)行的、系統(tǒng)中如何使用 LRU 緩存和 Bloom 濾波器。你甚至可以對 HBase 和 Cassandra 進(jìn)行一些比較,看看他們之間架構(gòu)的相似和差異。這樣當(dāng)面試官讓你設(shè)計一個分布式的關(guān)鍵存儲時,你就可以從容的面對。
很多博客是不錯的學(xué)習(xí)資源,包括 Hacker Noon 和一些工作的工程師博客,同時也不要忘了開源工具的開發(fā)文檔。但最重要的事情,是保持一顆謙虛但好奇的心,像海綿一樣學(xué)習(xí)吸收你周圍的知識!
機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)的面試可以分為理論和產(chǎn)品設(shè)計兩個部分。
除非你是機(jī)器學(xué)習(xí)專業(yè)的同學(xué),那么詳細(xì)學(xué)習(xí)機(jī)器學(xué)習(xí)方面的教材和參考書是十分必要的,例如經(jīng)典的《Elements of Statistical Learning and Pattern Recognition and Machine Learning 》,如果你對其中一些問題感興趣的話,可以進(jìn)行深入的閱讀。
機(jī)器學(xué)習(xí)方面你需要確保對于一些基本概念熟練掌握,包括偏差-方差的權(quán)衡、過擬合、梯度下降、L1/L2 正則化、貝葉斯理論、boost 方法、協(xié)方差、降維等等。同時也要熟悉一系列公式,包括貝葉斯理論和支持向量機(jī)這類比較普遍的模型,并自己嘗試著練習(xí)實現(xiàn)一些模型,例如決策樹、K均值聚類等。如果在簡歷中寫入了什么模型,你一定要對這個模型了然于心。
對于機(jī)器學(xué)習(xí)的產(chǎn)品設(shè)計,你需要了解通常的產(chǎn)品開發(fā)流程:
1. 找出產(chǎn)品開發(fā)的目標(biāo):預(yù)測、推薦還是聚類、搜索?
2. 挑選一種合適的算法:監(jiān)督或者非監(jiān)督、分類還是回歸?線性模型/決策樹/還是神經(jīng)網(wǎng)絡(luò)等等,要能拿出選擇的理由;
3. 對數(shù)據(jù)進(jìn)行特征工程;
4. 對于模型表現(xiàn)進(jìn)行度量和評價;
5. 在產(chǎn)品層面對模型進(jìn)行進(jìn)一步優(yōu)化。
作者再一次強(qiáng)調(diào)了學(xué)習(xí)的好奇心以及連續(xù)性的重要性,不要僅僅是調(diào)用一下各個機(jī)器學(xué)習(xí)的 API,而是真正的去理解后面的原理是什么,去了解為什么隨機(jī)梯度下降適合于分布式訓(xùn)練、XGBoost 與傳統(tǒng)的 GBDT 有何不同,在比如損失函數(shù)的特征是什么,為什們需要進(jìn)行二階微分等等。
面試過程
作者先是在領(lǐng)英上與 HR 通信,了解各個公司的需求,隨后進(jìn)行了幾個月的準(zhǔn)備工作。隨后到灣區(qū)進(jìn)行了一個星期的面試,面了 30 多家頂級的科技公司,并最終拿到了其中的五家 Offer。
電話面試
每家公司的電話面試都是標(biāo)準(zhǔn)的流程、唯一不同的地方就是持續(xù)時間的長短。在電話面試中,對于專業(yè)技能的熟練程度十分重要,因為時間有限,而且很多時候只有一次機(jī)會。你要非常迅速的識別出問題的類型并給出高質(zhì)量的答案。同時需要告訴面試官你的想法和思路,畢竟面試中溝通和交流是最重要的。記住,不要去背答案,面試官一眼就會看穿你的。對于機(jī)器學(xué)習(xí)的公司來說,在面試中你需要向他們展示出你的機(jī)器學(xué)習(xí)技能。
同時需要把握好你的時間,作者在一天下午安排了三場電話面試,但是這有利有弊,可能你可以在先前的面試中得到更多的自行,但也有可能被先前的不順利所影響,所以這種方式因人而異。同時面試多家公司的好處在于可以在有限的時間內(nèi)盡可能多的參與面試,甚至可以跳過某些公司的第二論電話面試,直接進(jìn)入終面。最令人意外的是谷歌,他們在知道作者這一周有其它四場面試的時候甚至省略了所有的電話面試,直接進(jìn)入現(xiàn)場面試!作者欣然接受,雖然很累,但是誰也不會拒絕 Google 的邀請吧!
現(xiàn)場面試(Onsite)
這是我第一個到他們 Sunnyvale 辦公室現(xiàn)場的面試。辦公室很整潔,人們看起來也很專業(yè)。
每個面試的時長是一個小時。編程問題是都是比較常規(guī)的,但 ML 的問題可能會有點(diǎn)棘手。在這之前,我收到了一封來自 HR 的郵件,里面包含了一些非常有用的準(zhǔn)備材料,所以有了思想準(zhǔn)備面試也就平穩(wěn)飄過。我早就聽說 LinkedIn 擁有硅谷最好的伙食,實際也是數(shù)一數(shù)二。
微軟的收購似乎已經(jīng)解決了 LinkedIn 的財務(wù)負(fù)擔(dān),并把他們解放出來去做真正酷的事情。視頻和專業(yè)廣告等新功能是令人興奮的。作為一家專注于專業(yè)發(fā)展的公司,LinkedIn 把自己員工的成長擺在了優(yōu)先考慮的位置。許多團(tuán)隊,如廣告相關(guān)性和新聞流排序組都正在招兵買馬中,所以如果你想加入的話,趕緊行動起來。
Salesforce Einstein AI 計劃
“搖滾”明星團(tuán)隊的搖明星項目。這個團(tuán)隊很新,感覺很像一個創(chuàng)業(yè)公司。該產(chǎn)品構(gòu)建在 Scala 堆棧上,所以類型安全是一個真實的東西!我在他們的 Palo Alto 辦公室面試過。團(tuán)隊有凝聚力的文化,工作生活的平衡非常好。每個人都對自己正在做的事情充滿激情,而且真的很享受。與其他 Onsite 相比,四次會議的時間相對短一些,我感覺都沒有呆夠。面試結(jié)束后,Matthew Tovbin 還帶我去了惠普的車庫散步 :)
絕對的行業(yè)領(lǐng)導(dǎo)者,這是毋庸置疑的。但真的去了之后,還是由衷感慨道,它是真的,真的很大。我花了 20 分鐘騎自行車去見我的朋友。永遠(yuǎn)是開發(fā)人員的好地方。我在山景城(Mountain View)的那片樓區(qū)的許多建筑之一里接受的 Onsite,我甚至不知道到底是哪一幢,因為它太大了。
我的面試官看起來都很聰明,但一旦他們開始說話,就更聰明了。和這些人一起工作將會很愉快。我對谷歌的采訪感到特別的一點(diǎn)是,對算法復(fù)雜性的分析是非常重要的。確保你真的明白什么是大O符號的意思!
Airbnb
快速擴(kuò)張的獨(dú)角獸擁有獨(dú)特的文化,可以說是硅谷最美麗的辦公室。新產(chǎn)品如體驗、餐廳預(yù)訂、高端小眾的市場,以及向中國的擴(kuò)張都為它光明的前景做出了貢獻(xiàn)。如果你能承受風(fēng)險,希望快速成長,那么 Airbnb 一定是你的不二選擇。
Airbnb 的編碼面試有點(diǎn)獨(dú)特,因為你將在 IDE 而不是白板上編程,所以你的代碼需要編譯并給出正確的答案。有些問題真的很難解決。
他們還準(zhǔn)備了獨(dú)一無二的跨職能面試。這就是 Airbnb 認(rèn)真對待文化的方式,在技術(shù)上很優(yōu)秀并不能確保一定拿到工作機(jī)會。對我來說,這兩個跨職能面試真的很有趣。我和面試官進(jìn)行了輕松隨性的交談,我們在會議結(jié)束時都感到很高興。
總的來說,我認(rèn)為 Airbnb 的網(wǎng)站是最難的,因為問題的難度、更長的持續(xù)時間,以及獨(dú)特的跨功能面試。如果你感興趣,一定要了解他們的文化和核心價值觀。
另一個仍在快速增長的巨人,比谷歌更小更快。隨著它的產(chǎn)品線在社交網(wǎng)絡(luò)市場上占據(jù)主導(dǎo)地位,在人工智能和 VR 領(lǐng)域的巨大投資,我看到的都是未來 Facebook 有更多的增長潛力。如果你對機(jī)器學(xué)習(xí)很感興趣的話,那是一個完美的地方,就像 Yann LeCun 和 Yangqing Jia 一樣。
我的 Onsite 被安排在了 20 號樓,那是一個有屋頂花園和海景的地方,也是小扎辦公室所在的地方。我不確定面試官是否得到了指示,但我沒有清楚的表明我的解決方案是否正確,盡管我相信他們是正確的。
前四天的高強(qiáng)度面試開始出現(xiàn)問題,中午我感到頭特別痛。我堅持完成了下午的面試部分,但感覺自己做得不好。所以當(dāng)我得知我也得到了他們的 offer,還是有些小驚訝的。
總的來說,我覺得那里的人相信公司的愿景,并為他們正在建設(shè)的東西感到自豪。作為一個擁有 5000 億市值和增長的公司,F(xiàn)acebook 是你發(fā)展事業(yè)的理想之地。
在與這些公司交流的過程中,我總結(jié)了一些談判重要的小技巧,希望對你們有幫助:
-
做事說話要有專業(yè)的態(tài)度
-
清楚自己的優(yōu)勢
-
對團(tuán)隊和項目是真正感興趣
-
保持你的耐心和信心
-
可以有主見有堅持但不失禮貌
-
永遠(yuǎn)不要撒謊
Databricks 的失敗經(jīng)歷
所有成功都始于失敗,包括面試。在我開始面試這些公司之前,其實五月份的 Databricks 面試我是失敗了。
今年 4 月的時候,Xiangrui 通過 LinkedIn 聯(lián)系了我,詢問我是否對 Spark MLlib 團(tuán)隊的職位感興趣。我非常激動,一個是因為我一直在用 Spark 非常喜歡 Scala,二來 Databricks 工程師是一流的,三是 Spark 正在革新整個大數(shù)據(jù)世界。這是一個我不能錯過的機(jī)會,所以幾天后我就開始面試了。
這個門檻很高,過程很長,包括一份預(yù)先篩選的問卷,一個電話面試,一個編程任務(wù),還有一個完整的終面。我成功到了最后的現(xiàn)場終面環(huán)節(jié),并參觀了他們在舊金山市中心的辦公室,那里可以看到金銀島。
我的面試官既聰明又謙虛。在面試中,我經(jīng)常覺得自己被推到了極限。前面本來進(jìn)行的還算順利,直到一個現(xiàn)在想到還覺得像災(zāi)難一樣的環(huán)節(jié):我完全搞砸了,因為我沒有足夠的技能和準(zhǔn)備,結(jié)果完全失敗了…雖然面試結(jié)束了,但我真的很喜歡跟他聊天。
幾天后我就收到了拒信。這是意料之中的事,但我還是感到沮喪了幾天。雖然我錯過了在那里工作的機(jī)會,但我衷心希望他們能繼續(xù)發(fā)揮更大的影響力和成就。
經(jīng)歷完這些后的思考
-
生命是短暫的,職業(yè)生涯則更短,所以要在正確的時間做正確的事。
-
面試不只是面試,這是認(rèn)識新朋友建立社交圈的最佳時機(jī)。
-
永遠(yuǎn)保持好奇心和學(xué)習(xí)的熱情。
-
談判技巧對你的面試工作滿意度很重要。
-
獲得工作機(jī)會只意味著你符合了他們的最低要求,沒有最好,只有更好。
從 5 月的第一次面試到最終接受 9 月底的工作,我的第一次職業(yè)生涯的改變真的是道阻且長。我很難做好十足的準(zhǔn)備,因為我需要在目前的工作中保持良好的表現(xiàn)。幾個星期以來,我經(jīng)常為準(zhǔn)備面試到凌晨 1 點(diǎn),第二天早上 8 點(diǎn)半起床,全身心地投入到工作中。5 天內(nèi)面試五家公司的壓力很大,而且風(fēng)險很大,除非你的日程安排很緊,否則我不建議你這樣做。但在交流中,如果你能獲得多個 offer,的確會讓你處在一個比較主動的位置并且受益匪淺。