打工仔每一次轉工都要接受interview嘅考驗,而IT界嘅interview更加係千奇百趣,其中最重要嘅一環就係technical
test。
口頭問答
IT人見工,好多時都會問technical問題。用口問其實已經係最普通嘅一種,基本上每一次interview都必然會出現口頭technical
test。
呢類問題係最易答,因為好多時interviewer用口問嘅問題係即時諗出黎,即時諗嘅嘢,可以有幾深呢?就算唔係即時諗,但只用口,唔用圖表或圖形去表達,難極都有個譜,所以一般嚟講都係比較容易。
舉個例子,佢可能問:「Java入面,邊個package唔需要import呢?」呢種問題,寫開Java嘅應該順口就答到,但如果你寫開C++,就未必會識答。又或者問:「一般情況下,SSH係用邊個port呢?」呢類問題簡單得嚟又可以有效地測試candidate係咪真係有特定範圍嘅知識,對interviewer而言係幾方便嘅。
筆試
如果係應徵Developer或Programmer呢類entry level嘅職位,我諗以上嘅問題已經足夠去睇個candidate係咪有相關知識。但如果講緊System
Analyst呢啲比較資深少少嘅職位,口頭問答未必分到邊個高、邊個低,咁就需要一個詳細少少嘅technical
test。
所以,好多公司都會準備一份paper畀你做。你必須用筆去做晒成份卷,記住係筆,唔係電腦,就算份卷有啲問題係要你寫code,你都要用筆寫。呢類technical
test大部份都只係MC,只有大概20-30%係要寫code,就算要寫code,好多時都只係兩、三行填充,而唔係由零開始寫。
不過,其實MC題目都可以好長,可能係用一、兩頁A4紙印咗一大堆code出黎,然後一次過問幾題MC。最典型嘅問題係問你成段code能唔能夠compile,又或者問你行完個program之後會見到啲咩。
呢類型technical test可以考驗candidate點樣即時運用觀察力去睇條問題,有冇足夠智力同知識去解答,同埋喺壓力之下會唔會緊張到諗唔到嘢。不過,間間公司出嘅題目都唔同,有啲technical
test會問你Java API嘅細節,而唔係個concept或algorithm,咁呢啲就真係變咗質,因為咁樣同叫你背code冇乜分別。
Online Technical Test
所以我其實主張考得technical
test嘅話,不如搵部上到網嘅電腦,畀candidate直接寫code。其實有啲公司已經係咁做,甚至係叫你嚟interview之前,先喺屋企做左online technical
test先。而我相信呢種模式都會係將來technical test嘅大方向。
Online technical test通常只有一至兩題,全部係寫code問題。俾得你上網,題目當然唔會容易做。呢類technical
test嘅目的係要考驗candidate嘅解難能力,通常題目都會同sorting、searching呢類algorithm有關,又或者會考你識唔識好好利用唔同類型嘅data
structure。
以下呢題係我自己親身見過嘅一題online
technical test,我覺得可以用嚟當作練習題,所以同大家分享:
1. 已有一個array int A[N] 入面係integer, 可正可負
2. 假設 0 <= P <= Q < N
3. X =A[P]
+ A[Q] + (Q-P)
寫一個program,搵出最大的X值;而space complexity必須係O(1),time complexity必須係O(N)。