天天看點

9個offer,12家公司,35場面試,從微軟到谷歌,應屆計算機畢業生的求職之路

9個offer,12家公司,35場面試,從微軟到谷歌,應屆計算機畢業生的求職之路

01

簡介

首先說說我拿到的offer情況:

微軟,3面->終面,搞定

百度,3面->終面,口頭offer

搜狗,2面,悲劇

騰訊,1面,悲劇

布丁移動,3面,搞定

塗鴉遊戲,3面,搞定

友盟,3面->CEO面,搞定

雅虎,4面->終面,搞定

微政策,2面,悲劇

人民搜尋,3面->終面,搞定

人人,2面+終面+Special面,搞定

Google,7面,搞定

求職經曆分為定位、準備、履歷、筆試和面試這五個部分,大家挑感興趣的看就成。

我的求職經曆适用但不限于碼農,不适用與企事業機關(據說是完全不同的考察标準和流程)。廢話比較多,大家耐心忍受,有什麼問題可以跟帖提問。

02

定位

教育經曆:大學在大連某工科院校,由于GPA比較慘烈+挂科,是以沒保成研,畢業後修了一年英語雙學位,然後到帝都計算機職業教育學院接受再教育。

技術能力:屬于半碼農半産品的類型,代碼編的過去(搞過compiler),也有一些拿的出手的産品(幾十w的使用者量),一句話描述:幾十w代碼+幾十w使用者的Coder。

專業能力:非ACM出身,算法拙計但基礎紮實。由于單身是以看了N多書(CS+心理+經管+曆史),扯淡能力強大,碰到非專業的各種秒殺,碰到專業各種拙計。

實習經曆:大四在一家ds公司實習過一年,攢了不少代碼量;後來在MS斷斷續續的待了一年多,雖說是打醬油,但在衆大神的光環籠罩下,水準至少提了三個檔。

目标公司:由于百度給我的印象實在很差,而MS給我的印象又實在很好,所有就有了下面的排名:

外企(Google、MS、Yahoo等)>國内網際網路(阿裡、騰訊、百度、網易等)>企事業機關(基本不考慮)

03

準備

經常在論壇裡看到各種求職抱怨貼,其實在抱怨前應該仔細想一想,為了求職,你付出了多少?看到人家找工作找的順找的爽,有沒有想過人家背地裡付出了多少努力和心血?别拿官二代和富二代啥的說事,真ds隻會拿一堆自身以外的理由掩飾自己的懶惰。

不要認為求職就是發個履歷等面試通知,對于大神來說不用發履歷牛逼公司也會圍着你轉,對于ds來說就是預則立不預則廢,中國缺什麼就是不缺人,不下功夫準備很有可能連個P都沒有。

其實很多ds就是怕預也廢是以幹脆不準備直接上,這樣搞不定的話,就有借口說不是自己蠢而是自己沒準備,可以捍衛自己的智商高地不被侵犯。身邊有不少這樣的執行個體,典型的死要面子活受罪,活該你找不到工作。

我的微軟mentor曾提到過,我的實習面試表現一般,但後來表現出的動手能力大大超出之前面試的預估,而有些面試表現很出色,問題對答如流的選手,入職之後反而不是很理想,至少沒有達到面試時發揮出的水準。

這說明一個問題,就是筆試面試,準備和不準備會差異很大。如果你的履歷不是那麼NB,那就隻能靠筆試和面試的加分撐場面。身邊經常有同學納悶這樣代碼都編不利索的傻屌都能進MS為什麼我不能進,答案往往很簡單:人家比你多準備了一個月。平時電腦上寫程式可能很利索,筆試面試時在紙上寫寫試試你就知道什麼叫拙計。

IT公司的筆試和面試的題量都不大(相對于企事業機關和銀行動辄上百道選擇題的題量,算是很少),一般十幾道選擇題,三四道大題就算題量很大。但計算機的東西實在又是太多,程式設計、資料結構、算法設計、作業系統、體系結構、編譯原理、資料庫、軟體工程等分支,編譯的話太難(一千個碼農裡也沒幾個人能在紙上寫一個最基礎的遞歸下降LLParser),軟體工程、體系結構、資料庫這些太水(不是說這些分支沒用,而是它們很難考察,尤其對應屆生來說這些都是些文字遊戲,比如說面向對象的三要素五原則,有個鳥用),這麼一排除,再把資料結構和算法設計一合并,就剩下程式設計、算法和作業系統。沒錯,這三項搞定,國内外IT公司通殺。

是以我的筆試和面試準備很簡單,就是重溫+突擊程式設計、算法和作業系統。下面是我的筆試+面試準備内容:

程式設計:

1. 把基礎的資料結構的C語言實作在紙上寫三遍以上,用我能想到的最精簡最優化的方法

2. 閱讀CARM和TCPL,確定不會遺漏C語言的每個細節

3. 重溫之前自己做過的靠譜項目,并總結裡面的關鍵難題和解決思路

4. 重讀Writing Solid Code、Elements of Programming、Practice of programming

5. 閱讀Science of Programming,做到可以證明自己的程式的正确性(前條件+後條件+不變式)

算法:

1. 重讀Algorithm Design Manual,重點閱讀Dynamic Programming和Backtraverse

2. 重讀Programming Pearls和More Programming Pearls,并完成所有課後題

3. 獨立解決程式設計之美裡面的題目(國内不少企業選題用的這本書)

4. 完成Careercup裡Amazon、Google和Microsoft這三個分類下面的前20頁面試題

5. 完成TopCoder的數十道D1L2~D2L1難度區間的算法題目

作業系統:

1. 重讀Modern Operating System,重溫OS的核心概念

2. 重讀Computer Systems a Programmer's Perspective的關鍵章節,回顧裡面的關鍵點

從七月底開始一直到十一月,花了接近四個月,很多東西都是一邊面試一邊準備:面試->發現盲點->修複盲點。

此外列出一些面試筆試題的資源,此外感謝基友@codewarrior之前的推薦:

1. Crack over the code interview

很靠譜的筆試面試指導手冊

2. CareerCup

集齊了大量的真實筆試面試題,去外企的一定得看

3. TopCoder

如果不是ACM,練這個就夠,其實面試也不會問太難的算法,哪怕是google

4. 程式設計之美

盡管題目有些過時,但依然很實用,三星題目适合一個人仔細想

此外也說下一些不靠譜的資源:

1. IT公司面試100題

這個恐怕是國内傳的最多的IT面試題

題目本身還可以,但那個出題人本身代碼功底一般,給出的答案包含大量錯誤和缺陷,導緻參考價值驟降

2. 程式員面試寶典

翔一樣的書,各種錯誤概念的堆積,如果一個錯誤給我一塊錢,我能從這本書搞成萬元戶。如果去正規公司拿這本書準備,包你被黑出翔。

04

履歷

在MS時,老大曾讓我幫忙招幾個靠譜的實習生,是以我收到了幾百封履歷,過了一把HR的瘾。這裡說說自己在看履歷時發現的幾點:

1. 可讀性。不要用Word或壓縮包,用PDF。此外在郵件裡面用純文字加上自己的簡介,簡化對方閱讀的操作。要記住HR一天看的履歷海的去了,壓縮包是HR最痛恨的格式,因為解壓了就不知道扔哪去了,有時幹脆就不看;Word有版本問題,10的docx到了07往往被黑出翔。還有就是對方有可能不在PC上讀郵件,是以純文字的簡介非常有必要。

2. 群發。不要給人群發的嫌疑,看清楚目标職位和目标公司,我發的工程院招聘貼,收到的幾百封履歷裡面有十餘封是投到微軟亞洲研究院,有幾個幹脆寫“敬愛的某上司”,尼瑪這不找抽麼。

3. 設計。特别提一下設計,很多電工的履歷就是翔,醜的一逼,對齊沒有,字型拙計,要點不明。再放到幾百份幾千份履歷裡面,活該你被忽略。建議所有電工投履歷前閱讀《給大家看的設計書》,至少搞明白裡面的C.R.A.P四原則。不要小看設計的威力,在履歷内容接近的情況下,良好的設計會大大加分。

4. 篇幅。控制在一頁以内。倒不是說不能寫兩頁,而是HR沒時間看兩頁這麼多。而且就我看過的幾百封履歷而言,凡是超過兩頁的沒一個靠譜,有這麼高的先驗機率,HR才沒工夫一個個篩,反正中國有的是人。

5. 重點。一定要有重點,做到讓HR通過履歷在20秒内确定你靠不靠譜。可以用加黑字型進行視覺引導。

6. 措辭。甭搞“渴望得到這份工作”、“期待在xxx的工作機會”這樣的句式,除了顯得你低端,其它毛用沒有。

7. 别字。千萬不要出現錯别字,别字履歷一般直接幹掉。一頁的履歷都能出問題,一般不會靠譜。

因為看了很多不靠譜的履歷,我對履歷重要性的了解要比其他人深刻很多。首先花了一周把原來兩頁半的紙縮到一頁内,然後找UI朋友幫忙調整了版式、縮進和字型,并找UX朋友幫忙進行重點調整以進行視覺引導,然後在PC和手機上進行了履歷可讀性測試。進而獲得了100%的履歷通過率。

此外,優先走内部推薦,這樣最有效率,是以結識各個公司的朋友是非常有必要的。

海投履歷既沒必要也沒效率,有這個時間不如改改履歷來的實在。

相關書目:

1. 給大家看的設計書,讓你的履歷看起來不像一坨翔。

2. Google Resume,如何寫出靠譜的履歷,進行靠譜的求職。

05

筆試

如之前所說,IT公司的筆試相對單純(程式設計、算法和作業系統),而且範圍較窄,有不少題目被出了一遍又一遍。是以市面上存在大量面試/筆試寶典之類的書籍和題集。

準備國内的小公司,這些面試/筆試題集還靠的住,因為小公司往往不會在招人環節上下太大的成本,是以他們的試卷一般就是東拼西湊的網上題目;對于大型公司來說,這些題庫或是寶典就顯的不夠用了,尤其是外企。

是以不要把希望放在運氣或是臨陣磨槍上。就我自己而言,筆試準備了一個多月,盡管這個時間并不算多,但由于自己平時一直在閱讀CS的基礎書籍,并做了大量的紙上代碼練習,是以筆試通過率也達到了100%(實際上是由于我筆試的公司題目都略簡單,據說EMC和網易遊戲的筆試難度很高,但當時由于時間沖突沒有去成,是以搞出了這個資料)。

多說無益,這裡拿搜狗、騰訊、微軟和雅虎這四家公司的筆試試卷為例,簡單的介紹下IT公司的筆試題型和題目組成。

搜狗:

題型由十餘道不定項選擇題和三道算法題目組成,要求在兩個小時完成。選擇題難度一般,比較雜,也有一些原題;三道算法題目有點意思,至少網上是很難找到,需要一定的算法設計能力(主要是動态規劃)才能給出解決。

搜狗的筆試試題按職位分的很細,從C++開發工程師到iOS開發工程師再到資料挖掘研究工程師十餘個職位,每個職位的題目都有一套獨立的試卷。但是研發的算法題是一樣的,最後一道算法題很有意思,我花了一個多小時才想到利用組合數學裡面的知識(多元一次方程非負解)給出設計方案,後來和面試官聊這道題時他們也挺吃驚,因為我的方案比他們的答案還要優化。

騰訊:

題型由二十道單項選擇題、六道填空題和兩道算法題組成,其中兩道算法題是二選一。難度比較簡單,題型很廣,既有程式設計語言的細節也有機率統計的基本知識,甚至還有C語言的創始人是誰這樣的搞笑問題,從選擇題上能看得出騰訊在筆試題上還是下了點功夫的,但算法題就太簡單了點,至少我認為考不出什麼區分度。

騰訊的筆試試題也是按職位劃分的,但就沒有搜狗那麼細了,研發類筆試題目是統一的,要求一個半小時完成,印象裡自己四十分鐘就搞定收工,很多人都提前交了試卷,因為确實很簡單。

微軟:

題型隻有二十道不定項選擇題,難度較難,要求在一小時四十分鐘完成。難度較難,覆寫面非常廣,從設計模式,算法分析,代碼閱讀到C++語言特性,甚至連冷門的函數式程式設計語言都有涉及。

微軟的筆試題目BT之處在于其獨特的積分機制:答對了加分,不答無分,答錯了倒扣。這就使得很多ds答完試卷感覺自我良好但實際已經被倒扣出翔。以最後一道題為例,答對了加7分,答錯倒扣13分,相當于一下子損失20分。是以微軟的筆試題會做就得做對,不會做就别蒙,要不更慘。

此外,微軟的筆試題是英文的,加上時間比較短,有些人題都讀不完,有些ds連functional language是什麼都不知道,自然敗的很慘。

雅虎:

題型由十餘道單項選擇題,一道設計題目和六道算法題目組成,其中六道算法題目是六選二,要求在兩個小時完成。難度尚可,主要考察程式設計能力和算法設計能力。由于時間充裕,盡管是六選二,為了炫技,我直接答了裡面的五道題目。然而面試時發現面試官判卷子時并沒有把多答的題目考慮在内,囧tz。

相對于微軟,雅虎的題目覆寫面就窄了許多,沒有一道題目跳出程式設計、算法和作業系統這個圈的,隻要勤加準備,很容易通過。

雅虎的筆試題也是英文,是以英語作答較為合适,此外,由于算法題目簡單,給出optimal solution是必須的,比如說在logN的時間内算fibonacci number是必備的知識,能寫binary search就不要寫sequential search等等。

從筆試題可以明顯看出,國外的大型IT公司(比如雅虎,微軟和谷歌等)并不在意你現在的skill set,而更看重你的potential,是以題目大多很基礎,并具備相當的深度,以確定你對CS有深刻的了解并能夠走的很遠;而國内的IT公司(比如百度、搜狗和人人等)更看重你現在的skill set,是以會出現不少語言特性,OS操作之類的具體題目,以確定你能夠以盡快的速度上手幹活,至于能發展到啥程度他們就不care了。

是以,準備筆試題的時候要确定自己的目标公司:主攻國内公司的話,C++的語言特性、linux基本指令操作這些細節也得準備,因為會有大量此類題目;主攻國外公司的話,良好的英文閱讀能力必不可少,此外優秀的代碼了解和代碼編寫能力也不可或缺。

此外,不要在筆試題目裡犯低級錯誤,不要抄襲(面試時經常會問到筆試題),保持書寫的工整(尤其是代碼題目和問答題目)。

考慮到幾乎所有的公司都有程式設計題目,也就是在紙上寫代碼,這裡推薦幾本相關書籍:

1. Elements of programming style 2nd,寫出良好風格的代碼。紙上代碼一般不長,但短短幾行代碼往往可以看出這個人的水準,風格很差的代碼往往會被pass掉。

2. Algorithm design manual 2nd,作為非ACM出身的碼農,這本書比算導實用很多,課後題也很實在,對回溯,動态規劃這些程式設計技巧講的非常清楚。

3. C interfaces and implementation,無論是面試還是筆試,一般都會用C寫程式,這本書包含大量的工業級C代碼,絕佳的參考和模仿素材。

最後推薦下Elements of programming和Structure and interpretation of computer programs,這兩本書難度很搞,需要大量的時間閱讀,不适合臨場閱讀準備,但讀過後,寫出的代碼絕逼會上兩個層次,這裡我就不多介紹了。

06

面試

之前有人PM我關于海投履歷的問題。我個人不建議海投履歷。因為對能力弱的人來說,海投履歷隻會讓他信心更差,沒有任何效果,有投履歷的時間還不如精心準備少數幾個好公司;而對能力強的人來說,海投履歷之後會有大量的筆試和面試,筆試很耗體力,面試更很耗體力,不但需要打車或坐地鐵在各個公司間穿梭,而且需要在面試時保持精神的高度集中,一般面下來都會精疲力盡,導緻接下來的發揮不好。是以還是之前所說,優先内部推薦,然後再根據自己的情況和職業發展路線選擇公司,選擇職位,不用選太多,集中精力攻破領域内的TOP3即可。就我自己而言,求職期間,我一共投了12封履歷,參加了12家公司的面試,一共面了35輪。說多不多,說少不少,因為自己投履歷時也是本着網際網路公司為主,小公司和企事業機關壓根沒有投,精準投放的好處在于可以集中精力準備同一類型的公司,進而達到不錯的效果。

關于履歷海投的問題就說到這裡,接下來講講IT公司的面試。需要注意的是我這裡聊的都是應屆生面試,社會招聘面試可能會有所差別,但整體流程不會有太大差異。

盡管筆試題會有所差别,但IT公司面試的流程大同小異:标準的技術面試一般有45分鐘到60分鐘,大約分為三個階段:

自我介紹(5~10分鐘)

這個環節的主要目的在于建立面試官和求職者之間的溝通,面試官已經掃過你的履歷,但需要對你有進一步的了解,以便建立一個初步印象,并便于進行接下來的技術提問,是以這個環節最常見的問題無外乎“進行一下自我介紹”,有時會加上3分鐘或是5分鐘的時限,有時會詢問“說說你最得意的項目/作品”之類的變體問題。

由于這個環節相對固定,是以準備起來相對容易,但即便如此,面試初期時我在自我介紹環節也犯過不少錯誤。這裡以我的經曆簡單的總結下這個環節的要點:

1. 言簡意赅,突出亮點

面試初期時,我犯的一個很大的問題就是自我介紹廢話太多,諸如“出生自xx省xx市”,“自我評價xxx”之類的屁話連篇。要知道技術面試不是相親,這裡的自我介紹不是相親裡面的查戶口本,而是要了解你這個人靠不靠譜,牛逼不牛逼。如何在3分鐘内讓别人覺得你牛逼呢?很簡單,說且僅說你最牛逼的事迹,讓對方留下深刻印象。就技術面試而言,牛逼的事迹包含三方面:做過的項目,讀過的書,認識的人。

如果實在想不出來有啥牛逼事迹,那就比較難辦。說實話,換做你是面試官,招一個履曆毫無亮點的人進來有何用?

2. 緊貼履歷

面試官了解你的另外一個途徑就是履歷,然而短短一兩頁的履歷很難說明白你履歷項目中的亮點和難點。就算你不提及,面試官也會在履歷中挑他感興趣的點進行提問,是以自我介紹的内容應該是履歷的補充。這樣既能留給面試官不錯的印象,也能有效節省時間,留出更多的時間進行技術提問環節和問答環節。

此外,千萬不要搞出自相沖突,比如說履歷講的做了A你在自我介紹中又說是B,這就不是拙計的問題了。

3. 了解公司需求

不要試圖用一套自我介紹來搞定所有公司,除非你的履歷隻有一句話("Exhausted graphic programming"或是"I wrote python"等)。不同的公司有不同的需求,在Google面前大談.net技術顯然不是什麼好的選擇(我在google一面中就做過這種挫事)。面試之前要進行詳細的調研,了解公司和職位的需求,然後根據他們的需求定制自己的自我介紹和履歷,效果會更好。

技術提問(35~45分鐘)

通過自我介紹環節,面試官會對你有一個大概的評估,接下來會通過一系列深入的問題考察你的項目經曆和技術能力。是以自我介紹環節不要吹牛逼,技術面試是很實在的東西,你有幾斤幾兩問幾下就出來,根本忽悠不過去。

按照MS的分類,技術面試問題分為三類:

1,Behavior questions:此類問題針對面試者的過往經曆,一方面考察面試者的表達能力和實際經驗,一方面也可以排除掉一堆在履歷上吹牛逼的真ds:

“說說你最牛逼的項目?”

2,Hypothetical questions:此類問題會假設出一些場景,讓面試者進行作答,主要考察面試者的應變能力和實際經驗:

“給你三天,你會如何把xx項目做得很牛逼?”

3,Probing questions:如果前兩類問題答的不錯,面試官往往會追加一些問題,以探測面試者能夠走多遠,此類問題的出現也是一個标志,面試官對你之前的表現感覺還不錯:

“你會如何改進你做過的最牛逼的項目?”

就具體技術問題而言,考察題目視你的應聘職位和你的過往經曆而定,開發崗會側重代碼編寫和系統設計,測試崗會更注重測試用例的編寫等細節,産品崗要對線框圖,互動設計有了解。不過算法設計和代碼編寫這兩塊是肯定有的,畢竟這是程式員的看家功夫,這個搞不定就沒有然後了。

算法設計這塊我就不多說了,不搞ACM的碼農沒啥發言權。代碼編寫的話這裡多說兩句:和平時的開發不同,面試時的代碼往往是在紙上搞的,而非IDE。很多代碼寫的還不錯的選手往往會在紙上代碼這個環節被虐的翔尿齊飛,限于篇幅原因我就不多介紹紙上代碼的技巧了,還是那句話,多練習。我自己把Software Tools、Elements of programming和C interface and implementation中的代碼在紙上寫過幾遍,又把常見的面試題目練習了三遍,是以紙上代碼環節從來沒出過問題。

問答環節(5~10分鐘)

如果前兩個環節進展順利,就會進入最後的問答環節。這個環節面試官一般會讓面試者提幾個感興趣的問題,以增進互相的了解。

相對于前兩個環節,這個環節會輕松很多。不過依然要注意,關于面試表現的問題最好别問,因為問也問不出來什麼,至于待遇,那是HR的事情,技術面試官也無能為力。

最後根據自己的面試經曆說說幾個細節的問題

态度:記住你是去求職,證明自己的能力達到職位需求是你的首要任務。沒有必要和面試官擡杠,把面試官搞不爽對你一點好處都沒有。我在面試搜狗時就出過這問題(直接表示對面試官的問題的不屑),直接一面被砍掉。

着裝:盡管IT公司大多不需要西裝革履,但也别太拖沓,穿整齊些,至少給人很精神的感覺。我面試騰訊時直接搞了一件套頭衫+迷彩褲+機車帽,結果是面試官從頭到尾就沒正眼看過我,直接一面被砍掉。

交流:面試是一個交流的過程,不明白的一定要主動詢問,面試的大忌就是面試官給了一個問題,你一聲不吭的搞了一個小時,最後發現搞的不是面試官問的問題,這時就算你很牛逼,面試結果往往也是悲劇。

07

國企

國内的IT公司一共去了6家,拿到6個offer,面試19場。

百度(2輪面試+1輪終面)

百度的應屆生面試分為3輪,2輪技術面和1輪終面,3輪面試連在一起進行,如果搞到第1輪或第2輪就叫你回去,基本上不是悲劇就是備胎。如果進了終面,隻要不出岔子,一般問題不大,因為百度每年招的人非常多,印象裡有1500人之多。

可能是招的人特别多進而導緻面試官人數不夠,百度的面試在所有大公司裡面幾乎是最随意的,面試官往往都沒有經過系統的面試教育訓練,出的題目也隻是從網上東拼西湊,比如像C++的虛函數的實作機制此類SB題目層出不窮。而且有些面試官缺乏對面試者最基本的尊重,我有幾個同學在百度面試時差點被面哭。

就我個人而言,我先後參加了百度的實習生面試和正式員工面試。正式員工面試給我感覺相當不錯,流程很規範,面試官很nice,問的問題也說的過去;然而實習生面試那兩個人就是翔,不但問的問題很二,而且不給我任何交流的空間,同時在面試過程中表現出一副非常不屑的神情,令人極度不爽。

此外,百度的員工(包括面試官)給我一種工作過度的感覺,說驚悚些就是印堂發黑。結合豔紅哥提到的狼性精神,我這号醬油男說啥也不敢去。

搜狗(2輪面試)

搜狗的應屆生面試分為4輪,2輪技術+1輪HR+一輪Manager,4輪面試是分開的,是以會比較麻煩,畢竟來回跑來跑去的很費時費力。

我的搜狗面試經曆比較诙諧,盡管面了2輪,但2輪都是一面,第一個一面是朋友幫忙推薦過去的面試,第二個一面是參加搜狗筆試獲得的面試機會,從這裡多少能看出搜狗招人是有點混亂的。

第一個一面非常囧,當時面試官問我C++,我表示很少用,接下來問了若幹智力題,由于被問的有些拙計,于是反問“這種智力題有什麼考察度,會做的人一下子做出來,不會做的一天也搞不定”。估計這句話把面試官搞毛了,接下來的氣氛變的很緊張,後來面試官反問我“那你覺得應該怎麼招人”,我回答“你們應該學學微軟”。然後就沒有然後了,囧tz。

第二個一面感覺還成,因為我筆試的題目答得比較出彩。接下來是一個strcpy的紙上代碼和一個簡單的OS生産者消費者問題,答得還算順利,可惜依然沒有然後,我懷疑可能是沒有Hire Count了。

搜狗面試給我一個很大的教訓,就是别裝逼,求職就是求職,别和面試官擡杠。在接下來的面試中,我收斂了很多。

創新工場(2輪面試+4輪終面)

創新工場本身是一個孵化公司,它的招聘流程是這樣的:工場進行筆試和面試初選,然後由工場下面的子公司進行複選,由于子公司衆多,是以工場有一個雙選會,每個通過初選的求職者可以選擇3家工場的子公司,在這個雙選會上開複哥很是鼓吹創業,不過效果似乎不太理想 :-D

工場的初選面試有兩輪,然後是3個子公司的複選面試。和其它公司不一樣,工場的面試時間非常短,隻有25分鐘:一個自我介紹,兩個無需寫代碼的題目。有點拼人品,因為這麼短的時間很難考察全面。複選面試大多是電面,比較簡單,算法題目說下思路就可以。順便推薦下友盟,感覺這些子公司裡面這家的發展潛力最大。

騰訊(1輪面試)

騰訊的應屆生面試的組成我不太清楚,因為1輪就GG了。

騰訊的面試也讓人很火大,面試官直接拿一個laptop在那裡給你放ppt,一個slide一個題目,答完下一個slide,結果是我說的口幹舌燥面試官還沒說兩句話。題目五花八門,從履歷到智力題再到為人處事,印象裡答了不下七八道題目,累的一逼還沒通過,尼瑪。

不過騰訊的面試中見到很多PLMM,目測有很多非技術崗。

人人(2輪面試+2輪終面)

人人的應屆生面試一般是2輪面試+1輪終面,由于我的筆試和面試發揮不錯,是以又得到了一個加面的機會,拿到了人人special offer,待遇非常給力。

人人的一面面試官非常nice,我當時遲到了30分鐘,由于沒吃飯是以直接蹭了幾個面包,一邊吃一邊回答問題一邊寫代碼。由于一面主要考察紙上代碼,這個是我的強項,是以很輕松的通過了。二面相對雜一些,資料結構,算法,設計模式,多線程等都有涉及,不過問的都不深,也比較容易。

終面第一面由自我介紹+讀過的書+寫一段代碼組成,正好剛剛讀過Sicence of programming,于是就海侃了一頓程式正确性證明的東西,并用這個證明了下自己的代碼的正确性,目測效果還不錯。

終面第二面是一個大manager面試,這一輪主要是自己的職業發展路線等其它非技術問題,聊的也比較順利,然後他直接告訴我我拿到了special offer。

人民搜尋(2輪面試+1輪終面)

人民搜尋的應屆生面試由1輪算法面+1輪設計面+1輪終面組成,每一輪面試都是45分鐘,時間控制很嚴。

和其它公司的面試不同,人搜的算法面試沒有自我介紹環節,直接就是搞算法題目,至少要做兩道(難度一般,肯定會有一道動态規劃),并在紙上寫出完整的代碼。由于缺乏溝通,這輪面試略感生硬,不過還是比較順利的通過了。

設計面試多了一些溝通環節,接下來大部分時間會讨論一個系統的設計,你需要給出這個系統的架構,接下來面試官會不斷的追問如何改進該系統以應對大使用者量大資料量等極端情況。我這方面的知識不多,隻會很土鼈的hash+cache,磕磕絆絆的把這輪過去了。

終面面試官是一個前google工程師,正巧當時我在google面了好幾輪,比較了解google面試的套路,是以很順利的就通過了。

總之,人民搜尋的待遇比較給力,而且能搞定戶口,如果想在北京長待而且視戶口很重,那麼人搜值得一試。

08

外企

國外的IT公司一共去了4家,拿到3個offer,面試16場。

微軟(2輪面試+1輪終面)

微軟從去年開始大規模擴招,印象裡以前應屆生招幾十人,現在一個STC(網際網路工程院)就能招二百餘人,是以面試難度也有所下降,面試輪數由以前的5輪左右下降到現在的3輪左右。

這裡多提一句,很多人把微軟和MSRA(微軟亞洲研究院)劃等号,甚至有人認為進了微軟就等于進了MSRA,其實微軟有很多部門,包括STC、STB、MOD等部門,MSRA隻是其中一個研究性質很濃的部門。不過MSRA要求極高,和其它部門不同,一般MSRA的FTE隻招博士,很少招碩士,招聘需要進行七輪甚至以上的嚴格面試,難度絲毫不亞于谷歌。而MSRA的實習生則容易很多,名校學生一般有内部推薦就可以搞定。

我之前在微軟進行過實習,是以直接參加了實習生轉正面試,三輪面試分别由SDET,SDE和一名進階部門經理進行面試,面試的流程可以參考我之前提到的正常面試流程。與國内IT公司不同,微軟不會問語言細節或是OS細節之類的人品問題(就是那種上網搜一下就明白的題目,C++的虛函數實作機制是此類非常典型的人品題),而會集中在算法設計和程式設計上,其中應屆生面試又以紙上代碼最為嚴格,即使到了終面依然會有紙上代碼編寫環節,盡管不會考察特别複雜的算法,但對細節要求的非常嚴格。好在我之前有微軟幾位SDE的指導,紙上代碼功夫還是不錯的,并且實習期間獲得了不錯的review,是以比較順利的通過了微軟實習轉正面試。

微政策(2輪面試)

微政策是一家進入中國沒多久的外企,規模不大,工作内容主要是大資料分析+資料可視化,面試一般由四輪到六輪面試組成。我比較悲催的直接挂在第二輪面試。

微政策是我面試的外企中唯一全程使用英語面試的公司,面試官給人的感覺是很smart,但不nice,具體原因我後面說。

第一輪面試主要問了些面向對象相關的内容,接下來是一些智力題目,我有一道題目(高樓扔雞蛋)沒有說清楚,盡管答案是正确的,但我的推導思路比較繁瑣,是以浪費了大量的時間和面試官進行溝通。事後回想下面試官還是很nice的,主要還是自己平時想問題淺嘗辄止,才會敗在這道題上。

第二輪面試就讓我感到不爽了,我在自我介紹時直接被面試官打斷,以至于自己的亮點經曆說都說不出來,而且在後續的程式設計環節中,面試官拒絕和我進行交流,我寫完了題目他又說這個和他要求的不太一樣,當時我心裡就開始暗罵wtf了。估計是前一輪被評為weak hire以至于這一輪的面試就是走走形式吧。

雅虎(3輪面試+1輪終面)

雅虎的面試分為3輪技術面和1輪終面,在同一天完成。盡管雅虎公司一直給我一種搖搖欲墜的感覺(經常有傳言雅虎可能會被收購),但雅虎公司的員工給我感覺都很nice且很smart,而且比微軟的員工要有活力許多。

三輪技術面試有兩輪是典型的技術面,自我介紹+技術提問,由于我在履歷上提到“閱讀了120本以上的計算機經典書籍”,是以被問到了“看過最經典的計算機書”這樣的問題,我拿Brian Kernighan和Rob Pike的The practice of programming吹了一陣,算法題目相對微軟要難一些,除了動态規劃,也涉及到了字尾數組等不太常見的資料結構,還好之前有所準備,是以回答的還不錯。

終面的面試官是一名移動部門的老大,問了一些資料結構設計和職業規劃的問題,并用英文進行了一小段交流,由于這些問題準備的很充分,是以跟他聊的比較high,終面也很順利的通過了。

Google(7輪面試)

Google的面試輪數不定,如果表現良好,4輪面試就可以拿到offer,但如果有某輪面試表現一般,可能會進行加面來進行确認面試者是否合格,拿我自己來說,進行了7輪面試(據說有進行到10輪以上的,不過無法确認可信性)。Google是典型的工程師文化工程師面試,沒有終面這個說法,每個面試官都有一票否決權,加上每個面試官考察的點都不一樣,是以Google面試是我經曆過的難度最高的面試。

其實Google的面試我本來沒抱多大希望,因為Google一直給我可望不可及的感覺,是以面試時也很放松,這種“自暴自棄”的心态反而讓我發揮的不錯,一步一步走到最後,并拿到offer。

Google的面試每一輪大約45分鐘,時間卡的比較嚴格。面試題目肯定會包含算法和程式設計(一般展現為紙上代碼),同時包含其它各種各樣的問題,我經曆了政策題(設計一種政策進而在某個遊戲中達到優勝)、資料結構設計、系統設計、白盒/黑盒測試、項目介紹等五花八門的題目,題目的類型視面試官的類型而定:學術型的面試官(比如說名校PHD)問的題目偏重算法,工程型的面試官(大多是社招的Googler)問的題目偏重項目經曆。面試題目并不像網上傳說的那麼困難,但是面試官會抛出很多Probing question,讓你給出一個optimal solution,這着實讓我拙計了幾次,不過即便一時間想不到最優解也不要緊,一邊保持和面試官的交流一邊試探各種可能的思路,這裡再次推薦下Polya的How to solve it。

由于面試輪數很多,是以這裡就不依次說每輪面試的細節,可以參考下面的Google面試經曆連結。

http://blog.yxwang.me/2012/12/job-hunting-in-usa-1/

09

總結

筆試難度:微政策>人搜>人人>雅虎>搜狗>創新工場>騰訊

面試難度:Google>雅虎>人搜>微政策>微軟>人人>百度>騰訊=搜狗=創新工場

待遇:Google>人人>人搜>雅虎>微軟>百度>創新工場旗下子公司

毫不猶豫的選擇了Google,盡管我自己是.Net流,天天折騰VS和C#,linux和unix啥的都沒碰過,但就前景來看,不得不承認Google比微軟強太多了。

老實說我自己進Google感覺像做夢,畢竟不是搞ACM的,大學成績一般,什麼獎學金都沒拿過。

但回想一下,這也不全是靠運氣:從07年(那時我大三,一行代碼沒寫過)挂科開始,決心開始搞計算機這行,編寫自己的第一行靠譜代碼,獨立完成第一個程式設計作業,閱讀書籍,不懂的就來D版詢問各路大神(這裡謝過FloridDong,UGLee等大神),然後一邊實習一邊讀書學習,花了半年考研考到帝都,在考研結束的那段時間(四個月假期)精讀了資料結構,計算機組成等基礎經典書籍,補習自己的基礎。到帝都之後,在一場即興技術口譯之後,獲得去微軟實習的機會,然後在實習中學習編譯器知識,創作了自己的程式設計語言和編譯器,加入朋友的創業團隊并合作完成了AppStore TOP1的應用,離開團隊獨立搞定Windows Phone 7上最火的撥号應用、閱讀應用和AV應用并在移動網際網路中賺到自己的第一桶金,通宵一周完成畢業小論文發表并推薦到核心期刊,為了求職寫了三本紙上代碼,閱讀the Science of programming學會如何證明自己代碼的正确性,100%的履歷通過率+100%的筆試通過率,最後進入Google。

現在回想,感慨萬千。