你的工作就是最好的面試
作者:鄒欣
大約是1996年春天,我在韋恩州立大學(xué)(Wayne State University)正忙著寫碩士論文。一天,收到了一封電子郵件,來自Richard Brodie,我依稀還記得上面寫著:
"I'm the creator of Word. I found your resumes……are you interested in a contract position at Microsoft (我是Word的發(fā)明人之一。偶然看到了你的簡歷,請問你對一個(gè)在微軟工作的合同制員工職位感興趣么)?"
他叫我寫了一個(gè)程序 (好像是二叉樹排序),我寫好之后email給他。幾天之后,他又安排了微軟的一個(gè)電話面試,主要詢問了一些關(guān)于項(xiàng)目、程序設(shè)計(jì)語言方面的知識。不久,他說我還得親自去面試,同時(shí)把去微軟公司總部Seattle的來回機(jī)票寄給我了。
說實(shí)話,當(dāng)時(shí)我試圖用Word 軟件寫畢業(yè)論文,功能很多,但是并好用,我后來是在一個(gè)很舊的Macintosh機(jī)器上用Mac的軟件寫完了論文。在這之前,我已經(jīng)得到了幾家軟件公司的Offer。并且因?yàn)橐郧坝羞^在一個(gè)大型公司工作不愉快的經(jīng)歷,我對大公司的興趣倒不大。但是又一想,免費(fèi)的機(jī)票、還有Microsoft 的名聲,于是我抱著去看看的心理就上路了。
那天清早,我從底特律經(jīng)匹茲堡飛到了西雅圖,由于時(shí)差的關(guān)系,到達(dá)時(shí)還是早上。Richard 接了我,從機(jī)場到微軟的路上,他和我聊了我在國內(nèi)做過的項(xiàng)目。聽說我們在目標(biāo)碼上漢化了SCO Unix(由于沒有源代碼,我們反匯編Unix的代碼,然后在上面修改,讓漢字能顯示出來,比較Hacky)。他吃了一驚,拍拍我的肩膀說,那你做這個(gè)工作是沒問題的了。
我進(jìn)了微軟17樓的門廳,覺得氣派不小,一個(gè)叫Gary的人把我領(lǐng)到他的辦公室,屋里堆滿了各種各樣的玩具,一個(gè)大盒子上好像還有日語寫的“棋盤”二字。寒暄之后,他就直奔主題。
他問道:“在一個(gè)含有DBCS的字符串中,如何從當(dāng)前的位置向字符串頭退一個(gè)完整的字符?”
讀者看到這個(gè)地方可千萬別笑,當(dāng)時(shí)的不少文字編輯器不能處理這些問題,編輯的光標(biāo)時(shí)不時(shí)會(huì)跑到一個(gè)漢字的中間去。我在黑板上寫算法,他在旁邊提問。這個(gè)問題的關(guān)鍵是了解DBCS (雙字節(jié)字符集系統(tǒng)) 中 leading byte和trailing byte的區(qū)別,然后向字符串開始處搜索。寫完大概的算法后,又繼續(xù)把所有細(xì)節(jié)都實(shí)現(xiàn)了,然后討論了優(yōu)化的問題。最后,他好像挺滿意。
(現(xiàn)在想不起來午飯是如何解決的了,一般情況下吃午飯時(shí)也要安排面試,問一些和技術(shù)有關(guān)的問題)
第二個(gè)見面的叫Daniel,看樣子像中國人,他叫我做了幾個(gè)指針的程序,大概是把單鏈表倒過來之類的。然后要我分析各種算法的優(yōu)劣。這一關(guān)很順利就過了。
第三個(gè)見面的叫Matt,他跟我談了他們正在做一個(gè)叫Outlook的email和個(gè)人信息管理程序,遠(yuǎn)東版(Fareast, 中日韓語言)進(jìn)度很慢,需要做不少處理雙字節(jié)的工作,以及各種和中日韓環(huán)境有關(guān)的問題。我問他:“你們?yōu)樯恫挥?Unicode , 我覺得Unicode一出,就再也不用DBCS了?!彼悬c(diǎn)尷尬地說,我們的程序是建立在一個(gè)叫MAPI 的平臺(tái)上的,它還不支持Unicode。正說著,門外一陣騷動(dòng),有人推門進(jìn)來說:“哥們,快去……”。征得我的同意之后,Matt 帶著我來到一個(gè)大廳,一幫人圍著看一個(gè)人在被剃光頭,有人還在起哄。被剃者面帶微笑,巋然不動(dòng)。Matt介紹說,他叫Mike,是Outlook的開發(fā)總經(jīng)理 (development manager)。他和大家打賭,如果在某月某日之前整個(gè)團(tuán)隊(duì)的bug數(shù)量減少到一定數(shù)目,他就以光頭回報(bào)。
看完剃頭事件,我從堆滿飲料的冰箱里拿了一聽Mountain Dew,繼續(xù)面試。Matt叫我實(shí)現(xiàn)標(biāo)準(zhǔn)函數(shù)itoa()功能,就是把數(shù)字轉(zhuǎn)換成為字符串輸出?;蛟S是累了,或許是Mountain Dew里大量的咖啡因起了作用,我覺得用簡單的循環(huán)方法太平常了,就寫了一個(gè)用數(shù)學(xué)函數(shù)的做法。他說,這是我第一次看到這樣的解法,你為啥不用簡單的方法?你知道數(shù)學(xué)庫函數(shù)有多慢么?其實(shí),我當(dāng)時(shí)的想法是想用這種解法向面試官證明自己懂得挺多的,現(xiàn)在看起來比較幼稚。?
下午,Richard送我到機(jī)場附近的旅館,路上他問,要不要在西雅圖一帶兜兜風(fēng)?我說,我覺得我肯定會(huì)來這里上班的,以后有的是機(jī)會(huì),這次就不用了。吃晚飯時(shí),我還買了一份報(bào)紙,拿了幾份房地產(chǎn)的廣告,和中西部的價(jià)格比較了一下,當(dāng)時(shí)比較的是租房子的價(jià)錢,不是買房子的價(jià)錢。?
回到底特律一兩天后,Richard來email說,前兩個(gè)面試都挺好,好象第三個(gè)面試官有些看法……又過了幾天,他說,你可以來上班了。于是,我就推掉了其它公司的offer,來到了微軟公司所在的雷德蒙,在微軟里開始為遠(yuǎn)東版的Outlook進(jìn)行開發(fā)。我那時(shí)的Email 地址前有一個(gè)“v-”,表示vendor。
當(dāng)時(shí)我面試的公司中,我記得只有微軟是要求我當(dāng)場寫程序,而且要寫得非常完整的程序,不是講一講大概的想法就行了。
我還記得曾經(jīng)有公司問我“你如何定義成功?”,這個(gè)問題真是難以回答,我真想親自問一下提問人的標(biāo)準(zhǔn)答案是什么。還有一個(gè)公司還叫我做了兩個(gè)小時(shí)的心理測試問卷,其中問到:“古今中外,你崇拜的人是誰,為什么?”我心想如果寫中國的古代高士,那太難解釋清楚了,于是我轉(zhuǎn)而描述了某位美國開國元?jiǎng)祝冶M量小心不要把他的事跡和其他開國元?jiǎng)椎氖论E混淆起來。大概他們分析出來我的心理還算主流,不久之后我也得到了這家公司的入職邀請。