第15部分 (第2/4頁)
孤悟提示您:看後求收藏(奇妙書庫www.qmshu.tw),接著再看更方便。
面特別需要進一步瞭解的話,我也可以調整一下面試問題的側重點。
其實,整個面試過程就是為了回答一個問題,我是否願意和此人一起共事。決定這個問題的答案即包括面試者的技術能力,也包括其他方面,如是否對這個工作有足夠的熱情,是否有團隊精神,等等。
好,說了這麼多套話(自己都要煩了),那就舉一個具體例子吧。
觀察的過程從我在第一次見到面試者就開始了。當然了,不會特別在意著裝,因為微軟大多數人都不在乎這一點,尤其是技術部門。如果面試者顯得有些緊張,我往往會建議是否要喝點什麼,再加上幾句今天天氣哈哈哈的話,緩解一下情緒。都是過來人嘛。特別指出的,每次我都會問是否要先用洗手間。
因為有一次我剛把一位老兄帶到辦公室,他就很不好意思地說剛才喝水喝多了,一定要解決一下子。的確這是我的過失。所以從此以後我就特別注意這一點。
如果是午餐面試的話,我的原則是絕對不會在餐桌上問及技術問題。因為我自身有痛苦的回憶。?
一進辦公室,第一件事是關門(不過不會放狗?),鎖定機器並且把電話關閉,這是我認為對面試者應有的尊重。
面試剛開始,往往先作一個簡單的自我介紹。然後開始問一些基本問題,如為什麼對這個職位感興趣。
不要覺得這個問題不重要。因為具體的知識往往不是最重要的,而對從事領域的熱情更為關鍵。不會的東西可以學,但是沒有學習的動力就麻煩了。特別的,微軟面試的一個特點就是對面試者以往的工作背景問得不多,甚至很多時候並不特別在意以前的工作經歷和這個職位是否相關,其根本原因就是認為不會的東西,學會了補上就可以了。
下面往往就切入面試的主要部分。對於軟體開發人員職位來說,這一塊就是程式設計了。
一般不會(至少我是這樣)考特定的一個領域知識。舉個例子,我絕對不會讓面試者回答一個特定的Win32API是幹什麼用的,或者用ATL寫段程式。問題就是基本的資料結構/演算法/程式語言。如果面試者說對C++不瞭解,沒關係,JAVA也行。怎麼,JAVA也不會,那pseudo…code也可以呀。
坐上了面試官的位置(2)
問題的方式往往採用由淺入深的方式。為了這本書,我忍痛貢獻出自己最為得意的一個考題:
問題:寫出一個函式,判斷輸入一個整數是否為素數
不難吧?當然了,如果你說不知道素數是什麼,我就無語……好在我面試過程還從來沒有遇到過這種情況。
如果你沒寫好函式的定義(declaration),確定輸入輸出引數型別,就迫不
及待開始寫內部程式碼的話,我心裡就要打個問號了。
好,程式碼在白板寫好了。
這裡就來了下一個問題,首先檢查函式的基本邏輯是否正確。
其次,檢查一下是否正確處理各種邊界的情況,如0,1,2等等。
以上只是兩個基本問題。好了,函式寫完了,也處理了邊界條件。
那下一個問題:如何提高它的效率?
這裡可以有演算法的改進,例如從測試的最大數字n/2變成n的平方根,每次迴圈的步長可以是2等等。
但是,如果效率還不夠高,怎麼辦?
這裡測試的就是是否可以靈活考慮使用各種其他的資料結構。例如如果分析輸入範圍只是0到1000,是否可以考慮hashtable?事先計算素數表。如果面試者提到這一點,好,又一個問題:如何最快計算一個範圍內的素數表——素數篩法?
但是,如果效率還不夠高,怎麼辦?
是否可以考慮caching,如果函式輸入有一定模式?caching的基本模式和演算法?什麼樣的應用程式會如此密集使用素數判斷?是否合理?
這就是我說的由淺入深的提問方式。當然了,不同的人有不同的面試方法,這裡說的只是一個微軟經常採用的方式。
還有一點,就是如果你對某個問題不知道答案的話,也許並沒有關係,因為許多情況下,面試官並不指望你能回答出所有問題。就像上個問題中的素數篩法的演算法。如果這樣,你可以據實回答:“這方面我並不瞭解,我推測可能是如何如何…”但是,如果你要不懂裝懂的話,那結果可能會得不償失。
面試收尾
這