當前位置:
首頁 > 新聞 > 「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

【新智元導讀】一位華裔技術工程師曾笑寒連續面試了 LinkedIn、Salesforce、Google、Airbnb 和 Facebook 五家矽谷科技巨頭,最終全部都拿到了 Offer。作者分享了在面對五家不同的科技公司及不同的崗位,所做的準備工作、面試技巧以及自己的一些實踐經驗,希望可以為正在準備跳槽的工程師提供一些幫助。

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

在 2017 年 7 月 24 日至 28 日的五天里,一位華裔技術工程師曾笑寒(https://www.linkedin.com/in/xiaohanzeng)連續面試了 LinkedIn、Salesforce、Google、Airbnb 和 Facebook 五家矽谷科技巨頭,最終也全部都拿到了 Offer。

在此之前,並非計算機專業出身、工作時間短暫、知識及經驗均有限的作者,在經歷一次失敗的面試之後,並未丟失信心,而是從頭來過。作為一名全職工作者,其在閑暇之餘準備面試,能同時拿到 5 家科技巨頭的 Offer 這樣的結果確實非常地幸運,但是其背後付出的努力也不容忽視。本文接下來將與大家分享作者在面對五家不同的科技公司及不同的崗位,所做的準備工作、面試技巧以及自己的一些實踐經驗,希望可以為正在準備跳槽的工程師提供一些幫助。

以下為譯文:

最初的緣由

起因是 2017 年即今年,我作為一名普通的軟體開發工程師,已經在 Groupon 芝加哥總部工作了近三年。這是我的第一份工作,我的團隊和項目都非常贊,我們一起構建很酷的東西、在公司內部發揮各自的影響力、發表論文等等。但是,工作輕鬆,生活自在,隨著時間的推移,我發現我的學習速度正逐漸放緩,內心開始希望迎接新的挑戰。同時作為一名在芝加哥住了八年的碼工,也非常嚮往灣區的優秀公司。

生命短暫,職業生涯則更短。在與妻子溝通並得到她的全力支持之後,我決定採取行動,做出第一次職業轉變。

準備

首先我對機器學習的職位很感興趣,但其實我申請這五家公司的職位名稱和面試過程都稍有不同。LinkedIn、Google、Facebook 的職位是機器學習工程師,Salesforce 是數據工程師,Airbnb 是軟體工程師。因此我需要準備三個不同領域:演算法和編程、機器學習和系統設計。

由於白天還有一份全職工作,所以只能晚上喝周末抽出一些時間準備面試,總體而言,一共花了 2-3 個月的時間。以下就是我如何在這三個方面做準備。

演算法和編程

的確,演算法和編程面試並不是評估開發人員所有技能的最好方法,但短時間內沒有更好的辦法來判斷是否是一名優秀的工程師。

這一塊其實是最好也最難準備的。一方面有許多的網站提供了大量的題目可以練習,另一方面也需要投入大量時間精力。我主要使用 Leetcode 和 Geeksforgeeks 進行練習,還推薦 Hackerrank 和 Lintcode。我花了幾個星期的時間過一遍常見的數據結構和演算法,然後針對性地重點關注我不太熟悉的領域,最後解決了一些常見問題。由於我時間有限,我通常每天做兩題。

我的想法是:

  1. 多練習,沒有捷徑。

  2. 與其做完 Leetcode 上所有 600 道題,不如覆蓋全部類型並徹底理解每一道題。我總共做了大約 70 道題,我認為已經足夠了。我的想法是,如果 70 道題還沒有幫助,那麼你可能方法有問題,做 700 道也沒有任何幫助。

  3. 做最難的題,其餘的都會變得更加容易。

  4. 如果一道題超過兩小時都做不完,可以看答案了。再花時間思考並不值得。

  5. 做完一道題後一定要看答案。我很佩服那些一行 Python 代碼解決問題的人,雖然有時依賴語言的某個特性,但實在是很精妙。

  6. 使用你最熟悉的常用語言,在面試時可以用到。

系統設計

系統設計領域與實際工作經驗更密切相關。 如果你有不少系統設計的經驗,那麼花的時間可以相對少一些。雖然是很看經驗,但也還是可以準備的,網上也有很多的經驗貼和練習題。我主要閱讀關於系統設計面試、大型系統架構、案例研究相關文章。

個人感覺這個領域面試時會涉及很多問題,包括但不限於系統架構、面向對象的設計、資料庫模式設計、分散式系統設計、可擴展性等。因為我主要面試的職位是機器學習相關的,所以這次面試遇到的 session 少一些(主要是 Airbnb)。

這些是我認為比較有幫助的一些資料:

  • 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/

雖然系統設計面試會涵蓋很多主題,如何回答這些問題還是有一些通用思路的:

  1. 先明白需求,然後考慮大框架,最後是具體設計。不要馬上跳到細節上,而不弄明白需求是什麼。

  2. 沒有完美的系統設計。根據需要做出取捨(trade-off)。

儘管如此,準備系統設計面試的最好方法就是坐下來設計一個系統,深入探索你平時使用的工具、框架和庫。舉個例子,要是工作中用到 HBase,有的人可能就只是簡單的用一下 Client 跑一些 DDL,做一些 Get,但有的人可能就會攝入一些了解整個系統的設計,包括整個讀 / 寫流程、如何保證很強的一致性、次要 / 主要壓縮起到作用、LRU 緩存和 Bloom Filter 的作用等等。你甚至可以將 HBase 和 Cassandra 進行比較,看看它們設計上的相似點和不同之處。面試時如果要求你設計一個分散式的鍵值存儲,你就不會覺得太突然。

許多博客也能提供很多知識,比如 Hacker Noon、一些公司的工程博客以及開源項目的官方文檔。

最重要的是要保持好奇心和謙虛。像海綿一樣吸收知識的養分。

機器學習

機器學習面試可以分為理論和產品設計兩個方面。

除非你有機器學習研究經驗或者機器學習課程學得很好,那麼閱讀一些教科書是很有幫助的。經典教材如《The Elements of Statistical Learning》和《Pattern Recognition and Machine Learning》都很有幫助,如果你對特定領域感興趣,你可以閱讀更多相關內容。

確保你理解如偏差 / 方差權衡、過度擬合、梯度下降,L1/L2 正則化、貝葉斯定理、協同過濾、降維等基本概念。熟悉常用公式與模型推導,如貝葉斯定理,如邏輯回歸和支持向量機。嘗試實現簡單的模型,如決策樹和 K 均值聚類。如果你在簡歷上提到一些模型,確保你對其完全理解並能評價其優缺點。

對於機器學習產品設計,要了解構建機器學習產品的一般過程。我是這樣做的:

  1. 找出目標是什麼:預測、推薦、聚類、搜索等。

  2. 選擇正確的演算法:監督與無監督、分類與回歸、廣義線性模型 / 決策樹 / 神經網路等。為做出的選擇給出原因。

  3. 根據可用數據選擇 / 設計相關功能。

  4. 選擇模型性能指標。

  5. 可以考慮如何為生產優化模型。

我想再次強調保持好奇心和持續學習的重要性。不要僅僅用 Spark MLlib 或者 XGBoost 簡單地調用 API 訓練出一個模型,我更推薦去研究為什麼 Stochastic gradient descent 適合分散式訓練,又或者了解 XGBoost 和通常的 GBDT 有什麼區別,包括對 Loss Function 的定義有何特別之處,為什麼用到二階導等等。

面試過程

最開始我在 LinkedIn 上回復 HR 的留言,並請其給我推薦職位。在某家明星創業公司求職失敗後(我稍後會談到),我努力準備了好幾個月,在 HR 的幫助下,我在灣區安排了整整一周的現場面試。我周日抵達灣區,在世界上最好的幾家科技公司五天面試了大約三十位面試官,很幸運地,得到了這五家的工作機會。

電話面試

所有電話面試都是標準的。唯一的區別是面試時間:LinkedIn 面試 1 小時,而 Facebook 和 Airbnb 則是 45 分鐘。

熟練程度是電話面試的關鍵,因為時間有限,通常你只有一次機會。你必須很快判斷出問題類型,並給出一個宏觀解決方案。一定要和面試官溝通你的思路,說明你的意圖。這可能一開始會讓你速度慢一點,但溝通比任何事情都重要,會對面試有很大幫助。不要死背答案,因為面試官肯定會一眼看穿。

對於機器學習的職位,一些公司會問機器學習相關問題,因此面試前溫習鞏固一下機器學習方面的知識與技能。

為了更好地利用我的時間,我在同一個下午約了三個電話面試,每個之間間隔 1 小時休息。這樣的做法不一定適合所有人,好處是可以趁熱打鐵狀態好,壞處是如果一個沒面好,後面的面試可能會受到影響。

同時面多家公司的一個好處是有時候能夠省去某些環節。有些矽谷公司規定對於灣區以外的面試人要進行兩輪電話面試。我之所以能夠省去 Airbnb 和 Salesforce 第二輪電話面試,是因為對方得知我一輪電話面試就拿到了 LinkedIn 和 Facebook 現場面試的機會。

更令人吃驚的是,Google 甚至沒電話面試就請我參加現場面試,這也是因為對方得知我下周要來灣區參加四個現場面試。我知道這會讓我很累,但是,沒有人會拒絕 Google 的現場面試邀請!

現場面試

五家公司雖然都是 IT 公司,但處於不同的領域,文化上也各有千秋。我簡單說一說自己對它們的感覺。另外雖然不算是吃貨,但作為民以食為天的中國人,自然也要對午飯進行一下評價。

LinkedIn

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

這是我第一個現場面試,我在 LinkedIn 的 Sunnyvale 辦公室。作為專註於職場社交的公司,LinkedIn 的特點是端莊、大氣、職業化,內部文化也相應地非常專業。員工的穿著都是商務休閑裝,整體給人一種職場精英的感覺,與他們的宗旨非常契合。

面試方面,編程和機器學習各 1 小時。編程面試都是標準問題,但機器學習面試可能會有些困難。儘管如此,我之前收到 HR 的電子郵件,裡面包含了非常有用的準備材料,因此面試中沒有太出乎意料的事情。我聽說 LinkedIn 有矽谷最好的食堂,從我的實際體驗來看,這差不多是真的。

LinkedIn 被微軟收購以後少了經濟壓力,使其可以放開手做非常酷的事情。LinkedIn 新添加的視頻和專業廣告等功能令人興奮。作為一家專註於職業發展的公司,LinkedIn 優先考慮其員工的職業成長。目前包括 ads relevance、feed ranking 在內很多組都在招人,所以如果你想加入,那就趕快行動。

Salesforce Einstein

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

Einstein 是 Salesforce 近幾年主推的明星產品,擁有一個明星團隊。這個團隊非常新,感覺非常像初創公司。團隊主要是使用 Scala,Tech stack 都是 Akka/Play/Spark 那一套,這也是最吸引我的一點。我最初接觸到 Einstein 是在 2017 年 4 月的 ScalaDays 上聽了 Matthew 以《Type safety in machine learning》為題的演講,之後又在 Spark Summit West 上聽了 Leah 的演講。喜歡 Scala 的人一定不要錯過。

面試地點是 Salesforce 位於 Palo Alto 的辦公室。這個團隊很有凝聚力,能保證工作生活平衡。每個人都熱愛並真正享受自己做的東西。與其他現現場面試相比,四場 session 總共時間略短,總體側重於 Data engineering 和 System design。另外需要注意的是,coding 也是要上機跑的。面試後,Matthew 甚至帶我參觀了惠普的車庫。

Google

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

當今業界領頭人,沒有什麼可說的。最重要的印象就是大,非常非常大。去見我 Google 的朋友的時候騎自行車騎了 20 分鐘。中午吃飯排隊人很多。

我在 Mountain View 的許多樓里的一幢進行面試。我不知道具體是哪一幢,因為 Google 真的非常大。

面試官看起來都很年輕,他們一說話就顯得很聰明。和他們一起工作一定是非常愉快的。

值得注意的是 Google 特彆強調演算法的複雜度,確保你真的明白時間和空間複雜度,能夠針對瓶頸進行優化!這一點與別的公司不同。

Airbnb

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

快速擴張的 Unicorn 公司,擁有非常獨特的公司文化以及可能是矽谷最美麗的辦公室。推出了新產品包括 「體驗」 以及餐館預訂服務、在高端小眾市場進行嘗試、以及進入中國市場,這些都為 Airbnb 的前景增添了積極因素。如果可以承受高風險,並希望獲得快速增長的 pre-IPO 經驗,那麼 Airbnb 是完美的選擇。

Airbnb 的 coding 面試有點獨特,要求上機,並且每個 Session 只有 45 分鐘時間,某些題目的難度也相當大,所以壓力還是不小的。

Airbnb 獨樹一幟的跨職能面試,這也是我最享受的,我和面試官輕鬆交流。Airbnb 認真對待公司文化,技術上優秀並不能保證拿到 Offer。

總的來說,我認為 Airbnb 的現場面試流程最長,環節最多,題目很難,總體感覺最累。如果你有興趣,一定要了解他們的文化和核心價值觀。

Facebook

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

另一個仍在高速發展的巨人,與 Google 相比規模更小,速度更快。在社交網路市場鋪開了全面產品線,處於壟斷地位,以及在 AI 和 VR 方面的大量投資,未來 Facebook 只有更多的增長潛力。有像 Yann LeCun 和 Yangqing Jia 這樣的明星,如果你對機器學習感興趣的話,這是一個完美的地方。

我的面試是在樓頂有花園的海景房 Building 20,也是扎克伯格辦公的地方。

Facebook 的整個面試過程我自己感覺是最不好的,一方面是因為已經是第五場面試,整個人已經很疲勞了,另外可能是 Facebook 的規定,面試官都沒有對我的答案給出特別明顯的好與不好的信號,雖然我覺得自己的答案沒有錯,但也稍微有些拿不準自己的表現。

兩場 Coding 還算是正常,兩道題都在面試官的提醒下總共給出了兩種解法,有一場還問了兩道題。下午我已經感覺自己生病了,頭疼得厲害,最後硬撐著完成了面試,出來以後感覺不太好,沒想到最後竟然也拿到 Offer 了。

總體來說,我覺得 Facebook 的工作人員堅信其公司願景,並為他們正在建設的東西感到自豪。作為一個擁有 5 萬億市值還在不斷成長的公司,Facebook 是你職業發展的絕佳地點。

工資談判

很多人覺得自己不擅長談判,或者很多時候不好意思開口。我個人覺得求職實際上是在出售自己的時間,而時間對於一個人來說是唯一不可再生的資源,如果你自己都覺得你的時間不值錢,那麼別人也不會覺得它值錢。

這是一個很大的話題,這裡我不打算深入討論,但我發現這篇文章非常有幫助。https://medium.freecodecamp.org/how-not-to-bomb-your-offer-negotiation-c46bb9bc7dea

有幾點我覺得值得注意:

  1. 保持職業風度。

  2. 了解你的籌碼。

  3. 顯示出你對團隊和項目的興趣。

  4. 保持耐心和信心。

  5. 態度堅定,但要有禮貌。

  6. 絕對不要撒謊。

我在 Databricks 失敗的面試

「面霸實戰」五天拿下Google、Facebook等矽谷五家公司Offer

所有的成功始於失敗,包括面試。在我開始面試這五家公司之前,我五月份在 Databricks 的面試失敗了。

早在四月,當時是 Spark MLlib 組的經理 Xiangrui 在 LinkedIn 上聯繫我,詢問我是否對 Spark MLlib 團隊中的某個職位感興趣。我當時受寵若驚,認為這是一個絕佳的機會。

  • 我使用 Spark 工作,很喜歡 Scala;

  • Databricks 的工程師實力是一流的;

  • Spark 正在給整個大數據世界帶來變革。

這是一個我不能錯過的機會,於是簡單地準備了兩天就開始了面試流程。

Databricks 的水平要求非常高,整個過程相當長,包括一個初篩問卷、一個電話面試、一道 coding 大作業以及最後的現場面試。

我獲得了現場面試邀請,並參觀了位於舊金山市區的辦公室,可以看到海灣。

我的面試官非常聰明但同樣謙遜。在面試中,我經常感到自己被 push 到了極限。下午有一輪是針對機器學習演算法理論,一方面自己實力不足,另一方面準備不夠充分,整個環節是一場災難。最後和 Xiangrui 簡單聊了聊。

幾天後我收到了拒信,這是預料之中的,但我還是鬱悶了好幾天。雖然沒有機會在 Databricks 工作,但我相信他們可以繼續創造出更大的影響和成就。

後記

  1. 生命短暫,職業生涯更短。在正確的時間做出正確的舉動。

  2. 集中面試很累,但也會給你很大優勢。

  3. 面試不僅僅是個找工作的過程,更是個交朋友的機會。矽谷圈子就那麼大。

  4. 平時有機會也要多交朋友,比如開會就是個很棒的機會。Databricks、Salesforce、Airbnb 的面試機會都源於我去過的 Spark Summit 和 Scala Days。

  5. 拿到 Offer 僅僅代表你達到了公司的最低標準。最高標準沒有上線,所以要保持持續進步。

從五月的第一次面試到九月底的最後一次面試,我完成了職業生涯的第一次跳槽,期間過程漫長且不易。

準備過程還是很辛苦的,因為我還要繼續本職工作。有一段時間每天晚上都是準備到凌晨一點才睡,第二天早上八點半起床全身心投入工作。

五天面試五家公司也是高度緊張有高度風險,除非你時間很緊,否則我不建議這樣做。但如果你拿到幾個 Offer 會在談工資時有很大優勢。

最後,感謝在這個過程中所有幫助過我給過我建議的朋友。感謝所有給我面試機會和 Offer 的公司,跟我一直聯繫的 HR,以及每個抽出寶貴時間和我聊天的人。也感謝一直默默支持我的家人們——看著我一步步成長的父母,為我所做的一切的我親愛的妻子、和每天都給我暖心笑容的女兒。


原文:I interviewed at five top companies in Silicon Valley in five days, and luckily got five job offers:https://medium.com/@XiaohanZeng/i-interviewed-at-five-top-companies-in-silicon-valley-in-five-days-and-luckily-got-five-job-offers-25178cf74e0f

作者:Xiaohan Zeng

譯者:牟雲飛

責編:屠敏

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

LeCun 卸任!Facebook人工智慧實驗室換帥

TAG:新智元 |