CS求職經驗分享-2 - 面試
By Blanche
at 2008-12-02T23:44
at 2008-12-02T23:44
Table of Contents
※ 引述《Lenora (:))》之銘言:
: - 寫完code一定要先test
: 在白板上或紙上coding完
: 馬上代值或是最基本的base case進去檢查
: 好幾次我都這樣馬上補行error handling的code
: 在interviewer指出來之前 讓他們看到你自己先檢查並找到問題
: 其實有時候有加分的作用
: (不過當然一開始就寫得很縝密是更強的啦)
Programming Interview Exposed 裡面提到的流程真的蠻有用的。
我覺得不僅是面試,平常的 coding 其實也用得到。簡單把書上的
流程寫一下,希望對後來的人有幫助:
簡單來說看到題目的第一步是找簡單的例子,然後從簡單的例子推
出演算法。
我通常會邊在白板上寫出我想得到的簡單例子,然後邊解釋每個例
子有什麼不同點。最後畫一個流程圖或者口頭解釋需要幾個 for-loop
(或 recursion) 去完成這個問題。
找簡單例子是最重要的步驟,通常找得到一般的例子跟特例,問題
就算解出來了。所以真的不要遇到題目 (就算以前遇過一樣或類似的題
目) 就想埋頭幹下去... 先想一下比較安全...
通常來講,如果你自己都覺得想到的演算法效率很差(通常是n^2)
表示出問題了,不過沒什麼好怕的,因為他們預期你第一個想到的是不
好的方法,所以就算沒有第一步就想到最好的方法也不算失格 :)
接著就是 implement 了。Lenora 前一篇已經有講過一些就不再贅
述。記得 implement 之前先問一下 interviewer 你的想法是不是對的
或者說你覺得這不是最好的方法不過你第一個想到這個方法。通常他們
會很樂意跟你說他們的想法。建議:他們通常是對的。
會建議就算你覺得有更好的方法,還是先聽他們的話,是因為我覺
得他們有時候就是想要看你 implement現有的方法。除非你很快的想到
而且確定更好的方法,不然跟他們爭辯是很危險的事。 (我也聽過那種
直到最後都不確定 interviewer到底是不是對的的例子... 不過那算是
特例...)
implement 完之後就是最上面 Lenora 寫的檢查。檢查完之後就可
以跟 interviewer說你已經完成了,他會跟你說你已經完成了,或者也
有可能問你是不是可以更快 (即使已經不可能更快... 就,跟他解釋為
何不可能更快就好),或者你的方法不是最佳解,他們會在這個時候給
點提示。
補充一個我覺得要注意的地方,就是有些語言的語法真的要清楚。
比方說讀字串進來要怎麼放 delimiter,stringstream很好用可是有時
候為了效率會直接要求你對字串做處理... etc 簡單就是該語言的熟悉
度要夠好。
還有平常如果很少用一些資料結構,記得面試前一定要再翻一下,
像是 hashtable要怎麼宣告怎麼使用之類的...
大概就是這樣囉。希望所有CS的人找工作都能順利。 :)
(也祝非CS的人找工作順利 ^^")
--
: - 寫完code一定要先test
: 在白板上或紙上coding完
: 馬上代值或是最基本的base case進去檢查
: 好幾次我都這樣馬上補行error handling的code
: 在interviewer指出來之前 讓他們看到你自己先檢查並找到問題
: 其實有時候有加分的作用
: (不過當然一開始就寫得很縝密是更強的啦)
Programming Interview Exposed 裡面提到的流程真的蠻有用的。
我覺得不僅是面試,平常的 coding 其實也用得到。簡單把書上的
流程寫一下,希望對後來的人有幫助:
簡單來說看到題目的第一步是找簡單的例子,然後從簡單的例子推
出演算法。
我通常會邊在白板上寫出我想得到的簡單例子,然後邊解釋每個例
子有什麼不同點。最後畫一個流程圖或者口頭解釋需要幾個 for-loop
(或 recursion) 去完成這個問題。
找簡單例子是最重要的步驟,通常找得到一般的例子跟特例,問題
就算解出來了。所以真的不要遇到題目 (就算以前遇過一樣或類似的題
目) 就想埋頭幹下去... 先想一下比較安全...
通常來講,如果你自己都覺得想到的演算法效率很差(通常是n^2)
表示出問題了,不過沒什麼好怕的,因為他們預期你第一個想到的是不
好的方法,所以就算沒有第一步就想到最好的方法也不算失格 :)
接著就是 implement 了。Lenora 前一篇已經有講過一些就不再贅
述。記得 implement 之前先問一下 interviewer 你的想法是不是對的
或者說你覺得這不是最好的方法不過你第一個想到這個方法。通常他們
會很樂意跟你說他們的想法。建議:他們通常是對的。
會建議就算你覺得有更好的方法,還是先聽他們的話,是因為我覺
得他們有時候就是想要看你 implement現有的方法。除非你很快的想到
而且確定更好的方法,不然跟他們爭辯是很危險的事。 (我也聽過那種
直到最後都不確定 interviewer到底是不是對的的例子... 不過那算是
特例...)
implement 完之後就是最上面 Lenora 寫的檢查。檢查完之後就可
以跟 interviewer說你已經完成了,他會跟你說你已經完成了,或者也
有可能問你是不是可以更快 (即使已經不可能更快... 就,跟他解釋為
何不可能更快就好),或者你的方法不是最佳解,他們會在這個時候給
點提示。
補充一個我覺得要注意的地方,就是有些語言的語法真的要清楚。
比方說讀字串進來要怎麼放 delimiter,stringstream很好用可是有時
候為了效率會直接要求你對字串做處理... etc 簡單就是該語言的熟悉
度要夠好。
還有平常如果很少用一些資料結構,記得面試前一定要再翻一下,
像是 hashtable要怎麼宣告怎麼使用之類的...
大概就是這樣囉。希望所有CS的人找工作都能順利。 :)
(也祝非CS的人找工作順利 ^^")
--
All Comments
By Michael
at 2008-12-05T05:25
at 2008-12-05T05:25
By Ida
at 2008-12-09T11:45
at 2008-12-09T11:45
By Dorothy
at 2008-12-13T11:57
at 2008-12-13T11:57
By Ethan
at 2008-12-15T02:34
at 2008-12-15T02:34
Related Posts
CS求職經驗分享
By Agnes
at 2008-12-02T14:42
at 2008-12-02T14:42
請教一間在菲律賓公司
By Dorothy
at 2008-12-01T22:37
at 2008-12-01T22:37
Re: 台灣化工所學生尋求國外暑期實習的可能性??
By Hardy
at 2008-11-28T11:50
at 2008-11-28T11:50
請問VE Media這家公司
By Belly
at 2008-11-22T21:26
at 2008-11-22T21:26
請問VE Media這家公司
By Sierra Rose
at 2008-11-22T14:39
at 2008-11-22T14:39