1. 程式人生 > >騰訊,百度,阿里的面試經驗

騰訊,百度,阿里的面試經驗

小白看了此同仁的面試經久久不能平復,感嘆自己菜鳥的同時,痛惡自己對於時間的浪費,大學時期的小白真的很瀟灑,工作到現在的小白也是偷得浮生半日閒的小瀟灑,想練就下面的同仁的水平,小白不吃不喝還需要2年,小白在吐血,故發帖在此,向這位仁兄學習!!2年的時間,我能變成什麼樣,今天是2014-03-21 10:02

1. 騰訊篇:

本人IT屌絲一枚,畢業4年,5年經驗(大四在騰訊實習一年,實習生工資,工作內容同正式員工一樣)。非常幸運,先後收到過騰訊、百度和阿里的offer,在這裡跟大家分享下經驗,同諸君共勉。
我職業生涯的起點開始於騰訊,能入職騰訊其實非常偶然。09年騰訊校招的時候,在本人的學校(學校是2本就不說名字了)開宣講會,學院很多同學都去了,因為當時對騰訊興趣不大所以沒去,當時希望去中軟金蝶這樣的傳統軟體公司。一個宿舍的兄弟要去參加騰訊校招的筆試,我作為親友團陪他一起去。騰訊的hr很nice給了我一張筆試題和意願表讓我填。本來我想從學校北門直接坐車回家,既然來了反正也沒什麼事就寫了,算是為以後找工作熱身。筆試內容主要是程式設計基礎和排序查詢演算法之類的題,還有用程式實現遞迴這樣的,具體的忘記了。
筆試題感覺很簡單,附加題也答上了(本人專業課學霸、其他科學渣)。答完也沒檢查就坐車回家了,吃飯的時候收到騰訊叫我第二天去一面的簡訊,剛好我爸爸媽媽在南山的同學去我家做客,就乘阿姨的順風車回學校準備第二天的面試。
騰訊一面的面試官非常的nice也是我後來的組長,非常有人格魅力的一個人,我去的時候還特意給我倒了一杯水。主要問我瞭解的技術,我就介紹了下在大學期間做的C++、.Net和J2EE專案,規則引擎、財務系統、學業預警系統、爬蟲引擎這些。因為完全沒準備所以回憶起來有點吃力,還好面試官沒有刁難,發揮還可以。問了Java的記憶體機制,會不會導致記憶體洩漏,這個答的不太好;問了下hibernate的機制和作用都回答上了,讓寫了下爬蟲程式的核心程式碼和正則表示式。
一面整整面了30分鐘感覺有戲,就回去好好準備2面的內容,把當年工程程式碼翻出來複習以免再出現忘記的尷尬。很快第二天就通知去進行技術二面。技術二面就是傳說中的壓力面,被好一頓虐待。專案中的問題一個沒問,問的全是作業系統、資料結構的問題。還好專業都是A+,大多數題都回答上了。問了下我樹轉二叉樹,這個小意思。還問了Java記憶體機制和是否會有記憶體洩漏什麼情況下會洩漏,good這個在一面回去之後就看了,回答的完美。最後一題是問的查詢QQ號。小case,寫了個二分查詢;他說你認為我會滿意嗎,我想了想又寫了一個雜湊查詢,他說還是不滿意。這個時候我已經有點小不爽了,就說不知道。在有點尷尬的氣氛中結束了面試。當時覺得沒戲了,有點失落。回家看了下演算法導論,原來有一個極為高效的演算法是二叉查詢,唉,人家已經提示了,但是還沒想到,有點小遺憾。
過了一週收到騰訊的hr面試邀請的時候,說實話非常的意外。聽說我們學校本科生全軍覆沒,就我一個過了2面,研究生只有3個過了2面。hr面沒問什麼特別的,此處不表。一週後收到騰訊的正式offer,還是有點小激動的。薪水方面超過了我的預期,但最主要的是一面的面試官看起來很厲害的樣子,感覺騰訊也是一家很厲害的公司。
在騰訊幹了四年,正式三年,實習一年。後來開始負責招聘,我們部門在選擇求職者的時候主要看聰明程度、視野、大局觀、氣場等軟實力。當時我負責面了一個孩子,各方面挺不錯的,組長覺得也還行,但是被總監斃掉了,原因是太軟不夠霸氣。還有一個哥們技術和基礎感覺都還行,但是被組長避掉了,原因是視野和聰明度不夠。
所以準備面試騰訊的同學,建議多留意近期的網際網路的最新動態,多練練表達。如果能在面試中批判一下近期騰訊的決策失誤和產品缺陷,無論對錯都會認為這個孩子不錯,那麼一定會加分的;但是也不能過了,完全說的不對還侃侃而談會讓人覺得你這個人很浮誇也是會被斃掉的。還有一點,語速快而且語氣堅決目光堅毅自信的比語速慢表達不流暢的同學成功機率高。我面過一個哥們,後來他頂替了我領域負責人的位置,這是後話。他在面試的時候就非常的自信,如果問一些“弱智”問題會被他反諷,當時大家就覺得這個人很厲害,面試也很順利,1天連續面了5面,當天就發了offer。
要上班了,百度、阿里和其他公司的面經,晚上再發。

2. 百度篇

接上篇,剛加入騰訊的日子還是很happy的,第一個專案就是獨立開發一個抽獎營銷專案,之後跟一個技術很厲害又有想法的前端牛人一起負責比較重要的專案,當然是他帶我(當時的目標就是超越他,可惜到現在還沒實現。大牛當年教育我說,新人剛參加工作這幾年回家之後不要玩,要多學習這樣才能成長的快,當時我還不以為然;現在想想真是金玉良言啊)。 在10年底的時候得到了一個機會去負責全新的領域iOS開發和 Android開發,因為我個人對前端技術(JavaScript等)不怎麼感冒,還是比較喜歡做編譯型語言的開發工作。當時組裡的幾個大牛對終端興趣不大,老闆就把這個光榮而又艱鉅的任務交給了我。

  經過11年一年的艱苦奮戰,本人和另一個一起入職的兄弟從無到有分別開發了iOS和Android兩個應用(iOS是我們一起開發的,android是我自己開發的)。雖然現在看來當時的成果不算什麼,但當時是在沒有什麼資料和經驗的情況下摸索出來的,還是相當的不易。可惜當時的領導覺得我們做的並不好,一年下來才弄出這麼個小東西,這是他的原話。年底的時候基本上一天被領導當著全組的面罵一次,這個領導是新領導,不是當年面試我的那個領導了。當時也是年輕不敢頂撞領導,但是不爽和負面情緒肯定是有的。所以開啟了離職找工作的程式。

  12年初的時候被獵頭推薦去北京的一家公司,後來才知道就是大名鼎鼎的百度。因為自信心爆棚,牛逼哼哼就去了。結果就是兵敗莫斯科。被大大的打擊了一頓。

  百度面試跟騰訊完全不同,百度面試非常重視技術、重視應聘者的基本功、演算法、資料結構、C++、作業系統、面向物件、軟體體系結構、系統設計和模組劃分上的能力,可以說錙銖必較。這些東西在大學的時候本人可以說得心應手,但是面試的時候基本上一問三不知,連我自己都覺得不好意思。印象比較深刻的幾個題。ObjC基礎,這個就不說了,幹了1年iOS開發的都會;響應者鏈是什麼和原理,沒答上;堆疊;程序排程;查詢演算法、排序演算法;面向物件設計的原則;移動應用安全;c++指標運算,如何把一個數存到0x00這個位置。iOS效能調優。畫出你的專案的模組圖。很多都沒答上來,面試官很nice說可能是太長時間沒用了忘記了,機制沒回答上來就問我你不知道機制沒關係你可以提出自己的看法,猜他是怎麼實現的,答對了一樣有分。算是幫我挽回了點面子。

  這次面試失敗對我的打擊非常大,因為面試的內容並不難。想了一宿,其實加入騰訊只職業生涯的一個起點而已,並不代表你比別人優秀多少,很多比你更優秀的人沒進來可能只是運氣沒你好而已。職業生涯跟長跑差不多,一開始你比別人領先一點,只要稍微放鬆,馬上就會有比你更努力的人追上並超過你,不同的是,長跑更容易發現自己已經落後了,而職場上等你發現的時候可能已經晚了。程式設計師跟賽車手差不多,不是說你每天開車你的駕駛技術就能成為職業賽車手,而是必須經過專業的訓練,有針對性的訓練;同理不是你寫了幾萬行程式碼你就是個技術專家,必須經過刻苦的學習才行。

  本人的缺點是容易得意忘形,優點是越挫越勇。經過這次打擊,每天最少用4個小時的時間學習iOS各種機制、資料結構、重拾C++。瘋狂寫程式碼,每月5000行編碼量,用了1個月時間重構了2w行程式碼。到了7、8月份的時候感覺功夫已經到位了,就決定再找公司練練手,檢驗下這個階段的學習成果。

  這次獵頭又給我推薦到了百度,去的是深圳百度分公司。感覺到百度好像很缺人,因為週一提交的簡歷週三就讓我去面試了,百度篩選簡歷出了名的慢。一面還是上回那些,難度加了些問了寫記憶體管理、執行緒調優的記憶體。小case,早就在我掌控之中。問了些Core Data、資料儲存的記憶體,問了下閉包block和block在記憶體中位置,同函式指標的區別。一面進行了一個多小時。完事後讓我等一下,看起來這把有戲。

  二面還是技術面,難度感覺比一面沒高多少,因為考察的都是面向物件、設計模式上的內容,呵呵,這個對我來說太簡單了,本人最大的愛好就是研究各種設計模式和軟體體系結構。問了下我的專案中的體系結構,問了下MVC的優劣,如果設計鬆耦合的模組,元件化模組化的之類的。

  三面主要是精神層次的, 問下未來的職業規劃,iOS和Android的差異性。你為什麼不繼續做前端轉做iOS,如何看待iOS的生態系統。問為什麼想跳槽,我回答說想專注iOS,現在騰訊讓我又搞iOS又搞Android,又搞聯調有點雜。最後問有沒有什麼要問他的。其實本人當時根本沒有過檔的打算所以說沒有。接著hr面,這個時候已經很晚了,雲了三個多小時,也不給一口水,有點小不爽。Hr面帶著情緒面的,看在妹子挺可愛的份上控制了自己的壞脾氣,hr可能也感覺到了我的抵觸情緒,草草收場讓回去等訊息了。

  四輪面試都要自我介紹,說的我都有點噁心了,感覺像失足介紹自己來自哪,等客人挑選。人格魅力感覺都不如騰訊的組長。

  過了三天接到電話,問我這邊的意願,工資又遠遠高於的預期(本人就是這麼鼠目寸光,老婆罵了我好多次)。當時身上有個很重要的公司級的專案,又覺得對不起騰訊的知遇之恩(因為這個老婆埋怨了我很多次),就拒絕了。

  但是對自己開發能力的訓練機制算是穩定了下來,還是有收穫的,基本上每天都自學到10點11點。後來易迅(易迅被騰訊收購其實就是騰訊的一個部門)的總監讓我過去做iOS易迅客戶端,承諾說辦手續最多3個月。雖然機會很誘人,但是為了報恩也好,責任感也好依然拒絕了。

      其實公司和個人之間本質上講就是商業關係沒什麼恩義,公司培養一個人也不是為了這個人的發展還是為了自己。business just business,跟感情混為一談吃虧的還是自己。放棄了這兩個機會之後,半年後本人經歷了職業生涯中到目前為止最大的危機。如果人有預知能力就不會有那麼多苦惱了。

  總體上感覺百度的面試要比騰訊容易些,因為騰訊注重的是軟實力,也就是說天賦,知識、技能、經驗都可以後天培養,但是天賦是天生的沒法後天鍛鍊,只能通過努力拉近差距沒法逾越。不過2011年後騰訊大擴張(不到一年狂招1w多人),招聘的門檻也沒有那麼高了。而百度更注重計算機技術和科學,這些東西通過努力都可以獲得。

        鄭重宣告:本人只是參加過以上幾家公司一兩個部門的面試,一個公司不同部門的面試風格是不一樣的,每位面試官的風格也是不同的,所以本人的觀點是非常片面的。完全是個人的感悟和心路歷程,不承擔任何法律責任。

接上篇,2012年可以說相當的辛苦經常有加班到11點、凌晨的情況,基本上是9點之後才能下班。為了這個重要的專案大家都很努力,終端領域也終於向好的方向發展,直到年底。

3. 阿里篇

  年底發生了一件不愉快的事情,內容就不說了跟主題無關。本人又開始了找工作之旅。

  1、第一次進軍阿里

  當時聽說阿里在無線發力,taobao和tianmao都在招人,兩個部門都對我發出了邀請,但是集團規定只能面其中一家,本人就選的tianmao。一面是組長面,電話面的,問了下專案,問了網路通訊協議,為什麼用json不用xml,pb協議的好處和壞處。因為本人負責的是非常敏感的業務,對安全有很高的要求,所以還問了些關於安全策略設計和構造。這個是本人的強項,因為當時在終端安全方面吃了大虧,經過好幾個不眠之夜之後設計的三層換票加密演算法,除非有內鬼,否則即使反編譯了我們的程式碼也無法解析我們的加密協議。感覺不錯,就讓我保持手機暢通準備技術面。

  技術面應該是一個組員面的,問的全是基礎的問題。iOS runtime、多執行緒幾種實現方式、如果進行網路通訊、對於block的看法,基本上都回答上了。最後問了下我對iOS6的新特性的認識,這個回答的不太好。因為本人當時忙一個大專案,基本每天搞到11點多,沒怎麼充電。面試完了查了下iOS6的新特性,也沒什麼特別的,有點遺憾。

  過了2天,那邊來電話讓我去一個酒店進行終面,他們的老大來深圳出差順手面我一下。面試整整持續了一個小時。問了我對微信的看法,問我們有沒有跟微信合作。如果縮減安裝包體積,這個問題我當時覺得自己回答的不錯。一年後回想起來,其實回答的很差,縮減安裝包的體積要從資原始檔上下手,儘可能用Core Graphics自繪代替資源圖片。如果是使用者可能用不到的功能,那麼應該只把程式碼合成進去而資原始檔應該在使用者第一次使用的時候從伺服器下載並快取在本地。裁剪第三方開源庫的程式碼等等。面試進行了一個小時,面試官客氣的把我送出房間。

  過了一段時間沒訊息,讓獵頭幫忙問下情況,回覆是工作年限太短,沒戲了。還是被小小的打擊了一下。如果面試管表現的特別客氣那麼你就要小心了,很可能被斃了。

  2、廣州之旅

  面試阿里失敗之後去了廣州一家網際網路公司,就不說公司名字了,因為對這家公司的怨念到現在本人還不能釋懷。不過這家公司好處是比較清閒,所以本人又開始了瘋狂學習計劃。老婆在深圳,我一個人在廣州反而可以騰出時間充電,公司管飯又省去了覓食的麻煩。每天學到12點,經常看書到凌晨2點。除了iOS開發外,還複習了C++ Primer紅寶書,這本書非常經典,強烈推薦。這家公司延了本人一個月的試用期,hr還讓我去簽字確認,我說現在是午休時間我不去,他說很快的,反正我就不去她也沒辦法,延期我試用期的第二天我向領導提出了辭職。領導竟然敢說他很意外,挽留了我一下,但是我對這裡毫無好感,再三請求之下脫了1個月終於離職成功。

  3、回到深圳

  回到深圳後就進了我現在這家公司,老闆是個技術很厲害的人,對本人也非常欣賞,負責了幾個重要模組的設計和開發工作。一個是即時通訊類的模組、一個是視訊加工編解碼的模組,就是憑著這兩個模組的設計開發經驗本人跟阿里又一次產生了交集。

  4、第二次進軍阿里

  這次去阿里面試可以說非常非常的偶然和戲劇性,因為本人根本沒投簡歷,以至於阿里hr給我電話的時候我一度認為是詐騙電話。因為深圳這家公司不錯我還想在這裡幹個兩年左右再考慮考慮。

  這個時候的本人已經發生了很大的轉變,從剛進騰訊的浮躁、自大、懼怕面試,已經轉變為淡泊、謙虛,並且喜歡上了面試,感覺每次面試就像楊過跟大雕過招一樣,武功都能精進不少。本著去看看技術面內容的心態去了福田東海大廈。

  一面沒有技術面直接就是組長面,首先是自我介紹,之後問了下專案內容。我就說了下即時通訊和視訊加工兩個模組。他讓我畫出模組的架構圖,這個建議大家準備一下,阿里和百度都有要求應聘者畫模組圖考察應聘者的開發層次和思路。本人沒什麼準備,不過當時設計評審時的UML還記著,就把模組圖和類圖畫了下。面試官又問,有沒有遇到困難;我說有,效能瓶頸、卡頓的問題、瞬時資訊量過大導致的UI卡死;他就問如何解決的:我說由實時重新整理改為定時重新整理。他問還有沒有更好的實現方式,我回答有用任務佇列。我們又爭論了下任務佇列的設計應該用先進先出還是後進先出。這個時候本人已經完全忘記是來面試的了,只想爭贏。語速也越來越快、聲音也越來越大。他質疑我這個機制在效率調優上沒有意義,因為系統會進行cell快取;我說在中間的時候系統快取可以生效,在最底部的時候就失效了,就會卡頓。最後還是我爭贏了,時間就這麼不知不覺中過了一個小時。問通訊訊息騰訊是如何做的,我說不知道我猜測是這麼做的巴拉巴拉。問了下我濾鏡的使用和原理,如何美白,我說修改OpenGL的值就可以了,問如何進行視訊合成,這個很簡單就是把視訊和音訊軌道抽出來再用composition合成就可以了。問了下加水印、也是從檔案中把視訊軌道layer抽出再把圖片layer加在這個layer上就可以了。把開始時間和持續時間、幀率設定好就ok了。又問了下為什麼來面試,本人說沒想過換檔,是你們叫我來面試的。一面官最後問了下,考不考慮杭州,本人非常堅決的說不考慮。他又說其他城市考慮嗎,本人說吉林就考慮。

  一面結束讓我去休息之後是二面,二面的面試官很nice。讓我做自我介紹之前竟然先做了自我介紹。他負責的部門是個很核心的部門。面試的內容跟一面差不多。讓我在白板上畫我設計的系統架構圖之後就是講解。問了下我的職業規劃,我說現階段還是想寫程式碼。他問多久,我說2年吧。他有問你對管理崗位怎麼看,我說一個好的管理首先要能幫助組員解決問題,我現在水平還達不到這個境界,想多寫點程式碼,程式碼量上去後設計能更合理一些,像這個設計當時有幾個優化點沒考慮到,有點遺憾。面試官問我有什麼問題之後我就詢問了下他們部門的情況和企業文化。面試官好像比較滿意,就讓我去hr面,還特別強調就是跟hr聊聊不算面試。

  hr面過程不表,就是問了下杭州房價問題。問我能不能來杭州發展,我說我考慮下,還不知道你們會不會錄用。閒扯了半個小時,就打道回府了。3天后收到阿里的offer通知介紹。給的薪水又一次超過了本人的心理預期,還有本人一直夢寐以求的期權。實在是沒法拒絕。

  阿里的面試跟騰訊百度都不同,感覺更注重專案實踐一些。總結來說BAT的技術面都差不多。只要把內功和外功都修煉好了再配合點實戰經驗基本上都可以應付三大的面試了。

  面試的核心流程都是:

  技術一面、技術二面(組長面)、總監面、hr面。騰訊會多一個經理面。但是一般總監認為可行的人,9成的應聘者都會通過經理面的,除非發現嚴重的撒謊行為。hr面就是走過場,刷人的機率基本上為零。以前招聘過一個同學,hr想刷掉,理由是沒有大公司經驗,被我們組長一頓叼,說這個人各方面都很適合又踏實,如果你們覺得這個不行你們就要負責招一個你們認為行的,否則我們工作做不下去了,hr就軟了。後來事實證明,這個同事工作完成的相當好,人的能力跟公司大小沒關係。最難的就是二三面,人也基本上是這兩面中刷下去的,大家一定要小心。我個人的經驗來看,總監越嚴肅通過的機率越大,越客氣就越危險。

  最後說一下,面試準確講不應該叫面試應該叫面談,就是interview。勞資雙方坐下來談談聊聊,互相瞭解。我們程式設計師作為技術工作者不是去求職的,只是去看看你的機會,你可以保留你的職位,我保留我的做事方法。