面試技巧

Felix Chern
4 min readFeb 13, 2017

--

嚴格來說我的面試經驗應該不算豐富。在美國四年前後任職了小公司、中型公司、與大公司(google),每次轉換工作時我都只有投少數幾家,不及那些對各家公司做足功課的強者。雖然沒有海量的面試經驗及準備,但對於小公司、中型公司、及大公司面試時的要求,還是懂一些的。以下是我這幾年經驗的小小彙整。

大部分人比較感興趣的,應該還是如何進大公司吧?大公司內部多半有自己的開發平台,只有少部分會用外部的開放原始碼工具拼湊出自己的系統。無論新人對自己原本擅長的開發工具有多熟悉,一切也都是砍掉重練從頭來過。基於這樣的特性,大公司的面試比起考驗新人對工具的熟悉程度(例如如何快速用php架一個站),更重視新人基本的電腦科學學得紮不紮實,以此來區別不同新人候補的聰明程度。

為了應付大公司這種面試題型,坊間也就出版了一系列白板面試題庫,還有線上練習的網站。我自己有買的是 Cracking the coding interview 以及 Elements of programming interviews。我買的時候還是初版,沒想到才隔一陣子就再版好幾次了,十分嚇人。其中 Cracking the coding interview比較簡單,但答案沒有那麼出色。Elements of programming interview難上不少,但我覺得如果目標是google之類的公司的話,熟練這種較難的題型與解答是必要的。

如果稍微有一些些開發經驗的人,碰到這些題庫可能會很疑惑:明明開發的時候都不會用到這些東西,為什麼面試時要這麼刁難?我想除了前面說大公司內部都有自己的開發流程的原因之外,這是唯一可以套用同樣標準面試成千上萬候補的方法吧?沒辦法,兵來將擋水來土掩,重點在於要如何在面試官面試的數百候補中脫穎而出。

雖然面試官會好心的說這些面試題只是用來觀察新人思考的方式,但實際上如果沒有想出面試官心中的標準解答,是很難被錄取的。試想,如果只是證明你有能力寫出程式,那你和其他上百位候補有什麼區別?能想出面試官心中的精巧解答,才有機會將評語從普通變成「佳」。面試人其實是一個很無聊的工作,而且人資安排的時間常常會打斷面試官的日常流程。如何在日復一日無聊的面試流程中讓面試官留下深刻的印象,是面試最重要的訣竅。

我自己的履歷由於沒有美國名校的加持(最高學歷台大機械學士),所以在想出「標準解答」之餘,更需要別出心裁找出面試官沒有想過的優秀答案。這個時候就要感謝各種優秀的線上課程,讓門外漢也能一窺電腦科學殿堂的奧妙。我上的課有Mining of Massive DatasetsAdvanced Data Structures。課程中有許多非傳統的演算法及問題,相對艱澀,而且一開始很難直接應用上面試題庫。不過真的熟悉這些算法後,就能在面試官問完追加問題進入自由問答的情況下,在原題加入新的限制使之轉化成進階的演算法問題,並用進階的方法解決之。不過要能應用上這些方法,當然1. 標準解答要能快速答出, 2. 進階演算法要學得通透, 3. 要有足夠的聯想力才能轉換問題。聽起來似乎很困難?倘若沒有此等的困難,又怎麼能顯示你比其他候補更特別,使得這位子非你莫屬?

以上就是我應付大公司的面試技巧。相較起大公司,中小型公司的準備方式倒是截然不同。中小型公司比較重視個人的「即戰力」,所以如果已經有一些實戰開發經驗的人會較為吃香。由於中小型公司多半無力建立起自己全套的開發平台,所以多半是拿開放原始碼的東西拼裝,或是有企業支援的解決方案。如果自己練的技術跟公司媒合的不錯,就有很高的機會錄取。有自己的完整作品(要比學校專案的完成度高)的人、有經營自己的開放原始碼專案、或是有自己的專業技術部落格者,都是熱門候補人選。我的第一份工作就是仰賴我之前的開放原始碼專案來證明自己開發能力而得到的。

其實比起被面試的經驗,我面試人的經驗遠遠多上很多。這些面試的甘苦談就留待以後再說吧!

--

--