這篇要講的不是面試者,是以面試官的立場寫下一些心得。
7/28~7/30 到南部去面試,排了 21 個人,有 4 個放鳥所以只面試到 17 個
人,大多都是網站後端相關的職缺,也有一些 API Engineer 與資訊系統的職
缺。
這次面試都是從 104 上找,以大學或碩班新鮮人為主。只要符合這些條件我都
請我們家 HR 聯絡來談:(是 OR 不是 AND)
1. 有 Programming 工作經驗。
1. 剛畢業/退伍,資工/資科/資管畢業。
2. 剛畢業/退伍,有任何資訊相關的作品。
3. 剛畢業/退伍,自傳寫得還可以的。
挑履歷的標準應該是不算高...
我 interview 的習慣是一律從面試開始,先說明投的這個職缺要做什麼事情,
然後跟面試者先確認這是不是他要投的職缺。
(因為偶爾會遇到投錯職缺的,確認後可以省下大家時間...)
接下來就是問一些工作上會用到的技術相關的問題。以網站後端、API
Engineer 以及資訊系統來說,因為主要都是跟資料庫有關,所以大多都是先從
資料庫起頭開始問:
* 請列出 RDBMS 裡的 JOIN 有哪些。
答案可以參考 https://en.wikipedia.org/wiki/Join_(SQL) 這邊。
大概有一半的人一個都答不出來,可以講出的人我會要他說明他列出的 JOIN
在這種圖的表示法:
https://i.imgur.com/7BIsxZn.png
各種千奇百怪的答案都會出現 XD
* 請說明資料庫裡 Transaction 是做什麼的。
答案可以參考 https://en.wikipedia.org/wiki/Database_transaction 這
邊。
大概也是有一半的人會回答「不知道」,有蠻多人以為 transaction 就只是
Atomic 的特性。
如果大概還講的出東西來的我會再問 ACID 的四個特性。
關於 ACID,可以參考 https://en.wikipedia.org/wiki/ACID 這邊,不過只
有兩個人有被問到 ACID,其中一個只答得出 AC,另外一個對 CID 都用掰的。
* Primary Key、Unique Key、Index Key 的差異
已經是比較偏實務上會碰到的議題了,不過超過一半不知道差異。甚至會說
他之前的工作用不到 Index Key... XD
可以參考 https://en.wikipedia.org/wiki/Database_index 這邊,不過維
基百科這邊的資料比較偏學術上的說明。
* 資料庫的「正規化」做了什麼事情?解決了什麼問題?
也大約是一半的人答不出來。答得出來的我會問 1NF 做什麼,然後所有人都
在這題掛掉...
參考 https://en.wikipedia.org/wiki/Database_normalization 與
https://en.wikipedia.org/wiki/First_normal_form 這邊。
這些資料庫理論是工作上比較會碰到的東西。我不太喜歡問 SQL 語法怎麼下,
主要是因為這些語法各家都不太一樣,真的用到時查一查就好了。而觀念的東
西才是難教的,interview 的時候問這些鑑別度還算高...
接下來我會問一下資料結構與演算法的東西:
* Stack 與 Queue 的差異?
熱身用的題目,大多數人都答的出來。不過還是有唸了四年資工的人說不出
來,讓我囧在那邊...
* Priority Queue (Heap) 是什麼?
有些人是「聽過,但忘記了」,有些人是完全沒聽過,基本上就是都不知道...
* Tree、Binary Tree、Binary Search Tree、Balanaced B.S.T. 的差異?
意外的是大約一半的人不知道 Tree 與 Binary Tree 的差異,就更不用說後
面這幾個的差異了...
可以把四個資料結構的差異都講出來的有兩位,我就問了 AVL tree 與 RB
tree 的差異,然後就掛掉...
* QuickSort 與 MergeSort 的差異?
這兩個都是經典的演算法,不論是學校還是職場上都會花很多時間教或是用
到的經典演算法。
兩者的差異隨便列出來應該就一堆,不過情況比想像中的有趣...
像是 O(logN) 的 QuickSort 與 O(N) 的 MergeSort。或是把 BubbleSort
當作 MergeSort 在講...
如果面試者不知道要從哪裡開始的話,我都會提示「時間複雜度」會是一個
方向。不過都答不太出來...
有好幾個面試者都有提到 Divide-and-Conquer,然後被我反問哪一個是
Divide-and-Conquer 哪一個不是?
然後我有時會要求用手寫一些程式 (不限程式語言,也不需要 include 之類的
步驟,重點有表達出來就好):
* 九九乘法表。
請不要小看這個題目.................................................
* isPrime(n)。
* GCD(n, m) 與 LCM(n, m) (最大公因數、最小公倍數)。
死亡率還是很高的題目。
講一下心得好了。
我 interview 的習慣是問到答不出來為止,這樣我才會知道會多少東西。通常
都是從基礎的東西開始問,而蠻意外的是,大多數人都會死在起跑點...
本來 Programming 的東西還打算考 Eight Queen 之類的問題,不過後來還是
下修再下修...
另外一個我還蠻喜歡問資工畢業生的問題是,「你都唸了四 (六) 年的資工,
知道資訊領域最高獎項是什麼嗎?」
還蠻意外的是大多數人都不知道 :p
https://en.wikipedia.org/wiki/Turing_Award
最後問一下,有人要投履歷嗎?