的一個電話面試,主要詢問了一些關於專案、程式設計語言方面的知識。不久,他說我還得親自去面試,同時把去微軟公司總部Seattle的來回機票寄給我了。
說實話,當時我試圖用Word 軟體寫畢業論文,功能很多,但是並好用,我後來是在一個很舊的Macintosh機器上用Mac的軟體寫完了論文。在這之前,我已經得到了幾家軟體公司的Offer。並且因為以前有過在一個大型公司工作不愉快的經歷,我對大公司的興趣倒不大。但是又一想,免費的機票、還有Microsoft 的名聲,於是我抱著去看看的心理就上路了。
那天清早,我從底特律經匹茲堡飛到了西雅圖,由於時差的關係,到達時還是早上。Richard 接了我,從機場到微軟的路上,他和我聊了我在國內做過的專案。聽說我們在目標碼上漢化了SCO Unix(由於沒有原始碼,我們反彙編Unix的程式碼,然後在上面修改,讓漢字能顯示出來,比較Hacky)。他吃了一驚,拍拍我的肩膀說,那你做這個工作是沒問題的了。
我進了微軟17樓的門廳,覺得氣派不小,一個叫Gary的人把我領到他的辦公室,屋裡堆滿了各種各樣的玩具,一個大盒子上好像還有日語寫的“棋盤”二字。寒暄之後,他就直奔主題。
他問道:“在一個含有DBCS的字串中,如何從當前的位置向字串頭退一個完整的字元?”
讀者看到這個地方可千萬別笑,當時的不少文字編輯器不能處理這些問題,編輯的游標時不時會跑到一個漢字的中間去。我在黑板上寫演算法,他在旁邊提問。這個問題的關鍵是瞭解DBCS (雙位元組字符集系統) 中 leading byte和trailing byte的區別,然後向字串開始處搜尋。寫完大概的演算法後,又繼續把所有細節都實現了,然後討論了最佳化的問題。最後,他好像挺滿意。
(現在想不起來午飯是如何解決的了,一般情況下吃午飯時也要安排面試,問一些和技術有關的問題)
第二個見面的叫Daniel,看樣子像中國人,他叫我做了幾個指標的程式,大概是把單連結串列倒過來之類的。然後要我分析各種演算法的優劣。這一關很順利就過了。
第三個見面的叫Matt,他跟我談了他們正在做一個叫Outlook的email和個人資訊管理程式,遠東版(Fareast; 中日韓語言)進度很慢,需要做不少處理雙位元組的工作,以及各種和中日韓環境有關的問題。我問他:“你們為啥不用 Unicode ; 我覺得Unicode一出,就再也不用DBCS了。”他有點尷尬地說,我們的程式是建立在一個叫MAPI 的平臺上的,它還不支援Unicode。正說著,門外一陣騷動,有人推門進來說:“哥們,快去……”。徵得我的同意之後,Matt 帶著我來到一個大廳,一幫人圍著看一個人在被剃光頭,有人還在起鬨。被剃者面帶微笑,巋然不動。Matt介紹說,他叫Mike,是Outlook的開發總經理 (development manager)。他和大家打賭,如果在某月某日之前整個團隊的bug數量減少到一定數目,他就以光頭回報。
看完剃頭事件,我從堆滿飲料的冰箱裡拿了一聽Mountain Dew,繼續面試。Matt叫我實現標準函式itoa()功能,就是把數字轉換成為字串輸出。或許是累了,或許是Mountain Dew裡大量的咖啡因起了作用,我覺得用簡單的迴圈方法太平常了,就寫了一個用數學函式的做法。他說,這是我第一次看到這樣的解法,你為啥不用簡單的方法?你知道數學庫函式有多慢麼?其實,我當時的想法是想用這種解法向面試官證明自己懂得挺多的,現在看起來比較幼稚。J
下午,Richard送我到機場附近的旅館,路上他問,要不要在西雅圖一帶兜兜風?我說,我覺得我肯定會來這裡上班的,以後有的是機會,這次就不用了。吃晚飯時,我還買了一份報紙,拿了幾份房地產的廣告,和中西部的價格比較了一下,當時比較的是租房子的價錢,不是買房子的價錢。J 電子書 分享網站
你的工作就是最好的面試 鄒欣(2)
回到底特律一兩天後,Richard來email說,前兩個面試都挺好,好象第三個面試官有些看法……又過了幾天,他說,你可以來上班了。於是,我就推掉了其它公司的offer,來到了微軟公司所在的雷德蒙,在微軟裡開始為遠東版