如何在技術(shù)面試中脫穎而出
在過去5年中,我面試了數(shù)百名IT工程師,我認(rèn)為很值得把我的面試IT工程師的經(jīng)驗(yàn)同大家分享。這能夠:
- 幫助人們?yōu)樗麄兊南乱粋€面試準(zhǔn)備
 - 幫助IT工程師找到合適的工作。
 - 幫助IT工程師創(chuàng)造更好的環(huán)境。
 
我們通過兩個方面面試IT工程師:
- 技術(shù)技能:包括理論和實(shí)踐技能以及經(jīng)驗(yàn)等。
 - 非技術(shù)技能:性格,溝通技巧,是否能夠融入我們的文化環(huán)境。
 
第1部分中,我將主要從技能部分講述。
1、一個IT工程師應(yīng)該具有的技能
我認(rèn)為實(shí)用技能包含3個方面,如圖1所示:
這些都是很重要的:
- 編碼:你必須能夠在限定時間內(nèi)編寫出高質(zhì)量的代碼。
 - 經(jīng)驗(yàn):具有相關(guān)經(jīng)驗(yàn)表明你對該行業(yè)的熱情,并能夠在一開始就進(jìn)入工作狀態(tài)。
 - 理論:理論知識是IT工程師的基礎(chǔ),好的理論知識能夠讓你快速解決新出現(xiàn)的問題。
 
而準(zhǔn)備工作面試的過程是一個提升自己各種能力的絕佳機(jī)會。
1、提高你的理論知識
(1)學(xué)習(xí)C語言
C語言是編程的基礎(chǔ)。因此,學(xué)習(xí)C語言能為我們了解高層概念打下堅實(shí)的基礎(chǔ)學(xué)習(xí)C語言的基礎(chǔ)知識并不會花太長時間,只需要幾個星期的時間一般就能夠掌握。 C沒有太多的抽象封裝,這就使得C語言相對簡單,和其他人一樣我學(xué)習(xí)C語言是看《C Programming Language》這本書(我們可以看譚浩強(qiáng)的書)。
一旦你能夠真正理解C語言中的指針和內(nèi)存管理,C就會變成一門有趣的語言,因?yàn)樗鼘椭覀儚奶幚砥鲗用妫ǖ讓佑布﹣砝斫庹Z言,而這正是其他大多數(shù)的高級語言所不具備的。同時了解這些概念,也將有助于你了解更高層次的語言工作。
(2)了解數(shù)據(jù)結(jié)構(gòu)和算法
雖然在網(wǎng)站/應(yīng)用程序開發(fā)中編寫復(fù)雜的算法和數(shù)據(jù)結(jié)構(gòu)比較少見,但是數(shù)據(jù)結(jié)構(gòu)和算法在我們編寫復(fù)雜系統(tǒng)的時候?qū)绊懳覀兊乃季S。即使你不需要編寫自己的數(shù)據(jù)結(jié)構(gòu),你也可能會在編程中使用到他,因此,了解基本的選擇是至關(guān)重要的。
我推薦這本書,《算法導(dǎo)論》。由于這本書是很長,如果你沒有時間把他讀完,那也要學(xué)習(xí)其中的排序,哈希表,二叉樹,字符串匹配部分。
一旦你很好的掌握了數(shù)據(jù)結(jié)構(gòu)和算法,你會發(fā)現(xiàn)這些概念將只是將你做的每件事都總結(jié)成問題而已。
2、比較編程語言
一開始,你會經(jīng)常接觸多中編程語言。你可能還需要快速學(xué)習(xí)新的語言和概念。
為了加快學(xué)習(xí),學(xué)習(xí)不同語言有助于我們了解他們的概念以及他們的相似及不同之處。
最好的辦法是在下面每種風(fēng)格的語言中學(xué)一門語言:
- 底層:C語言。
 - 面向?qū)ο螅篔AVA,C++等。
 - 動態(tài)語言,高層次的語言:python, ruby 等
 - 函數(shù)式語言: Lisp, Erlang, Haskell等(之前將其翻譯為功能性語言,感謝zzljlu的糾正)
 
3、至少精通某一種語言和一種框架
這能夠說明:
- 你既然能在一個領(lǐng)域成為專家,就表明你同樣能在其他領(lǐng)域做得一樣好。
 - 你理解這些語言/框架的細(xì)節(jié)可以讓你根據(jù)不同技術(shù)的優(yōu)缺點(diǎn)來做出決定。
 - 你有激情去深究一個項(xiàng)目并且深入語言的最底層。
 
想要成為專家需要花一定的時間和經(jīng)歷。這里有一些建議:
- 嘗試做不同的項(xiàng)目,這樣能夠幫助你理解編程語言。
 - 閱讀其他人的技術(shù)博客。 Hacker News是一個很好的技術(shù)博客。
 - 為開源社區(qū)做出自己的貢獻(xiàn),例如在GitHub上能夠查到你的代碼。
 
4、提高實(shí)際編碼能力
在這里我們在面試時主要通過3中方法來測試工程師的編碼能力:
- 你貢獻(xiàn)到開源社區(qū)的代碼(例如,在GitHub上)
 - 現(xiàn)場編寫一段代碼
 - 連續(xù)2小時編寫代碼的挑戰(zhàn)
 
一個工程師的編碼能力的質(zhì)量和速度是重要的,而這只能來自于實(shí)踐經(jīng)驗(yàn)。
另外,使用合適的語言和框架對于一個項(xiàng)目也是很有幫助的。例如用Python和Ruby等腳本語言可以比使用像Java、C++這類靜態(tài)語言的許多情況下更快。因?yàn)槲覀冎酪粋€求職者可能在動態(tài)腳本語言方面沒有太多經(jīng)驗(yàn),所以我們面試的時候并沒有將其作為重點(diǎn)。
做一些有挑戰(zhàn)的編程測試可以磨練你的技能。網(wǎng)上可以找到了大量的資源,這也可以測試你的編程速度,從而讓你可以進(jìn)一步提升你編寫代碼的速度。Google Code Jam上面有一些不錯的題目。
5、提高您的相關(guān)技術(shù)經(jīng)驗(yàn)
有一些相關(guān)工作經(jīng)驗(yàn)是很重要的:
- 這表明你對編程有一定的激情
 - 你的開發(fā)經(jīng)驗(yàn)可以引導(dǎo)公司里的其他人
 - 你將會在工作中一鳴驚人。
 
你有能力可以探究更多的現(xiàn)代技術(shù),并有一個更加全面的視角
你可以從你以前的公司里或者其他項(xiàng)目中學(xué)到這些經(jīng)驗(yàn)。
6、結(jié)論
當(dāng)然,在技術(shù)方面僅僅是一個硬幣的一面。第2部分中,我將探討非技術(shù)方面。
原文鏈接:http://blog.csdn.net/qingtingchen1987/article/details/7796643
 
















 
 
 




 
 
 
 