國內(nèi)IT碩士北美求職記
最近簽掉了 offer,找工作的事情算是告一段落。在這里寫一點面試體驗和心得,希望對有興趣去北美工作的朋友有所幫助。
先簡單介紹下自己,國內(nèi)碩士在讀,明年畢業(yè),沒有牛 paper,也沒參加過 ACM-ICPC 競賽。在實驗室做過內(nèi)核、虛擬機和 Android 底層相關(guān)的研究工作,接過一些網(wǎng)頁和移動開發(fā)的外包,2011 年開始在字節(jié)社兼職負責后臺開發(fā)。另外也經(jīng)常上 Stackoverflow 和 GitHub。
這次決定直接申請美國的職位后,由于心里沒底,不知道國外公司招聘的難度,所以一開始投了很多公司。幾個大公司都找人內(nèi)推或者直接投了,小公司也投了不少,比如 Foursquare、Path、Pinterest 和 Square 等都試了。當時甚至在手機上找了一圈應用,把可能涉及后端開發(fā)的應用都投了一遍。不過大多數(shù)公司都沒給我安排面試,只有 Microsoft、Google、Facebook、Twitter 和 Hulu 這五家公司愿意給我面試機會。
一般來說,國內(nèi)畢業(yè)后直接投國外公司,會比出國留學畢業(yè)后找工作的難度大一些。除了語言因素之外,我了解到的主要原因在于工作簽證,出國留學畢業(yè)后可以通過 OPT 簽證入職,之后再過渡到 H-1B 簽證。而國內(nèi)畢業(yè)的學生只能通過 H-1B,這意味著要等到第二年的十月份才能入職。好在 Google、Facebook 等公司不太介意這個問題,還是會歡迎國內(nèi)的應屆生申請。
校招的 HR 一般會有各自的職責。比如 technical sourcer 負責發(fā)現(xiàn)有希望進入自己公司的應屆生;recruiter coordinator 會幫助 recruiter 安排面試者的面試時間、面試官,以及 onsite 面試時幫助面試者訂機票和酒店;staffing consultant 則負責發(fā) offer 以及介紹公司的具體福利制度,并解釋面試者相關(guān)的問題。不同公司的 HR 職責的分法自然也不一樣,我在 Facebook 的面試過程中只和兩位 HR 聯(lián)系過,而在微軟的面試過程中則聯(lián)系過五六位 HR。
在面試流程方面,相比我了解到的國內(nèi)公司的面試,國外公司的面試安排上會更人性化一些。例如安排面試時間時,HR 一般會先讓你給出幾個空閑的時間點,然后他們再從這些時間中給你安排面試。此外在為你安排 onsite 的住宿時,也會詢問你有沒有相關(guān)的要求。
關(guān)于面試題目,大多數(shù)公司都比較側(cè)重面試者對基本的數(shù)據(jù)結(jié)構(gòu)和算法的掌握程度,以及把這些內(nèi)容實現(xiàn)為實際代碼的能力(一般會要求你選一個語言實現(xiàn),而不允許用偽代碼)。越是規(guī)模大的公司越注重這些基本功,而小公司除此之外還會考察你的開發(fā)經(jīng)驗,例如對某個框架的了解和性能優(yōu)化方面的技巧。關(guān)于這一點區(qū)別我的理解是大公司里面會有自己的框架和開發(fā)工具,面試者的基本功好就能比較快的上手;而小公司一般用社區(qū)現(xiàn)有的工具,所以已有的開發(fā)經(jīng)驗可以直接用在將來的工作中。
下面是這幾個公司的面試細節(jié),有些公司因為在 onsite 面試的時候簽了 NDA,所以沒法透露具體的面試題,還請見諒。
Microsoft
微軟是我最早投的公司之一,托了在微軟總部工作的一位學長幫忙內(nèi)推。面試包括一輪 HR 面和四輪 onsite 面。
申請了一個多月后一直都沒有反應,直到微軟國內(nèi)招聘的前一天,北京的 HR 打電話問我是不是投過微軟的職位,要我參加第二天上海站的筆試。
筆試過后,又過了一個多月,收到了微軟一位招聘人員的郵件,問我是不是對微軟北美的職位有興趣,要我填一份基本情況的問卷,里面有問到其他公司的面試進度。我當時已經(jīng)收到了 Google 和 Facebook 的面試邀請,就如實填寫了;貜偷诙旌缶褪盏搅肃]件通知,告訴我會有 HR 進一步跟進。第三天有一位 HR 聯(lián)系我和我約電面的時間。微軟約電面的方式和其他公司不大一樣,HR 會給出很多個選項,讓你在里面選擇幾個空閑的時間。另外值得一提的是這些時間都轉(zhuǎn)成北京時間了,這也是微軟在安排面試時比較人性化的一個地方。
第一輪面試是 HR 面。HR 先問了一些技術(shù)無關(guān)的問題,比如喜歡做什么,工作地點的偏好,什么時候開始學的編程,為什么投了微軟等等。接著是一些智力題,比如 9 個小球,8 個質(zhì)量相等,另一個比其他的重,如何用天平稱兩次把它找出來;公司開發(fā)了一種新鍵盤,有哪些測試它的方法;在會議室內(nèi)怎么估計室外的溫度。都是些更像是考驗英語水平而不是技術(shù)能力的問題。
面完第二天收到了 onsite 的通知。雖然是北美的職位,onsite 面試地點卻是在上海。我參加的是周日的面試,和我一起參加面試的還有一位學生,他之前在微軟實習,了解到這次有去北美工作的機會后也想嘗試下。面試官是從總部飛過來的工程師,一共有四位,其中三位都已經(jīng)是 principal 級的了。HR 提到一般技術(shù)面試要五輪,因為我們之前參加過一輪筆試,所以只需要面四輪。
onsite 面每一輪的過程都差不多,都是面試官自我介紹,接著我介紹自己和做過的一些項目,然后開始技術(shù)問題,最后是我提問的環(huán)節(jié)。微軟的面試問題會考察面試者編碼、設(shè)計和測試三方面的能力。
coding 環(huán)節(jié)要求直接在白板上寫代碼,我被問到兩個 coding 問題。一是如何檢查一棵二叉搜索樹是否正確,二是寫一個解數(shù)獨的程序。第一個問題寫起來很快,第二個問題因為時間有限,我先寫了一個沒啥剪枝的暴力搜索的版本,寫完后和面試官分析了可以在此之上做的優(yōu)化。
設(shè)計方面的問題有兩個。第一個問題是設(shè)計一個分布式的數(shù)據(jù)管理系統(tǒng)。使用場景可以是一個連鎖店信息的記錄系統(tǒng),每個分店都有可能更新自己的信息,并把這些改動傳播到整個系統(tǒng)中。在設(shè)計這一系統(tǒng)的同時要考慮性能、容錯、一致性等要求。我一開始想了一個基于 push 的機制,在面試官指點下逐步優(yōu)化,最后還是有不少問題。于是干脆重新設(shè)計了一個基于 poll 的系統(tǒng),優(yōu)化改進之后面試官滿意了。
另一個設(shè)計問題和類的設(shè)計有關(guān),要求設(shè)計一個包含圖形界面的棋盤游戲。因為之前做過不少相關(guān)的開發(fā),所以這一部分我還挺擅長的。按照 Single Responsibility 的原則設(shè)計了幾個分工明確的類,另外把網(wǎng)絡(luò)對戰(zhàn)和 AI 接口都考慮進去了。設(shè)計完成后面試官要求我從用戶鼠標單擊這一事件開始介紹整個控制流程,在某些類中還會問及這么設(shè)計的原因,以及和其他設(shè)計方案相比的優(yōu)缺點。
測試部分的問題也有兩個。第一個問題是如何測試一個隨機函數(shù)。第二個問題和分布式系統(tǒng)有關(guān),面試官先向我介紹了一個分布式系統(tǒng),包括它的使用場景和基本的架構(gòu),然后問我其中某一個部件應該如何測試。提到正確性、可伸縮性、一致性和容錯性后再給出相應的測試方法應該差不多了。
onsite 面試后的第二天后就收到了 HR 的郵件,祝賀我拿到了 offer,并和我約時間談具體的 offer 細節(jié)。雖然微軟一開始拖了兩個多月才開始安排面試,但是一旦開始面試后他家的效率非常高,是這次面試的幾家公司里效率最高的了。
Google 面試也是托學長推薦了。HR 說我的簡歷看起來很不錯,先給我安排了兩輪電面。
電面都和 coding 有關(guān),面試官會給你一個 Google Docs 鏈接,在電話里描述題目后要求你在 Google Docs 上寫程序。題目的難度不高,兩輪一共四題,都是對基本數(shù)據(jù)結(jié)構(gòu)的操作,例如給在一個未排序的數(shù)組中去掉重復的數(shù)字,還有把一個有序數(shù)組轉(zhuǎn)成一個平衡二叉搜索樹,在一個已排序但有重復數(shù)字的數(shù)組中查找元素等。
第一輪電面聊天的時候還發(fā)現(xiàn)第一輪的面試官是在 ITA Software 做的。正好前幾天用他們的產(chǎn)品 Matrix Airfare Search 訂到了低價的去土耳其的機票,過了一星期神奇的在面試的時候碰到了這個團隊的工程師。當時一下子就興奮起來,聊了不少和 Matrix 的有關(guān)的話題。這位面試官聽說中國的機票也能用他們的平臺查詢,還挺吃驚的。他還提到他們原本想把計算任務放到 Google 內(nèi)部的計算框架上,但是由于和合作方的合同的限制,沒法把一些商業(yè)數(shù)據(jù)放到 Google 的平臺里,只能繼續(xù)用原有的計算引擎。
第二輪電面的面試官是位印度人,雖然我很難聽懂他的口音,但是他很耐心,會和我重復描述問題,所以題目做下來也沒啥困難。在和他的聊天中得知他除了正業(yè)(Youtube)外還在閑余時間研究機器人。
電面結(jié)束后第二天收到了 HR 的郵件,邀請我去總部面試。由于當時已經(jīng)是九月底了,而我十月初打算去土耳其玩兩星期,于是只能從土耳其回來后開始準備簽證了。Google 的 HR 非常熱情,每次回郵件都很及時,經(jīng)常能在加州時間晚上十一點左右收到她的郵件。她幫我弄來了 Google 的面試邀請信,順利的過了簽證面試。之后另一位 HR 還幫我訂好了從上海往返 San Jose 機場的機票,以及三晚的住宿(因為考慮到我需要倒時差,多了一晚住宿,這一點也很體貼)。
Google 給我安排的住宿是 Wild Palms Hotel,在 Sunnyvale。不愧是硅谷的旅館,每天早上起來吃旅館的早飯,都能聽到有人討論 Java。在 Sunnyvale 的第二天我坐公共汽車到處逛了逛,考慮到接下來要在加州玩一圈,就辦了張 T-mobile 的一個月電話卡(60 美元,包括不限量的短信、通話和 3G 流量,但是這家的信號非常差)。這家旅館和蘋果總部也很近,出門有公交車直達,作為半個果粉自然不會浪費這個機會。
第三天在 Google 工作的學長開車帶我去了公司。Google 的園區(qū)里有不少免費自行車,沒有鎖,直接就可以騎。我在 Google 商店買了點禮品,在園區(qū)騎車轉(zhuǎn)了一會兒后就開始面試了。
面試一共有四輪,每輪 45-55 分鐘,中間有 5 分鐘的休息時間。中午會有 Google 工程師帶你吃飯。帶我吃飯的 Google 工程師也是中國人,了解到這點后我們就知道用中文聊天了。吃飯時間里了解了不少在 Google 工作的優(yōu)缺點,也一定程度影響了我之后做的決定。
由于簽了 NDA,沒法在這里透露具體的面試題目。面試主要都是算法題,比電面難一點。除了算法題外我還被問到一個分布式系統(tǒng)的設(shè)計題,以及一個多線程相關(guān)的 coding 題,后者用信號量很容易解決。其實如果能和面試官好好交流,這些題目做出來應該是沒啥問題的。
面完第二周 HR 通知我拿到 offer 了,打電話告之了 offer 的具體細節(jié)。Google offer 的郵件附件還包括一份各項福利的介紹,著實吸引人。我還記得 HR 打電話來的時候我正好在三藩 Exploratorium 邊上的小湖旁,在湖邊美景中聽到這樣的好消息自然分外興奮。HR 還告訴我沒有限制我的簽約時間,可以在任意長的時間后再做出決定,也算是 Google 非常體貼的地方。另外具體的職位會在入職前一段時間決定,HR 的說法是可以根據(jù)自己的喜好在一些項目之中選擇。
我在今年三月份投過一次 Facebook 的暑期實習,被告之已經(jīng)招滿了,接下來校招時會再聯(lián)系我。七月份的時候我又在網(wǎng)站上投了一次開發(fā)職位,還麻煩一位在里面實習的學長幫我內(nèi)推了。八月一位 HR 聯(lián)系我安排第一輪面試,電面安排在了九月。
Facebook 的 HR 也很負責,她在電面前幾天打電話和我聊天,介紹 Facebook 的基本情況,以及面試流程。第一輪電面結(jié)束后的情況分三種,如果面試表現(xiàn)很不錯,那就直接獲得了 onsite 的機會;如果面試表現(xiàn)一般,面試官不確定要不要,就會再加面一輪;如果面試表現(xiàn)不好,就可能直接被刷了。除此之外 Facebook 的 HR 比較體貼的一點在于給中國人安排的第一輪面試官很有可能也是個中國人,降低了語言上出現(xiàn)問題的.可能。
HR 的電話里還提到 Facebook 入職后有六星期的 bootcamp,可以熟悉各個項目和團隊,具體的項目是 bootcamp 結(jié)束后自己選的。問了一下在那工作的朋友,做出的選擇一般都會被滿足,因為 bootcamper 的選擇分布還算比較平均的。
Facebook 電面和 Google 差不多,是在 collabedit 上進行的。也是面試官在電話中口述題目,我在網(wǎng)站上寫代碼。老實說這個網(wǎng)站的體驗不怎么樣,面試過程中出現(xiàn)過幾次我這邊寫的代碼沒在面試官那里出現(xiàn)的情況。好在面試官比較有經(jīng)驗,一發(fā)現(xiàn)有問題就會提醒我刷新頁面。
第一輪電面我做了三個 coding 題,題目都不難,但是要求 bug free。電面的面試官抓 bug 的能力著實厲害,找出了兩個我一開始沒發(fā)現(xiàn)的 bug。好在他提示說有 bug 但沒指出的情況下,我把它們都修正了。面試題目難度和 Google 的電面難度差不多,都是對數(shù)組、二叉樹和字符串的基本操作。第一題是把一個字符串中的 %20 都轉(zhuǎn)成空格,第二題是按層打印一棵二叉樹,第三題是找出兩個有序數(shù)組里不同的數(shù)字(類似求集合的異或)。程序正確后面試官還會問一些優(yōu)化方面的問題,例如在不同的情形下應該使用哪一種算法。
面完后第二天收到 recruiter 的消息說我拿到 onsite 的資格了,具體的時間會在十一月通知我。
Facebook 給我安排的酒店是 Palo Alto 的 Sheraton。酒店門口停著不少出租車,面試那天的出租車司機還是用 Square 收的錢。我的面試正好趕上了他們的 University Day。這一天的安排是上午三輪面試,中午吃飯,下午逛一圈公司以及三場講座。我的第三輪面試還出了點茬子,面試官一直沒出現(xiàn),HR 只能先帶我去吃中飯。中飯結(jié)束后 HR 帶著別人邊逛公司邊介紹,我只能繼續(xù)我的第三輪面試了。
Facebook 校招時本科生和碩士生是統(tǒng)一級別的,面試只包括算法題,不會有設(shè)計題;而博士生則高一級,面試的時候還會有設(shè)計題。三輪 onsite 面試包括一輪 jedi 和兩輪 ninja。jedi 面主要是讓面試者介紹自己的項目經(jīng)歷,了解面試者的技術(shù)專長和偏好,不過面試官也讓我做了一個簡單的 coding 題。ninja 面各有兩個 coding 題,題目難度都不大,和電面差不多。但是與電面不同的是,面試官會深入問一些細節(jié)的問題,例如代碼里生成了多少個新的對象,有沒有辦法優(yōu)化等,有一個問題還要求我用一種算法實現(xiàn)后,再用另一種完全不同的思路實現(xiàn)一次。(onsite 面試是簽了 NDA 的,這里就不方便透露具體的題目了)
面試完之后有三個講座,第一個講座介紹了 Facebook 總體的工作環(huán)境。第二個分產(chǎn)品和后臺兩個講座,同時進行所以只能選一個。我一開始選擇了后臺開發(fā),不過當時突然對產(chǎn)品有了興趣,就去聽了產(chǎn)品的講座。一位負責 Events 開發(fā)的工程師結(jié)合這個產(chǎn)品介紹了下 Facebook 內(nèi)部產(chǎn)品開發(fā)的流程,例如新特性是怎么出來的,如何測試等。最后一個環(huán)節(jié)是幾位剛從 bootcamp 畢業(yè)的員工和我們分享他們在 Facebook 中工作的感受。
University Day 結(jié)束后,參加活動的每位學生還收到一個包裝精致的禮物。拆開來后是一塊兩面分別刻著「Move fast and break things」和「Proceed and be bold」的玻璃磚。我還是很喜歡這個禮物的,這也一定程度上影響了我最后的選擇。
面試完第二天 HR 從我這里要了三位 reference,包括他們的職稱和聯(lián)系方式,接下來 HR 會聯(lián)系他們詢問我的情況。Facebook 的動作也很快,第二周就給我發(fā)了 offer。有意思的是,offer 郵件的 welcome package 最后一頁建議面試者在入職前熟悉一下 Unix,還推薦了幾篇文章和兩本書。
Google 和 Facebook 的 onsite 是在同一星期面的,前后只隔了一天,收到 offer 的時間也只差了一天。package 方面, Facebook 比 Google 的要好不少,但是 Google 的 HR 說可以 match Facebook 的 offer。去之前我想過如果兩個 offer 都拿到,那就去 Google。但是到了這兩個公司,和幾位面試官以及在里面工作的朋友深入聊天后,最終還是選擇了 Facebook,因為它規(guī)模更小,應該能有更多的鍛煉機會。
另外我了解到的 Google 和 Facebook 的面試流程都是先由各位面試官給你打分,例如分 strong hire / hire / weak no hire / strong no hire 四檔(不一定完全一致,比如可能會多一檔 neutral)。同時要寫下關(guān)于你的面試情況的報告。再接著由 hiring committee 討論要不要給你 offer,以及 package 如何。有亮點(某位面試官的 strong hire)很重要,一個 strong hire 和幾個 weak no hire 會比平庸的清一色的 weak hire 好。
Hulu
Hulu 是這幾個公司里唯一一個我沒有找人內(nèi)推而拿到面試機會的,也是面試體驗最好的一個公司。Hulu 和 Twitter、Zynga、Foursquare 等公司一樣,用了 jobvite 接受和追蹤職位申請。因為是申請的第一家公司,我在申請 Hulu 時的 cover letter 寫得很詳細,針對職位需求上的每一條都寫了我的相關(guān)工作經(jīng)驗,這也許是最后能拿到面試機會的原因吧。其他公司的 cover letter 都寫得很簡單,短短兩段就結(jié)束了。
Hulu 的第一輪電面和其他公司的有些不同。45 分鐘里要做四個題。面試官提前十分鐘發(fā)了一封郵件給我,上面有兩段代碼。第一段代碼是一個檢查兩個字符串是否是 anagram 的程序,寫得很繞而且性能很差。面試官先問我這段代碼的用途,然后問有什么方法優(yōu)化,并要求我把代碼寫在 titanpad 上。接著他問了我第二段代碼是做什么的。第二段代碼也寫得有點復雜,不過可以看出是一個檢查有向圖里面是否存在環(huán)的程序。
然后是設(shè)計題,要求設(shè)計一個 LRU Cache,只要說出接口、用到的數(shù)據(jù)結(jié)構(gòu)和大致的算法就可以了,我想了個用一個 LinkedList 和一個 HashMap 的方案。
第四題還是代碼題,寫一個合并兩個有序鏈表的程序。
面完后還有點時間,我們就聊了聊。面試官是在 Hulu 做支付的,主要用的語言是 Scala(Hulu 里面各個團隊用的技術(shù)都很自由,可以選擇自己喜歡的語言開發(fā),Python Ruby C# Java 都有)。我當時正好在字節(jié)社做 iOS 上的應用內(nèi)購驗證,就問了他有沒有處理黑卡壞賬方面的經(jīng)驗。可惜 Hulu 在 iOS 上只有訂閱方式的支付途徑,沒有 non-consumable product 的相關(guān)經(jīng)驗。
面完后 HR 給我安排了第二輪電面。面試官來自法國人,是 FFmpeg 的維護者之一。面試官看我簡歷上有星際比賽的獎項,還當過校隊的隊長,就和我聊起了星際2的平衡性。接著說到最近的蟲群之心 beta,他覺得改動沒有當年母巢之戰(zhàn)的有意思,因為前期的改動不大。
聊了二十分鐘的星際2后才切入正題,coding 題很簡單,就是在一個數(shù)組里找出兩個數(shù),使得他們和為給定的數(shù)。寫完這個最基本的版本后還有些別的變化,比如如果所有的數(shù)都是一定范圍內(nèi)的正整數(shù),這時可以用一個數(shù)組統(tǒng)計每個數(shù)字的出現(xiàn)頻率。
二面結(jié)束后等了三星期還沒有消息,不知道是默拒了還是 HR 忘了。三星期后我又寫了封信詢問我的二面結(jié)果,HR 回信說歡迎我去他們公司 onsite 面,之前校招忙把我忘了。
Hulu 的總部在洛杉磯,Santa Monica 附近,離海灘只有幾公里的路程。一進面試的會議室就看到白板上寫著「Welcome Yuanxuan to Hulu」,一下子對這個公司充滿了好感。
Hulu 的 onsite 面試題是面過的幾家公司里最難的,一共有四輪。前三輪由來自內(nèi)容團隊、API 團隊和架構(gòu)團隊的工程師面試,最后一輪的面試是 CTO 親自面的。題目也是涵蓋了算法、設(shè)計和實際的編碼,有一輪的問題從設(shè)計一個分布式系統(tǒng)開始,討論了這個系統(tǒng)的身份驗證、數(shù)據(jù)分片、原子性、容錯等問題的設(shè)計,考察了很多細節(jié)的地方,最后還讓我寫了 SQL,以及如何優(yōu)化這些查詢指令。不過我對 SQL 很不熟悉,每次用都要查手冊,當時用了 ActiveRecord 的查詢接口代替。
CTO 面完后 HR 進來問了我有沒有其他公司的 offer,接著帶我逛了一圈 Hulu 的工作場所。Hulu 總部只有 40 位左右的工程師,大家相互之間都很熟,氣氛非常好,也比較自由。逛完后 CTO 帶我出去買了杯咖啡,在回來的路上給我發(fā)了 offer。Hulu 的 package 和 Facebook 的在數(shù)額上差不多,但是因為公司性質(zhì)的問題沒法發(fā)股票給我,只能用相近的獎金代替。
回到公司后,CTO 問我對哪個團隊比較有興趣,我說如果我最后簽了 Hulu 的話應該會想去做后端。HR 就安排了這個團隊的工程師和我一起出去吃晚飯,還給了我兩張 voucher 用于支付回去的出租車。當時因為覺得去 Hulu 可能性不大,覺得對方這么熱情實在不好意思,可是還是推脫不掉,只得跟著他們?nèi)チ烁浇患也蛷d。因為 Hulu 主要內(nèi)容是美劇和電影的,飯桌上討論的主題也是各種電視劇,還提到接下來 Hulu 可能會搬到附近另一個辦公樓。
最后還是沒有接受 Hulu 的 offer,雖然對他家印象非常好。一方面我更希望在灣區(qū)工作,另一方面小公司吸引人的一個點在于初期的股票,由于 Hulu 沒法發(fā)股票所以這個優(yōu)勢也就沒了。
Twitter 用的也是 jobvite 的招聘系統(tǒng),我麻煩了一位在里面工作的學姐幫忙內(nèi)推。據(jù)說 Twitter 相比其他互聯(lián)網(wǎng)公司 work-life balance 是比較好的,工作會相對輕松。而在給我安排面試時 HR 給出的可以約的最晚的時間點,也是幾個公司里最早的,于是我只能很早起床等待面試官的電話。
第一面是一位負責移動端網(wǎng)頁前端開發(fā)的工程師面的。他說我的簡歷上工作經(jīng)歷很豐富,就不讓我做 coding 題了,讓我談談做過的這些項目。談完項目后又進入了聊天時間,我提到喜歡 Twitter 的一個原因在于他有很多好用的開源項目。比如我平時寫一些小型的 web 應用都會用 bootstrap,省時省力;而我之前實習的時候做的一個分布式的內(nèi)容下載系統(tǒng),也參考了 murder 的實現(xiàn)。另外因為當時我在實現(xiàn)字節(jié)社 iPhone 和 iPad 的 web 界面時碰到了之前修復的 bug 后來再次出現(xiàn),忘了測試的情況,就問了他 Twitter 是怎么做移動端 web 界面的測試的。結(jié)果面試官說他們也基本上是買一堆設(shè)備然后人工測的,倒是桌面端可以用 Selenium。
愉快的結(jié)束第一面后,就開始了略有點無語的二面。我的二面前三次都沒面成,第一次被放鴿子了;第二次面試官是 iOS 團隊的,聽我介紹完自己想做后端時,說他面我不合適,會讓 HR 再幫我重新安排一輪;第三次再次被放鴿子,面試官那天很忙,抽不出身。每次面試失敗后都要再等一星期才能收到 HR 的消息,所以光二面就拖了一個月。
第四次二面終于面成了。我聽面試官介紹應該是來自平臺相關(guān)的團隊,不過面試官接著問我是喜歡寫代碼還是喜歡倒騰環(huán)境的時候,我說喜歡寫代碼,結(jié)果面試官說他的團隊主要是做運維的,開發(fā)的工作量很小。估計是考慮到之前已經(jīng)放過一次鴿子了,這次面試官還是繼續(xù)面下去了。
雖然運維團隊本身不是我喜歡的,但是面試官的問題相當對我胃口。一上來就是一連串的幾個關(guān)于僵尸進程的問題:什么是僵尸進程?如何列出所有的僵尸進程?如何獲得這些僵尸進程的 PID?如何把它們終止?我用 ps grep awk xargs 配合管道把這幾個問題用一行命令行解決了,他很滿意。
第二問是統(tǒng)計一個 httpd 的訪問日志中,訪問量最大的前五個 IP。我用 Ruby 寫了一個,六行代碼就能搞定。
接著面試官了解 DNS 嗎,如果瀏覽器沒法上網(wǎng)一般怎么診斷?我的回答是先 dig 看 DNS 解析是否正確,然后用 ping 判斷 IP 是否可以訪問,再用 curl 看是不是瀏覽器設(shè)置的問題。最后還可以用類似 www.websitedown.info 的服務檢查。
第四個問題是怎么把一個文件復制到多個機器上?我說可以先用 ssh-copy-id 把公鑰拷過去,然后再用 scp 拷文件。面試官說這樣機器多就麻煩了。我解釋到可以用 expect 寫腳本自動輸入密碼,還加了句當然也可以用 Twitter 的開源工具 murder 分布式部署。
第五問是文件系統(tǒng)中 soft link 和 hard link 的區(qū)別。我的解釋是 soft link 是一種特殊的文件,它的內(nèi)容是被指向的文件的路徑,而 hard link 是直接指向 inode 的。所以 soft link 可以用于目錄,但是 hard link 不可以。
文件系統(tǒng)中 inode 和 path 的區(qū)別。我回答是 inode 是文件系統(tǒng)的一個數(shù)據(jù)結(jié)構(gòu),指向某個磁盤上的文件;而 path 是由多個 struct dentry 組成的,每個 dentry 描述了 inode 的父子關(guān)系。
最后一問是如何修改 DNS 服務器?我說可以修改 /etc/resolve.conf。
感覺 Twitter 的電面題會包含不少概念題,當然也有可能是運維團隊的特點。幾天后我收到 HR 的郵件,告訴我兩位二面面試官都表示我對他們的團隊不怎么感興趣,而除了這兩個團隊外目前還沒有其他團隊可以給我安排面試。估計從此就進入等待列表了,沒能去總部 onsite 面試,我在簽掉 Facebook 后就聯(lián)系 HR 把招聘進程終止了。
后記
最后簽了 Facebook,等著下一步關(guān)于工作簽證手續(xù)的通知。mm 也表示愿意和我一起去美國,她應該會先在那里讀個碩士再找工作。
希望接下來的簽證手續(xù)等事情都一切順利了。
【國內(nèi)IT碩士北美求職記】相關(guān)文章:
北美求職簡歷十“不要”02-07
國內(nèi)大學直申新西蘭碩士條件01-24
海歸碩士求職簡歷03-08
北美與美國教學設(shè)計02-07
碩士生求職簡歷04-20
外科碩士個人求職簡歷05-22
碩士學生的求職信08-13
碩士英文求職信07-11
會計女碩士的求職經(jīng)歷01-19