作者董飛,大學就讀中國南開大學,畢業後於中國新創公司酷迅工作,而後前往杜克大學進修碩士學位,畢業後先後在美國 Linkedin 與 Coursera 擔任工程師。本文為他分享自己在美國矽穀的求職經驗。有興趣的讀者可以查看他的 LinkedIn 連結,他的知乎也提供很多相關心得。
大家好,我是來自矽穀的董飛,應國內朋友邀請,很高興跟大家交流一下美國大數據工程師的麵試攻略。
個人介紹
先做一個自我介紹,本科南開大學畢業後,加入了一個創業公司 kuxun(酷迅機票),做即時資訊檢索,後來進入百度基礎架構組,搭建了 Baidu App Engine 的早期版本,隨後去 Duke 大學留學,在攻讀碩士期間,做跟 Hadoop 大數據相關的研究專案 Starfish,之後在 Amazon EC2 部門實習,了解它們的內部架構,畢業後加入 Linkedin,做廣告組的架構,涉及 Hadoop 優化,Data Pipeline, Offline/Online, 即時係統。最新是在 Coursera 從事數據工程師工作。
在多年工作中,除了對技術的不懈追求,也積累了大量的麵試經驗,從國內的一線網路公司百度、阿裏巴巴、奇虎、人人,到美國一線公司 Facebook、Google、Linkedin、Twitter、Amazon ,到熱門 Startup、Uber、Pinterest、Airbnb、Box、Dropbox、Snapchat、Houzz,拿到 10+ offer,並且在 Linkedin 期間也麵試過 100+ 候選人,參與麵試題製定,樂於分享並幫助很多人成功求職,實現目標。
矽穀高科技公司介紹
我們看一下這張矽穀地圖,它坐落於美國加州,從聖荷西到舊金山的狹長地帶,中間是 San francisco bay,簡稱灣區。它的由來是這邊有電腦核心處理器中離不開的矽,30 年來,矽穀就發展成為無數技術性創業公司的搖籃。在 20 多年前,這裡就有很多硬體公司成功上市,如 Intel、Oracle、Apple、Cisco。10 年前,網路的興起,造就了 Yahoo、Google、Ebay 的神奇。而如今 Tesla、Facebook、Twitter、Linkedin 正扶搖直上,成為美股高科技股的領頭羊。這些公司的市值從幾十 billion 到幾百 billion,PE 從負數到上千,瘋狂的估值背後也改變了世界。
如果說矽穀成功是有原因的,我覺得有兩點:
一方麵,地理位置是得天獨厚吸引大量人才,這裡有 Stanford 和加州州立高校提供智力庫的支持,在矽穀可以看到來自全世界的最聰明的人,中國、印度人、猶太人是構成這些工程師的主力。雖然國內做技術自嘲為碼農,但在矽穀成為一個優秀工程師還是收穫頗豐的。
另一方麵,創業是一個永恒的話題,在史丹佛大學有個說法——空氣中都飄揚中創業的味道,一些早期員工通過上市套現又積累經驗成了天使投資,Y Combinator、各種技術 Forum、Meetup 、創業導師等都很活躍。資本的力量功不可沒,早年 VC 通過投資、收購、上市放大形成一個雪球效應。大家總喜歡問什麽是 next big thing,哪一個是下一個 Facebook,下一個 Musk,根據統計 10 年能成就一個千億以上的公司,目前這個進程正在縮短。
我就拿 Linkedin 作為例子,介紹高科技公司(FLG)是什麽樣子。它是成立於 2003 年的職業社群網站,在 10 年的發展中,也不是一下子爆發的,目前有 3 億的全球使用者,雖然跟 Facebook、Google 10 億+使用者沒法比,但是它有很好的護城河,使用者定位高端精準,單位價值高。這張照片中左邊這位是創辦人 Reid Hoffman,是 Paypal 黑幫成員,在矽穀也是呼風喚雨的大佬,目前是董事和投資人。中間這位是 CEO Jeff,2013 年被 Glassdoor 評為最佳 CEO,作為職業經理人,成功幫助 linkedin 高速成長,他最喜歡提到 transformation,希望我們每個員工能挑戰自我,在各自崗位上進化。
Linkedin 提供了員工很好的福利,有號稱灣區最佳的免費食堂,每個月一次的 In day、Hack day,幫助員工內部創業的 Incumbator 計劃。它特點是數據驅動的開發產品,比如 「People you may know」、「Job you may be interested」。我做過 Sponroed Ads 都是需要很強數據背景和資料科學家的支持。它的商業模式也很獨特,有 3 個屬性:針對公司的招募服務、針對廣告商的市場服務、針對個人的訂閱服務,還有最新 Sales Solution,因為這麽多可能性,成為華爾街的寵兒。
矽穀最新的創業動向
說矽穀,除了那些已經成功的大公司,不得不說一下現在最新的創業動向,這些代表了未來下一個 FLG。我總結了一些領域和代表公司:雲端運算(Box, Dropbox)、大數據(Cloudera)、消費網路(Pinterest)、健康(Fitbit)、通訊(Snapchat)、支付(Square)、生活(Uber)。
這裡是華爾街網站更新的最新融資規模,比如 Uber 就達到 180 億美金的估值,我當時拿到 Offer 沒去,還是覺得很瘋狂,如果細看這張表,大家可以看到矽穀(藍色)尤其是舊金山它們的融資規模遠遠大於其他地區,還是地理決定論。而在國內的兩家小米,京東都是在北京,而最近大家看到一些泡沫論,說什麽阿裏巴巴上市是否美股到頂,經緯 VC 創辦人也提醒我們泡沫的風險,我無法判斷。如果能參與到下一波浪潮裡麵去是很過癮的。我推薦大家去看看《浪潮之巔》、《奇點臨近》,我還是很期待未來 20 年的技術革命。
大數據相關技術
我個人熱愛大數據,在矽穀這也是大家津津樂道的,有個笑話:大數據就像青少年的性,每個人都說得頭頭是道,卻沒人真的知道該怎麽做(big data is like teenage sex: everyone talks about it, nobody really knows how to do it.)其實大家還是興趣驅動就好,不要那麽功利,大數據技術涉及太多,平常工作中也是慢慢積累,有無數的坑和技術細節需要克服。並不是說那個技術最熱就要用哪個,如果你用不好,你的壓力很大的,舉個例子,你用某個開源數據庫,發現它偶爾有數據丟失怎麽辦,如果這是線上服務,你不斷收到報警,這時候你當時選用它的優點 scalable,容錯性都沒意義了。
接著說大數據,這裡麵 Hadoop 作為產業標準,我麵過的除了 Google、微軟不用,幾乎所有的公司都在用,建議大家利用這個機會。這裡麵有三巨頭,Cloudera 是老牌 Hadoop 諮詢公司,Hadoop 的創辦人做 CTO,Hortonworks 也是很多 Hadoop 的 committee,MapR 是提出 hdfs 的 erasure 編碼方式高效而著名,它們都是融了巨資,模式也很像,先推出社群免費版,但有個商業版提供更好的管理。而今年出現一匹黑馬 Spark,簡單說就是記憶體級別的計算,比 Hadoop 框架裡能節約 IO,利用快取、能適應批次處理、迭代、江河運算(stream computing)。
這裡看一下它的生態係統,如何學 Hadoop 是個循序漸進的過程,先要理解學習它的 Core 係統,HDFS, MapReduce、Common,在外圍有無數的係統工具方便開發,我個人用過的是 Avro 作為數據格式,Zookeeper 作為選主的高可靠性的組件,Solr 作為搜尋接口,Pig 搭建工作流,Hive 數據倉庫查詢,Oozie 管理工作流,HBase 作為 KV 分佈式存儲,Mahout 數據挖掘的庫,Cassandra nosql 數據庫。我建議初學的考慮 Chinahadoop 的課程。
而 Hadoop 本身也是個進化過程,幾年前 0.19 版本,到 0.20、0.23 分流成 Yarn 架構,最後進化成 Hadoop2.0, Hadoop1.0 和 2.0 它們的界麵和組件是完全不同的,但總體上 Hadoop 2.0 是趨勢,因為它有 Yarn 這樣分離的資源管理平台,可以以插件的方式開發上麵的 Application,解放了生產力,而像 Spark,Storm 這些新型處理器也是支持 Hadoop 2.0 的。
這裡是 Hortonworks 它們提出來的社群版本架構,可以說標準的製定者,一流的公司製定標準,其他的公司一般用隻能用它們提供的穩定版,沒有多少話語權。但從事大數據,並不見得是要去這些製定標準的公司,大量的應用也是非常考驗架構的靈活性,並且能看到實際的產品,很有成就感。
說到 2014 年最紅的,還是要看 Spark。已經開了 2 屆 Spark 大會,上千人的規模,無數人對比 Hadoop 100 倍的性能提升而興奮。這裡說它的背景是誕生於 Berkeley 的 Amplab,它們有個很有名的 BDAS(Berkeley Data Analytics Stack),目前 Spark 已經成為 Apache 的頂級專案。去年這個實驗室的教授跟學生出去成立 Databricks 公司,拉到兩輪上千萬的投資,有人問 Spark 是 Hadoop 的終結者嗎?我看 2014 年 Spark 大會上,所有的 Hadoop 大佬公司都是鼎力支持,像 Cloudrea 甚至放棄 Impala 的一線支持而轉變成 Spark。
如果這麽發展下去,星星之火可以燎原啊。它裡麵用到 Scala 是一種函數式語言。裡麵的組件也很多,有 Shark 支持 SQL 類似 Hive,有 Spark Streaming、MLlib、Graphx、SparkR、BlinkDB。它的核心數據結構是 RDD,可以跑在各種分佈式係統上。總體上是個包容性+侵略性的係統。我個人也很看好它們的發展。
我在 Linkedin 做過一些大數據的廣告係統,我就簡單提一些我學到的。
- Linkedin 有特有的開源數據係統,包括 Voldermort (分佈式 KV 存儲), Kafka (分佈式實時消息隊列),Espresso (基於 mysql 的海量存儲),Databus(數據變化捕捉),可以查看 http://data. linkedin.com
- Lambda 架構,離線使用 Hadoop 做 pipeline,near online 做高效聚合,提供混合式架構,達到實時和一致性的妥協。
- Kafka 在 linkedin 起奠基作用,一方麵所有實時 tracking 都是通過它,另一方麵 data bridge,比如圖中通過 kafka 可以實現數據的無縫銜接,否則很難想像每個數據源異構係統,它們的通信將是 n^2 級別的複雜度。
- 分佈式並不酷,如果考慮到高可靠性,強一致性而數據量並不是想像的大,不見得要使用;否則自討苦吃。盡量使用成熟的,可靠的,例如 MySQL、Memcached
求職經驗
根據我的求職經驗,我給出幾點建議:
如果麵試的話,我先看他們的經驗是不是 match,對應屆生看有沒有實習經曆,如果你在 Google、Linkedin 實習,絕對加分,學校當然也需要,比如我們招人 UC Berkeley 機會是大一些。
我看過很多簡曆,不推薦用 .doc 格式,因為在不同係統中排版不一樣。簡曆也不要寫太長,不是真強者就不超過 2 頁。盡量突出你的技能如何匹配公司的職位,比如這個公司都是用 C++,你上麵都沒 C++,是不太合適。我也很不喜歡看到精通,如果你這樣寫,就很容易引起麻煩,最好寫多少年經驗,對具體技術的掌握。
麵試當然需要準備,但到底是事倍功半,還是事倍功半。我建議把你的經曆精選 1、2 個準備熟練,包括如何團隊分工、技術細節、遇到困難、如何克服。不要貪多,就把你現在用的東西準備好,沒人關心你 5 年前幹啥的。
社交很重要,最簡單是去招募會就可以跟人認識,如果你在網路多利用有些網路招募網站,如 dice、indeed,你還要巧妙利用 Linkedin,加入高級帳號,可以查看有些校友的資源,發站內信,透過關係比你網上瞎投效率要高很多。
如何找到麵試題?
網上有很多資源,比如 Glassdoor 是個匿名發佈網站,經常有麵試題,有些技術論壇 Stackoverflow、Careercup 也會有很多參考題。
如何知道一些可靠的公司?
可以看你知道的強者都選擇去哪些公司,如果名氣不大,可以去流量排名上去看他處於什麽地位,如果沒有上市,可以看它的融資規模,還可以從 Linkedin 看它的員工是否優秀。
什麽時候才知道準備好麵試?
- 演算法是否過關,是否能寫出遞歸和動規;
- Coding 是否過關,是否能在 IDE 中寫出 Bug Free;
- Design 是否過關,是否能給出 Tradeoff;
- 專案經曆整理,能夠流利說出架構、難點、自己的貢獻;
- 加分項:Github、Blog、參與 Open source。
如何回答行為麵試問題?
比如你有沒有過失敗的經曆,如果你老板給你不喜歡的任務怎麽辦,你想像中成為什麽樣的人。這裡一方麵可以結合自身精力,另一方麵多關注公司的介紹頁麵,包括公司創辦人背景、企業文化、招募的要求。這些都是可以提前做好功課,盡量體現出來你的熱情、負責、勤奮等優秀品質。
如何拿到美國工作簽證?
要來美國工作,一般是要求 H1B 的身份,是有雇主向勞工局提出申請 Sponsorship,根據現在的形式,每年的名額都是一搶而空,那麽這樣就需要抽籤決定。在 4 月 1 日之前提出申請,4 月 1 日之後開始抽籤,如果是在美國獲取碩士以上的學位,可以有優先級,抽取機率更高,而根據 2014 年情況,普通的抽中機率是 50 %。
如果沒有抽中,如果是美國有碩士學位,可以使用 OPT 照樣工作,並且可以省社會安全稅。而如果是海外的,隻能等來年在抽。像 Google、FB 這種全球性公司,他們也會提供其他國家辦公室的機會,然後比如工作一年後再通過 L1 或者 H1B 繼續到美國工作。另外如果你抽中名額,在跳槽期間是可以 transfer 而不需要依賴名額,每 3 年可以續一次,最多 6 年。如果 H1B 期間申請綠卡,還是可以延長的。
麵試流程
如果你拿到麵試機會,下麵的流程是先電話麵試,對於工程師,演算法 coding 基本功是必須的。還是準備好你的小白板,根據麵試官的題給出思路和程式,說起來容易,但就是那 10 多行的程式,80% 以上的人都掛了。
然後就是 onsite,美國公司為了體現人才為先,都會來一次 onsite,如果是遠程過來,報銷機票、車費、酒店、吃飯,聽起來也是免費旅遊的機會。但 onsite 也不容易,基本上 4-6 輪,每輪 45min 到 1 小時,也會讓你挑戰極限的,經常是頭痛欲裂,我最狠的一次 10 天麵 7 家 onsite,連續飛,連續麵,真是折磨。
他們都考察什麽呢,簡單說是你到底聰不聰明,是否經過工程訓練,是否能夠合作。整體分成 3 塊,一類是技術問題,比如演算法、係統經驗;一類是交流能力,你個人經驗、興趣;一類是人資喜歡問的行為麵試,比如你有沒有過失敗的經曆,如果你老板給你不喜歡的任務怎麽辦,你想像中成為什麽樣的人。
麵試準備
技術麵試這裡麵涉及麵也挺廣。看似簡單的 coding 不見得能過關,不信,你寫個字符串查找,我不需要你知道 KMP,就是暴力解法,可是 90% 的人都掛在這道題上麵。算法方麵,常見的 hashtable、heap、trie。係統設計也是很多同學害怕的,很多人說我沒設計過那些係統。
如果大家演算法都過關,係統設計就能繼續篩選,體現出來你的層次。還要一些很隨機的問題,數學上的概率組合,Linux 的常見命令都有可能觸及。
我這裡列出考察 Hadoop 的一些基本問題,都比較簡單,大家 Google 一下,知乎(中國社群問答網站)上也有我的詳細題目。
對於演算法,是考察的重中之重,我總結了一些高頻率題目,同樣參見我的知乎。
這兩道題是我真實中被問道的,雖然不是常規,大家可以思考一下。其中求麵積的,是 Apple 當時問的,同學們能在 15min 內演算出來嗎?
選擇工作
假設你經曆過麵試的考驗,拿到 offer,下麵就要麵對如何選擇的問題。在考慮 offer 之前,先對公司做個研究,比如這公司是什麽規模?產品是什麽?Glassdoor 員工如何評價的?你的職位你喜歡嗎?這就跟選學校一樣,如果選錯了,也是需要走很多彎路。
我個人的參考是,首先這公司是不是處於上升階段,產品是否有愛,團隊強不強,學不學得到東西。對公司分類,Hortonworks 這種是純技術性的,主要客群為企業,可能沒多少人知道;而 Uber 是大眾消費性,很多朋友都用過。現在的熱點是行動網路,大家也可以多考慮這一塊。
大家都很關心矽穀公司的待遇福利,這邊我也做個介紹,待遇分成基礎工資,根據 Glassdoor 排名,大概在每年 10 萬 -- 20 萬美金,矽穀目前也是水漲船高,獎金有些大公司有(Google、 FB 15% - 20%)。如果是上市公司,會給限製性股票,分 3-4 年行使,創業公司一般給期權,不同就是限製性股票是白送的,不需要自己掏腰包,期權需要自己買入,不同時期價格不同。但股票交的稅非常高,期權是有些長期避稅。
最後也要考慮你的興趣和對風險的承受能力,如果去大公司做個螺絲釘,實現共產主義生活也無可厚非。去小公司壓力大,成長快。但也要做好失敗的準備,看看當年 Zynga 教訓。
職場感觸
矽穀生活著一群不在乎別人怎麽看,但有很瘋狂的想法的人。大家在這談創新、談技術、談創業,資本湧入,人才競爭,導致大家都是很高的期望值,迫不及待的去改變。這種浮躁也許是社會進步的動力。
我這上麵的都是最熱的話題,每個領域都是百億甚至千億的價值。最近阿裏巴巴的成功上市創造最大 IPO,讓大家看到中國網路的野蠻成長,中國的發展速度和廣闊市場讓大家想像無限。而百度在矽穀設立人工智能研究院,阿裏巴巴也準備在矽穀招上千人研發團隊,越來越多的人才拚搶。中國的一些網路產品也走出國門,微信、小米、360 都在廣泛佈局投資未來。有時候會想當大家都是談論技術改變世界,做個小 App 就值上億,甚至上百億,但真的世界因為你改變了嗎?我們也要多些獨立性思考。