又一次由一個小小的隨機事件驅動,最終我決定來哈爾濱試一下。這一試不要緊,改變了我對于騰訊的成見,改變了我對于許多事物的思考角度及態(tài)度。
9月23日上午啟程,下午4點多抵達哈爾濱。在火車站打聽哈工大在哪兒,結果得到兩種截然不同的回答,只好自己打開手機詢問百度知道,在哈站兜了一個大圈,終于找到了去哈工大的公交。
5點多抵達HIT,沒有想象中的宏偉,也許濃縮的就是精華吧。計算機學院偏居一角,著實顯得孤零零的,居然還沒我們系的樓顯得氣派、現(xiàn)代和有科技感時尚感(也許我們的面子工程做得比較到位吧,呵呵)。一群老師正在抬一個名人的雕像,向幾個同學打聽了下騰訊筆試的情況,結果都說只知道他們之前在這兒開過宣講會,不曉得筆試這回事。
5點半,見到了剛下完課的龍哥,幾年沒見顯得格外得親切。怎么說呢,我和龍哥的交情也很特別,他是我干爹干娘的帶了三年的"嫡系"學生,又是我高中三年同班同學,樣子沒變但顯得更帥了一些(后來竟被旅店老板當成了韓國人,羨慕嫉妒愛與恨ing~)。在哈工大食堂請我吃了一頓飯之后幫我找旅館安頓了下來,又不顧晚上有選修課怕我找不回去帶我去在旅館和正心樓之間走了兩圈。
9月24日上午,開考前一個小時竟然不知道考試地點的確切位置,因為23日下午收到的騰訊筆試通知短信只說了"哈爾濱站",讓去網(wǎng)上查詢詳情。我聯(lián)系了面試官Steven,他說工大和工程大概各有5個考場,具體幫我查查,我真不好意思麻煩他,就自己趕緊在工大外面找了個網(wǎng)吧。
9點10分,在動用了一切人肉+狗肉的搜索手段之后,終于知道自己被分在了哈工程的一個考場,趕緊決定趕過去。出門打的也費了番周折,第一個的哥竟然不知道哈工程在哪兒,無語ing。
司機很好心,車開進了哈工程并且一路打聽21B樓在哪兒,又是兜了一個圈之后終于找到。樓前的奧列霍夫廣場又很多人在那兒開著大喇叭宣講,一派熱鬧。哪知我的考場由地下改為了二樓,又是一番周折,10點3分,剛開始發(fā)試卷,恰好趕到。
答題時很鬧心,外面那幫宣講的,伴著重口味的音樂吶喊個不停。也許有些緊張和煩躁,最后一道附加題竟然只寫在了試卷而非答題卡上(雖然不計入總分只作為參考,但畢竟浪費了時間)。12點交完卷來到廣場卻發(fā)現(xiàn)是一些科技協(xié)會的納新。有瓦良格號航母模型(艦載機除了一架Su-33竟然還有一架前掠翼的Su-47,這同學的想象力也真夠強的),有我在博創(chuàng)杯比賽現(xiàn)場看到了那種不知道是做間諜用的還是做自殺式魚雷用的自游的"魚",還有歷年從哈軍工-哈船舶-哈工程出來的兩院院士的大幅照片,……圍成了一個小迷宮。
中午去哈工程校園內一個餐館吃了飯,店主一家是在韓國待了很多年的朝鮮族人,大部分食物都是正宗的韓國風味。我點了泥鰍湯,沒想到他們的做法是剔除了所有的骨頭,當然肉都碎到了湯里,當然也去除了苦味,很好吃也很辣。店主女兒長得也很漂亮,一笑起來很迷人。
飯后從哈工程門口打的去飛瀧酒店準備面試,車剛開動,的哥--不,的叔拍了下我的大腿,“你十幾?”這時我突然意識到今天我竟然穿了運動服去面試,看起來活像高中生(這也許就是著名IT公司令人向往但地方,Google、Facebook等公司的創(chuàng)始人都希望他們的公司像大學一樣充滿自由和創(chuàng)造力),我說明了此行但目的,他說他很羨慕我們這個年齡段的人。
這次騰訊的筆試題目不難,很多題目頗有考研題目和軟件設計師題目的風格。但結果頗為意外:我自己感覺良好的選擇題得分卻不及平均水平;而自己感覺發(fā)揮較差的大題得分卻在前幾名,筆試總成績也就一般般。但因為是內推的緣故(感謝佳彤姐姐和Boss -- Chris)所以能夠先期得到批閱和首先得到面試機會。
本來通知是兩點半面試的,但是出了點差錯,因為Steven沒找著我的試卷,所以只得統(tǒng)一改,這樣我就在酒店大廳等待。當天還有海信、海格等公司的面試,趁機會也打聽了些情況,認識了一些哈工業(yè)、哈理工等學校的應聘者,他們普遍羨慕知名IT公司的工資和工作環(huán)境的自由。還認識到了哈爾濱人和沈陽人的差別:前者喜歡到外地闖蕩;后者對外地人心存畏懼一心想窩在東北。
下午五點多,Steven通知我一面開始,他先拿了我的卷子說筆試考得一般般,看看面試怎么樣,并問我如果通過了一面下面有何打算,我支支唔唔也沒有明確回答出來。他拿出紙和筆想了想就神速寫下兩道題目,要求編程做出,寫出代碼。我先做第二道,因為這道高中就做過,不過很多年也不太熟悉了,我先用一種"科學家用的"偽代碼描述(有點故弄玄虛,但他看也沒看),之后用C++實現(xiàn),用了不到7分鐘。接下來做第一道,確實有難度,這次我沒打算把具體代碼寫出,就直接寫算法思路,然后一部分一部分地優(yōu)化,給出了兩種方案,漢字描述寫了整整一頁紙,哪知他掃了一眼后說"我讓你寫代碼,不是算法描述,怎么怎么做誰不知道啊,關鍵是代碼實現(xiàn)",看來取巧不成,只得硬著頭皮寫……
從堆排序到基數(shù)排序到數(shù)字特征,從STL的sort到vector(mainshi.cnrencai.com),能用的都用上了,許多東西寫了又刪去,因為找到了一種更簡潔高效的實現(xiàn)方式……就這樣過去了半個多小時。他看了代碼第一句就說,"你假設數(shù)據(jù)都在內存中了,可這么大數(shù)據(jù)在內存中能放下嗎?合適嗎?考慮內外存的交換了沒?" 我先是傻了眼,然后靈機一動說,"一億零一萬個整數(shù)也就是400多兆,現(xiàn)在的機器基本都是4G,十分之一的空間放這個也不足為過,況且最大分配連續(xù)空間是可調的。但說實話,如果考慮內外存的交換的話需要歸并外排序,我對于這個只知道大致原理,實現(xiàn)不太熟悉",(呵呵,他設計的數(shù)據(jù)量還不足夠大,救了我一命,估計后面面試的人就沒這么幸運了) 然后他繼續(xù)看代碼,先是點了點頭然后又皺了眉頭,我在旁邊不停地解釋我算法的思想,還有一些特殊的實現(xiàn)細節(jié)比如異或交換兩數(shù),而且尤其強調我算法的O(n)的線性復雜度。不一會兒,他指著我的代碼,點評“后面這些有必要再放在一個循環(huán)中嗎?不能和前面的合并嗎?邊統(tǒng)計邊排不行嗎?”原來這個東西最優(yōu)的算法只需要過一遍就行了,而我的算法雖然達到了O(n)的復雜度但卻掃了三趟。
他最后給出了評價,40分鐘,扣掉你寫算法描述浪費的十幾分鐘,半個小時的時間完成了兩題,雖然第一道題有一點問題但畢竟達到了最優(yōu)的復雜度,基本方法也就是那個樣子,編程功底比較好,按照以往經(jīng)驗應該屬于上等。接下來他又問了幾個關于TCP/IP、網(wǎng)絡通信、C++的問題,我答得好壞參半。
他指了指桌上的試卷,"這是筆試較高的同學,17個,都是本科生",又指了指床上的一摞試卷,"這是淘汰的,很多研究生也在里面。我感覺本科生答這些題目更有優(yōu)勢,研究生項目做多了,基礎的都忘了"。又嘀咕了一句,大概是前面的選擇題我怎么能做得和研究生一樣差。他又說分析了下我的試卷,感覺我的不足在Linux、數(shù)據(jù)庫、C++方面(汗!這些都是以往我認為的強項啊……),數(shù)據(jù)結構的基礎還是比較好的,能否有機會進入下一輪取決于這17個人里有多少面試表現(xiàn)比你差,不出大的意外的話應該有機會。還建議我火車票不要改簽了,因為下面的面試官27號才會來。
這次哈爾濱之行,讓我看到了騰訊員工行動與思維的敏捷與睿智,看到了我自認為的強項竟然是如此的weak。同時也再次驗證了這么多年考試的一個事實:自己感覺考得好的一般很差;自己感覺發(fā)揮得差的卻未必差。