背景 & 瞎扯
剛來美國的時候,根本沒想到會有一天拿到 f, g 兩家 dream company, 以及熱門 startup SnapChat 的 offer。能拿到這個意料之外的結果,運氣固然重要,但實力也是不可缺少的。下面給大家分享一下找工作的歷程。
本人 2014 Fall 開始在美國某校讀碩。來美國之前,拿到某校的通信工程本科學位。通信工程是 EE 的分支之一,主要課程都是與電路、信號、數學有關的,因此平時都在搭電路、寫 MATLAB。大一學過 C++ 和數據結構,然而編程作業基本都是抄好基友的,以至于至今對 C++ 的模板、友元等概念只停留在知道名詞的層次。之后三年基本沒寫過除了 MATLAB 之外的代碼。大四下拿到某校 ad 之后開始通過刷題學 Java。
到美國后開始努力刷題,在第一學期刷完 leetcode 一遍~然后寒假時面試 Google 的 summer internship 并順利拿到 offer。2015年暑假在 Google HQ 實習,并順利拿到 return offer。 在等 return offer 的過程中,面試了大約十家公司,拿到了 facebook 和 Snapchat 兩個offer。
結果
- Offer: facebook, Snapchat, Google (return offer)
- withdraw:Two Sigma, Pure Storage, Fitbit, Microsoft, Amazon, Uber, Coursera
- 電面拒:Palantir, Airbnb, Houzz
- onsite拒:Bloomreach, Shopkick, Pinterest
- 簡歷拒:medallia(海投), linkedlin(內推)
面試細節
houzz :第一次電面,不太熟悉流程以至于非常緊張。面試官還是蠻 nice 的。題目已經不太記得了。印象深刻的是,面試官問我多久能配置好 LAMP 的全套環境。答曰:一天之內。面試官對我的回答很不滿意:“一天?你一小時難道搞不定這些嗎?” 總之他們家想要的是入職第一天就能干活的新手。
Airbnb:遇到了一道面經上的題。這道題已經被 Airbnb 用了半年多了,各大論壇上有鋪天蓋地的解答。想必大多數人都能迅速寫出 bugfree 的代碼。我沒看過面經,寫出了一個 bug,于是第二天收到了拒信。 (經驗:一定要看面經)
Bloomreach 面試:最不開心的一個面試。他家給我的總體感覺就是:他們根本不 care 你在說什么。一開始跟 HR 聊天的時候,她自己 blahblah 地講,根本不給我說話的機會。最后跟 CTO 聊天的時候,CTO 也是完全不聽我解釋,以至于曲解了我對項目的描述。總之是一次非常不開心的面試經驗。 即使給 offer 也肯定不會去。
shopkick 面試:應該是 behavior 掛了。HR 問我如果 ?shopkick 給我 offer,我會不會在一周之內簽。我告訴他我會等 Google 的 return。掛。
Pinterest 面試:最開心的一個 onsite。P 家的工程師質量很高,妹子質量也很高。HR 很有效率,面試的節奏也很快。最后一面的面試官是一個很漂亮的 ABC姐姐。她之前在 f g rocketfuel 實習過,畢業后在 quora 全職工作一年,然后毅然加入當時只有10個人的 Pinterest。
linkedin:實習被拒簡歷,全職又被拒簡歷。不 match。
pure storage:八月一號在 techfair 上去了他家的 booth 做題,一周后被告知題目做得很好,要讓我去 onsite。然而當時我實習快要結束,忙著趕項目,沒有時間去 onsite,于是跟 HR 發郵件表示希望能在實習結束后,回匹茲堡之前去 onsite。然后石沉大海。。。直到快兩個月了才收到回復。總之對 HR 的印象很差。
facebook: 貌似很喜歡 Google 的 intern。今年 Google 的 intern 幾乎人手一個 facebook onsite。題目就不說了,總之都是 lc 原題,medium 難度。寫出 bugfree 即可。
總結
facebook 非常注重代碼的簡潔程度。在不降低可讀性的前提下,盡量用短小精悍的代碼來解決問題。比如
int a;
if (isTrue()) {
a = 1;
} else {
a = 0;
}
可以用
int a = isTrue() ? 1 : 0;
來表示。以及
for (int i = 0; i < len; ++i) {
sum += nums[i];
}
可以寫為
for (int num : nums) {
sum += num;
}
facebook 也很在意代碼的時間復雜度。在白板上寫代碼的同時,別忘了記錄每一行代碼的復雜度。如果這一行的復雜度可以優化,不妨在旁邊做一個標記,等完成全部代碼之后再修改。值得一提的是,多了解幾種 O(n) 的排序算法有奇效。
最后,?快速準確地寫出高效優雅的代碼固然重要,與面試官的交流也必不可少。
總結
心態
準備面試的過程中,尤其在拿到第一個 offer 之前,難免對自己有一些懷疑。這是很正常的。但不要因此變得消極。
教訓
一定要看面經!
刷題
刷題不是萬能的,但不刷題是萬萬不能的。
面試
八月初,我參加了 greylock techfair。這個techfair幫我拿到了70%的面試。
在 techfair 期間,通過跟公司代表聊天,我拿到了 Pinterest,Airbnb,Houzz,Shopkick,Fitbit 等公司的面試。techfair 結束之后,陸陸續續有 Facebook,Palantir 的 HR 來聯系我(他們從 techfair 的簡歷簿里找到我的簡歷)。
實習/工作經歷
在我看來,實習/工作經歷是簡歷上最為重要的一項。今年各大公司普遍縮招,相應地bar也提高了一些。有一個好的實習經歷無疑是一個巨大的plus。幾乎所有面試官都會問我:你在Google實習做了什么呀?當然由于我的代碼還沒被launch,我只好笑著告訴他們我不能說。
今年facebook改了招聘戰略:喜歡從實習生里招人。自家的實習生不夠,就去搶隔壁Google的實習生。
課程和項目
對于轉行的同學:一定要了解一些系統級的知識點。聽說過有同學做出了算法題但掛在了系統知識題上,甚是惋惜。
最后的最后
一定要早準備!
時機很重要。今年linkedin的實習生可以refer。有同學被refer之后第二天拿到電面。我比該同學晚了一周招人,結果簡歷被秒拒。拒linkedin的員工透露,今年實習生refer得太多,導致到了后期沒有headcount了,只好拒掉。
瞎扯
面試時刷題的最大動力就是為了能有朝一日與面試官談笑風生,當然最后也實現了(笑)