一次誠實的面試
我應徵一間 PHP 開發。這次大概會失敗,但我很欣賞這間公司。因為這位人資頗為直接地說出問題。
技術問題
首先是很簡單的幾個問題:
- PHP 哪個函式處理日期?
- PHP 哪個函式處理字串?
- PHP 迴圈怎麼用?
- PHP 三元運算子怎麼用?
- 有兩個資料表:
actors_1st
,actors_2nd
。兩者有共同值aim
,請用 SQL 把兩個連起來。 - 有個資料表名為
members
:
name | subunit
--------------------
中須かすみ | QU4RTZ
桜坂しずく | A·ZU·NA
鐘嵐珠 | R3BIRTH
上原歩夢 | A·ZU·NA
優木せつ菜 | A·ZU·NA
請用 SQL 把所有 subunit
不重複地列出來,而且不用 GROUP
-- 也就是這樣:
QU4RTZ A·ZU·NA R3BIRTH
另外試題還考幾個 DNS 的用法……不過詳細文字我忘了。所以我試題也做過修改。
技術答案
這裡就直接寫答案吧。
date
substr
for ($a = 1; $a <= 10; $a++) {}
$foo ? $bar : $baz
SELECT * FROM actors_1st JOIN actors_2nd ON actors_1st.aim = actors_2nd.aim
SELECT DISTINCT subunit FROM members
DNS 的用法中,我印象最深的大概是考 Email 信箱與其他 DNS 伺服器用法。前者為 MX, 後者為 NS。
等等,是 NS 不是 CNAME 嗎?
不一樣。
因為 CNAME 是用來紀錄 DNS 的別名或指向、而 NS 是用來紀錄 DNS 的名稱。
比結果更重要的事情
但其實我最有收穫的是面試官評論:他聽完我的面試後,說他相信我的技術夠紮實──雖然我覺得在 PHP 不過是 Jounior 左右──但在面談方面,提出說自己頗擔憂我的溝通能力。因為他比較期待的 PHP 開發是聽完就能很有默契地,回答他想知道的答案。而不是問了面試者一個問題,還要回答後者提出的兩三個新問題。
我難得見到有面試官對我的評價如此誠實、讓我對自己的技術和面試問題心裡有底、並放下不切實際的期望。現在想想,大概沒有幾位面試官有這麼誠實的評價吧──如果大家都直接對不想錄取的人發通知書、或是直接點出問題的話,我想事情會變簡單多了吧。
但誰在乎魯蛇怎麼想?
人生失敗者恕不另行通知。
雜談抱怨
必須說我很難接受「聽完問題就很有默契地回答正確答案」這種溝通方式:因為過去的經驗,通常是很有默契地作工,結果做出來的東西,並不是溝通者想要的;再加上程式開發這行的容錯率極低──意思是,幾乎不容許任何一點差錯──最後我發現自己變成了典型的……工程師腦袋?所以後來就養成不斷詢問的習慣、不完全明白前做了會懷疑、以及只接受某個答案這樣。
也許信心薄弱也是這方面的原因吧?
如果說不斷訊問溝通方式,成本巨大需要改進,那我就覺得……這勇氣是梁靜茹給的吧?你怎麼能對某個不明白的問題,給出幾乎百分百肯定的假設?化學提煉都不可能百分百了。
如果出現一趴的黑天鵝,誰負責?想也知道是做的人。
程式只有對與錯;程式錯了,錯的永遠是寫程式的人──這大概是我寫程式幾年的感想。