程序員的面試技巧

不久前我在一個問答網站上讀到一個帖子,帖子上說,一家公司的創辦人聲稱,比起有計算機學位的軟件工程師,他更傾向於那些沒有學位的,因爲沒有學位的軟件工程師比起那些所謂CS畢業生通過面試的概率更大。這對很多人而言可能都不亞於是一場顛覆性的地震,因爲我們想當然地會認爲,在大學裏讀CS專業肯定應該學到的更多更全面,包括如何在面試中脫穎而出,贏得面試官青睞。

即使有人會說他在讀大學的時候經常翹課,有的甚至一學期都羞於與CS課程見面,我也敢保證,讀大學的的確確是能學到很多、很多,但是有時候一個正規的教育文憑是遠遠不夠的。我說這句話的意思,如果你能回過頭去看看現在的高中生就很好理解了。他們如果想在SAT考試中取得好成績的話,往往會去報個培訓班什麼的,而這已經成爲了一種常態、一種趨勢。我認爲我們都應該學習高中這種教育經驗,培養自己的推理和閱讀理解能力,這也是大學錄取考試,例如SAT和ACT所要求的的內容。現在有越來越多的高中生在上這種培訓班以彌補他們在技能中的缺陷,這反應了正規教育的不足。而這種模式其實也適用於大學中設置的計算機科學教育課程。計算機科學課,從我的經驗上來說,至少忽略了教授如何在面試中出奇制勝的實際技能。因此,如果程序員想在面試中拔得頭籌的話當務之急就是要學習和培養特定的技巧和習慣。下面我介紹了5種可以提高我們面試成功率的方法,願人人都能進入自己夢想和喜歡的企業。相信自己,你也可以。

1.練習寫代碼

話說這一點是重中之重,再怎麼強調也不爲過。無論你是否擁有豐富的編程經驗,在面試中非常有必要將面試官提出的問題放到電腦或者白板上去解決,而不是在自己的頭腦中找辦法。主要原因是在頭腦中想出的解決方案從一個高層次角度看可能是正確的,但是實際寫成代碼的時候往往會面臨各種缺陷和障礙。我非常慚愧,因爲懶惰這個討厭鬼的附身,練習寫代碼這一點我常常三天打魚兩天曬網。我是壞榜樣,大家可別學我,常寫寫代碼不但有助於你成爲一個更優秀的程序員,還能讓你在壓力下表現得更棒。

2.對數據結構瞭如指掌

這也是衆所周知的,不過在此我再提一次是因爲它非常重要。絕大多數的數據結構你都應該做到心中有數,例如二叉樹、鏈表、HashMap等等,並且私下先自己“搗鼓”一番,徹底瞭解每個數據結構的優點和缺點。例如,你知道數組與單鏈表的區別不?一旦我們能對這些數據結構瞭如指掌,那麼凡是涉及到數據結構的任何問題,對你而言,將統統不在話下。

3.知道最根本的原理

你或許會納悶,我所說的“最根本的原理”究竟是什麼。我的意思就是,我們需要知道所有的知名算法的來龍去脈,特別是它們的時間和空間的複雜度,例如二分搜索、排序算法、以及程序語言的特殊細節(如字符串是不可變的,在Java中目標是通過值傳遞的)。話說已經有無數次,有面試官問我關於時間複雜度的解決方案。而顯而易見的,如果我們一直有在研究這方面的問題,那麼我們肯定能輕鬆回答面試官,刷新他們的好感度。不過,最理想的情形是,在面試官問這個問題之前,我們自己先就此類問題的複雜性侃侃而談。

4.懂得推銷自己

我們首先需要向面試官簡單地推銷一下自己。有些童鞋往往不知道該說什麼,那麼不妨談談過去的專業經驗,手頭的項目吧。不要畏懼,把它當做一個機會,一個向面試官展示你的技術能力、吸引住他們的機會。

5.關於向面試官的提問

很多時候,我們會把幾乎所有的精力都用來展示我們的技術能力,而忽略了其他。這是錯誤的。要謹記,面試不光是公司面試你,你也要面試公司。也就是說,在面試的時候,我們也應該詢問面試官關於該公司的具體情況,搞清楚這個公司是否適合我們,是否符合我們的預期。而且這也是一個絕佳的機會,一個能讓我們瞭解有關這個公司一些基本情形的機會,而這些找外人是打聽不出來的。在後續的帖子中,我會將我接觸到的不同類型的問題羅列一番,以便於大家到時候在面試中提問,敬請期待哦。不過,記住向面試官提問的中心目的是爲了發現更多有關該公司的軟件工程就業前景,以及它的文化。

如果你照着上述5條去做,但是面試結果還是失敗的話,也不必擔心和焦慮。請務必相信自己,並且堅持下去。我知道這聽上去俗套得好像是假的一樣,但是,在我身上,這確確實實奏效了。如果要用一個詞來歸納全文,除了“堅忍不拔”,別無他選。所以,請記住,相信自己,永不放棄!種瓜得瓜種豆得豆,我們的辛勤努力總歸會有回報。

譯文鏈接:http://news.html5tricks.com/programmer-best-interview.html
英文原文:How to ace your software engineering interviews             
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章