2016.11.02 08:43

Google 偏愛白板談兵的大學畢業生,勝過業界多年實務經驗的老工程師?

ADVERTISEMENT

不管怎麼看, Google 都是軟體工程師最夢寐以求的頂級公司之一,其高薪、免費食品、校園般的環境、創建的各種有趣技術,吸引了各方人士前往求職。但在另一個重要面向,該公司可能已經自打嘴巴其求才若渴的形象:傳奇般困難的面試過程。

Google 目前正在挨告,是來自一些沒得到工作的求職者有關年齡歧視的訴訟。 Google 回應這些官司是「毫無意義」的指控,這些控訴確實可能沒有意義,但有些程式設計師確信該公司的嚴格招聘流程,非常偏愛那些剛從學校畢業而無業界經驗的社會新鮮人。

針對其臭名昭著的面試過程,自由程式設計師 Michael Geary 接受 Business Insider 記者的訪問表示:「即使已經以外包程式設計師的身分為該公司服務了 5 年,根本就不想在 Google 全職上班。」

ADVERTISEMENT

 

Google 知道他是 Google Maps 專家

回到 2007 年年底,Geary 已經在一家名為 Zvents 的草創公司工作了一段時間,該公司創建了區域事件日曆(後來被 StubHub 收購)。

他的工作是為事件創建地圖,因此他成為運用 Google 地圖的程式設計專家。做為一個友善、樂於助人的人,他花了很多時間在 Google 地圖的郵件列表(mailing list)上,解決其他程式設計師遇到的問題。隨後 Google 也注意到了他,於是聘他來協助該公司建立 2008 年美國總統大選的選舉地圖。

ADVERTISEMENT

雖然他住在山景城的 Google 總部(Googleplex)附近,但他卻是被掛在華盛頓特區工作的團隊底下。這個團隊喜歡他的工作成果,他也喜歡與他們合作,續簽了 5 年的外包合約,剛好就在這個時間點時, Google 把這個計畫拉到了公司內部。

當時他面臨一個人生的抉擇:是趁機申請轉 Google 的正職,或者繼續用外包的形式合作下去?

最後他選擇了繼續維持外包的身分。

ADVERTISEMENT

「我聽說過他們的面試流程,」Geary 說到,「這個流程似乎是針對大學剛畢業後的社會新鮮人而精心設定的,當你剛畢業時,你有很多演算法,有很多資料結構,而且你會在白板上進行快速的思考,就像你在學校做的一樣。但這跟真實業界寫程式是完全相反的,因為有更多其他的事務會被捲進來,比如在我實際二十多年的工作職涯裡,我從來沒有用過白板,我就是直接在我的電腦上作業,但在面試中,卻得全部在白板上進行。」

他對這個過程表示擔心:「對演算法細節的測驗,不得不在白板上現場編寫紅黑樹, 這有利於剛從大學資訊科學相關科系畢業的學生。」

 

ADVERTISEMENT

許多人都對 Google 的面試過程充滿疑問

Hacker News 是專屬程式設計師討論感興趣新聞文章的網站,最近上面有一篇由 Pierre Gauthier 發表的,他擁有 37 年的程式撰寫經驗和 24 年的研發總監經歷。

TWD Industries(一間資安公司, 知名產品是 )的創始人兼 CEO 的 Gauthier 寫道,他從來沒有主動向Google 求職過,而是被邀去申請工程總監的職位,所以他同意接受了Google 面試官的電話面試。他在文章裡貼出了他在那場電話面試,對方的問題以及雙方的對談,還有他的內心話。

基本上,應試人員會被詢問一系列的技術問題,而每一題被認為只有唯一的「正確」答案,他說。根據網誌,他提到:「Google 的代表說,這個職位需要管理和最新的編碼技能(罕見的混合),但是很顯然縱使有超過 20 年管理經驗、近 40 年的程式語言經驗是遠遠不夠的:因為我沒有給出『正確答案』。」

大家可能很好奇究竟是怎樣的題目問答,可以「考倒」一名這麼多年經驗的資深工程師?筆者就翻譯其中的 3 題成中文給大家:

{

什麼是 Linux inode?

Gauthier:任何特定檔案系統上獨特的檔案識別符(file identifier)。

面試官:錯了,它是檔案的後設資料(metadata)。

Gauthier:inode 是在一個檔案系統上識別一個檔案的索引(index),您可以從這個索引查詢到大小、時間、所有者、權限等檔案屬性(attributes);您甚至可以在某些檔案系統上的 inode 添加自己的屬性。

面試官:錯了,不是「屬性」,它是「後設資料」。

Gauthier 的內心話:喔?「後設資料」比「檔案屬性」是更貼切的詞,真的嗎?(譯註:這個詞語的差別也跟不同時代大學教學用詞的差別相關,後設資料本來是圖書館用的詞,2000 年以後因為數位化潮流才進入電腦世界。)

}

 

{

為何快排(Quicksort)是最好的排序法?

Gauthier:這不是永遠成立的,也不會永遠合適的。

面試官:Quicksort 有 big-O 最佳的效能。

Gauthier:「big-O」忽略了資料儲存設備的延遲(latency)、拓樸、容量、可用記憶體甚至在特定運算設備上的實作中,涉及到每道 CPU 指令的計算成本,僅僅計算了演算法操作的數量! 沒錯,「big-O」可以是設計演算法時高價值的指示,但是最佳性能和擴展解決方案取決於具體問題和環境的特定規格。

面試官:你答錯了,快排項目你已經給我大大的零分。

Gauthier 的內心話:Google 營運所倚靠的 Linux 核心就選擇了堆積排序法(Heapsort)而不是快排,目的是為了低記憶體的使用量與更可預測的執行時間。(譯註:這內心話,筆者略譯了美國學術界的菸草醜聞比喻,因為華人圈無該背景知識,不好理解。)

}

 

{

有一個 16 位元、10,000 欄位的陣列,你要如何最有效率地計數這些位元(bits)?

Gauthier:你只要以 64 位元的 word 為單位來操作位元移位(shift bits),也就是 Kernighan 演算法。

面試官:錯!

Gauthier:還有更快的方法,是用 64 位元的 word 與位元遮罩(mask),但我沒有辦法透過電話解釋,我必須實際寫程式碼。

面試官:正確的答案是使用查詢表(loopup table,一般縮寫為 LUT),然後加總出結果。

Gauthier:是在哪種 CPU 上?何不在一個 benchmark 測試中比較我的程式碼和你的程式碼的效能?

面試官:這不是這個測試的重點。

Gauthier:所以這個測試的重點是什麼?

面試官:我必須檢查你知道正確的答案。

Gauthier 的內心話:這廢話還要繼續多久? 8 位元 LUT 只能依序處理一個 byte 接著一個 byte(一個 byte 就是 8 位元),而用 64 位元遮罩的方法,一次就可以處理好 8 個 bytes(現代的電腦主要是 64 位元電腦,一個運算周期,就可以算好 8 個,比起 8 個周期才計算完來得快)。除此之外,如果不考慮可移植性,現代 CPU 指令甚至允許你用 10 倍的速度去一次處理好 128 位元。由於今日的電腦還達不到 64 位元 LUT,哪一個才是更快的方法是毫無疑問的。

}

 

基本上,這段摘錄的問答,反映出現在 Google 的面試官在乎教科書上的單一標準答案,像 AI 談話機器人一樣,執著於特定的詞語(「講話」跟「說話」、「吃飯」與「進食」差在哪裡),而忽略詞語所代表的真實意義。更進一步 Gauthier 的技術解決方案更為務實、優秀,完全把 Google 面試官的「正確」答案碾成碎片,可是他在 10 題裡只有 4 題拿到分數,不及格,恐怕 Larry Page 來現在的 Google 應試,也會不及格吧?

此外還有一個有名的故事,是 2015 年 。 Howell 因創建名為 Homebrew 而聞名於世(設計給 Mac OSX 的軟體套件管理程式,用來簡化原來繁複的軟體安裝過程)。 Howell 曾在這則 twitter 上大吐苦水:「Google:我們的工程師中有九成的人使用你寫的軟體(Homebrew),但是你沒有辦法在白板上反轉二元樹,所以他媽的!」

他後來在該篇推文的回應中解釋說:「我今天早上被拒絕了,這就是我那時直率的反應。」而這則 twitter 像是病毒般地被廣為流傳,引發許多程式設計師的諸多有關白板理論派 vs. 實際寫程式 coding 派的討論。

Howell 告訴 Business Insider 的記者說:「對我來說,這個情況好比:Google 非常、非常需要一個水電工人來解決漏水的問題,所以我以自豪的 20 年經驗帶著所有對的工具(有些還自己開發的)前往;然而,他們卻要我在捲袖子開始施工以前,堅持我先坐下來考過流體力學才能進行。」

 

快樂的結局?

諷刺的是,Gauthier 在 Hacker News 上發表文章的前一周,製圖團隊的產品經理聯絡 Geary 確實想要聘請他,並試圖讓 Google 贊助這個職位,但被拒絕了(譯註:Google 不再外包這個工作)。雖然他現在依然不想要在 Google 工作,但是 Geary 回顧當時為何不向 Google 求職:「這可能是我自己的問題吧」,也就是說 Geary 離開 Google 了。

在此同時, Max Howell 投效了蘋果公司。 Gauthier 也更新了他的網誌文章,提到在這篇文章發表後,收到了大量的工作機會(他不需要,因為他是一間公司的 CEO),和收到許多履歷(想為他工作)。他認為自己公司的「後量子」(post-quantum)安全技術比今日的學術研究更加先進,「Google 卻這樣冷落我,我可沒有要找工作,我可是 18 年前就創立了 TWD 呢。」(譯註:跟 Google 同年創辦。)

當 Business Insider 的記者要求 Google 回應有關面試偏愛大學畢業生的批評,Google 的發言人回應:「從成千上萬的面試中,我們每年僱用了成千上萬的工程師,從大學剛畢業生到有幾十年經驗的人都有,這個過程是出名的嚴謹,但應試者回饋給我們一致的肯定。當然在許多面試裡,有一些應試者是很不高興的離開,我們希望聚集更多來自不同年齡、背景的優秀人才來本公司工作,所以非常感謝他們的回饋。」

 

ADVERTISEMENT