技術職位面試官心得

先說重點:我覺得面試的題目要準備夠充分,而且要從簡單到困難,循序漸進,直到求職者答不出來為止。這樣可以了解求職者的能力範圍。有好的能力,給的薪水也會比較高,作的事情也會比較難。但我問完之後,會跟他說明答不出來不代表不會錄取,只會作參考。

我會先把求職者分成兩個類型:新鮮人(完全沒有工作經驗)與轉職者。

對於新鮮人,如果是相關科系出身,我會比較期待他還記得比較多理論的東西,所以我會看他的成績單,修過什麼課程,然後拿該課程的內容來問。舉例來說,一般的資工系都有修過資料結構與演算法,我會問他 Stack, Queue, Hash 的用法,或是 Quick Sort, Bubble Sort,然後請他說明這些課程中,他印象最深刻的內容,再根據他的內容來繼續問下去。

通常後來被我刷掉的人,有很多是上課渾渾噩噩,所以根本就不知道上課內容是啥的。之前遇過一個求職者,問他對哪個課程最有印象,他的回答是都沒有印象 ~_~

如果他有作品(或專題),或是在外面有打工,就會問實作的東西,例如問作品的哪個部分是他做的,與其他人如何合作,還有對於作品的哪個部分印象最深刻,覺得哪裡最難,後來怎麼解決(解決未知問題的能力)。通常實作強的人,對於這個問題都能很快回答出來。如果作品他做的部分很少,就很容易支支吾吾。

接下來,會給一個實際的問題,請求職者用他最熟悉的程式語言現場說明解決方法,主要觀察的地方是解決問題的過程。之前有問過用 C 寫 string replace 的題目,基本上這個有寫過程式應該都回答的出來。

接著會給一篇英文技術文章,或是給一個技術文件,請求職者閱讀後,大致說明內容,並且講一下可以怎麼應用。通常前面沒問題,後面會死一堆新鮮人。

再來,會問求職者是否有用過常用的工具(版本控制、MVC、Framework),GitHub,以及有沒有參加 Open Source Conference 的經驗等等。這個部分主要是想了解他對 Open Source 的熟悉度,對於未來工作尋找資源上會有幫助。

最後,會問為什麼會來應徵這份工作,對於公司了解多少,有沒有用過公司的產品,舉出公司產品的優缺點。從這個問題可以了解這個人是不是有自己的想法,還是老闆說了就照做的人。

新鮮人的人格特質,只要是誠實、對自己負責的人,基本上就很 OK 了。公司裡面需要有想法的人,也需要老闆說了就照做的人,並不會因為沒有想法就被刷掉,除非是渾渾噩噩不思進取的特質。

轉職者的部份下次(會有嗎?)再來談吧。

避免 PHP Imagick 把記憶體吃完…

PHP 的 Imagick 有 memory leak 的情形,當用 PHP-CGI 跑動態縮圖服務的時候,這個問題更加的嚴重。查了一下資料,可以設定參數限制使用的記憶體大小:


// set pixel cache max size to 256MB
IMagick::setResourceLimit(imagick::RESOURCETYPE_MEMORY, 256 * 1024 * 1024);
// maximum amount of memory map to allocate for the pixel cache
IMagick::setResourceLimit(imagick::RESOURCETYPE_MAP, 256 * 1024 * 1024);

單位是 Bytes。如果進行圖片處理時,所需的記憶體超過指定值時,會在 /tmp 寫入暫存檔案。可以使用 MAGICK_TMPDIR 這個環境變數來指定暫存目錄:


putenv('MAGICK_TMPDIR=/tmp/imagick');