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