2009早已過(guò)去,但那清晰可見(jiàn)的足印,在背后的彎曲小路仿如昨天才走過(guò)。技術(shù)人員的找工之路并不平坦,看過(guò)各樣的風(fēng)景,受過(guò)各種打擊,也收到過(guò)意外的驚喜。找工之路,我肯定不是成功的那個(gè),但我應(yīng)該是經(jīng)歷非常豐富的那個(gè)。筆試,面試這些不在話下,霸筆,霸面也是經(jīng)常的事情。“贏在中國(guó)”里有一條衷告:“要想進(jìn)步,就只有吸取教訓(xùn),成功的經(jīng)驗(yàn)都是歪曲的,成功了,想怎么說(shuō)都可以,失敗者沒(méi)有發(fā)言權(quán),可是,你可以通過(guò)他的事例反思,總結(jié)。教訓(xùn),不僅要從自己身上吸取,還要從別人身上吸取。”在2010的開(kāi)始,我也希望留下一點(diǎn)點(diǎn)東西,或許對(duì)于有志于從事軟件研發(fā)的你會(huì)有幫助。
一、技術(shù)人員的定位
對(duì)于這個(gè)方面,我并沒(méi)有多少發(fā)言權(quán)。因?yàn)樽约旱呐d趣,從找實(shí)習(xí)開(kāi)始就不曾想過(guò)要走非技術(shù)之路。不過(guò)從周圍的同學(xué)身上卻發(fā)現(xiàn)這個(gè)其實(shí)是找工的起點(diǎn),定位對(duì)于自己做準(zhǔn)備很重要。其實(shí)定位一般來(lái)說(shuō)也就是技術(shù)方向(研發(fā),測(cè)試,技術(shù)支持等)和非技術(shù)方向(產(chǎn)品,銷售等)。對(duì)于非技術(shù)方向我就不發(fā)表意見(jiàn)了。下面說(shuō)下各個(gè)技術(shù)方向。
研發(fā):這是最多技術(shù)人員想要去從事的方向。技術(shù)含量稍微高點(diǎn),做的事情比較有意思是大家的共同意見(jiàn)。不過(guò)這也給研發(fā)樹(shù)了一個(gè)牌子“非技術(shù)牛人勿近”,換句話說(shuō)就是這個(gè)方向是競(jìng)爭(zhēng)比較激烈的。
測(cè)試:想必大家都對(duì)這個(gè)方向多少有點(diǎn)聽(tīng)說(shuō)了。技術(shù)含量低,做事是機(jī)械勞動(dòng),收獲少的印象早已在畢業(yè)生心中烙下。但你千萬(wàn)不要以為這個(gè)方向是隨便都能去的,測(cè)試也有測(cè)試的領(lǐng)域,如果你沒(méi)準(zhǔn)備過(guò)的話,那你去應(yīng)聘測(cè)試就只能當(dāng)個(gè)路人了。
技術(shù)支持:介乎技術(shù)與非技術(shù)的方向。一方面,你得了解技術(shù),知道是什么回事,該怎么解決問(wèn)題;另一方面,你又得知道如何處理人際關(guān)系,因?yàn)楦愦蚪坏赖牟粌H僅是機(jī)器。
二、贏在起點(diǎn)
想必大家心中都有自己的選擇,咸魚(yú)白菜,各有所愛(ài),沒(méi)有什么方向是最好的,只有最適合自己的。如果你選擇了研發(fā),那請(qǐng)往下看。沒(méi)有的話看看當(dāng)娛樂(lè)也行:P。
在武俠世界里,高人往往是無(wú)招勝有招,這并不是因?yàn)檫\(yùn)氣好。《蝸居》里頭有一段說(shuō)令狐沖與岳不群的,令狐沖的劍是強(qiáng),但那只是花招,岳不群的氣功雖然開(kāi)始效果不明顯,但那都是深藏的功力,若不是岳不群誤入岐途,假以時(shí)日令狐沖定不是他的對(duì)手。對(duì)于技術(shù)人員而言也一樣,你不能只會(huì)幾招花招,內(nèi)功才是你筆試面試的制勝法寶。
何為內(nèi)功?李開(kāi)復(fù)在華工演講的時(shí)候直言不諱——算法是也。當(dāng)然這個(gè)并不完全正確,操作系統(tǒng),網(wǎng)絡(luò),編程語(yǔ)言等等都可以歸入武功秘笈之列。本人武功雖不甚高明,但摸爬滾打半年多,對(duì)各門各派的武功也算是內(nèi)中有數(shù)了。
算法與數(shù)據(jù)結(jié)構(gòu):算法與數(shù)據(jù)結(jié)構(gòu)永遠(yuǎn)是不可分開(kāi)的兩個(gè)概念。如何把算法比作船,那么數(shù)據(jù)結(jié)構(gòu)便是承載它的海。先說(shuō)說(shuō)算法,在大部分的筆試中,一道算法題是必不可少的,一般是最后一道。而到了技術(shù)面,算法也是證明你能力的最好途徑,當(dāng)然也是大部分人最頭痛的。算法難,十分難,很多人這么認(rèn)為,我現(xiàn)在也還這么認(rèn)為。但算法并不神秘,也不是不可攻克,特別是對(duì)筆試面試這類型的算法題目。 這些題目考的無(wú)非就是排序,搜索,最值。解題方法或通過(guò)迭代,或通過(guò)回溯,道路各種各樣。雖然這么說(shuō),但還是很難,排序包括快速排序,堆排序,桶排序,基數(shù)排序等等。企業(yè)要求的并不是你能說(shuō)出這個(gè)排序是什么,而是你能輕松地在紙上把問(wèn)題通過(guò)這些排序方法實(shí)現(xiàn)解法。如果你現(xiàn)在就能把各種排序在紙上寫出完整的代碼,那么這關(guān)你是沒(méi)問(wèn)題了。再說(shuō)說(shuō)數(shù)據(jù)結(jié)構(gòu),樹(shù)是考得最多的,還有就是各種圖。一般是和算法一起考,但有時(shí)候也會(huì)單獨(dú)問(wèn),比如問(wèn)紅白樹(shù),面試官想要的答案很簡(jiǎn)單,就是它的好處是什么,有什么不足,并不要求你能把這個(gè)結(jié)構(gòu)實(shí)現(xiàn),僅僅能說(shuō)出來(lái)就行。
操作系統(tǒng):要問(wèn)什么與程序結(jié)合的最緊密,那就是操作系統(tǒng)。程序就像是扎根于操作系統(tǒng)的一棵樹(shù),沒(méi)操作系統(tǒng)的觀念就像是霧里看花,很多時(shí)候會(huì)被表象蒙騙。在操作系統(tǒng)的知識(shí)當(dāng)中,最重要的考得最多的概念莫過(guò)于線程進(jìn)程,包括線程與進(jìn)程的區(qū)別,線程同步等。還有就是操作系統(tǒng)的基本原理。
網(wǎng)絡(luò):這個(gè)概念很廣泛,這里僅僅說(shuō)下它的分支計(jì)算機(jī)網(wǎng)絡(luò)。OSI 7層協(xié)議,socket,TCP/IP,IPV4的各種分類都是很重要的考點(diǎn)。
編程語(yǔ)言:毫無(wú)疑問(wèn),這是C++與JAVA之爭(zhēng)。曾經(jīng)不止一次被問(wèn)到C++和JAVA該選哪一方。我個(gè)人認(rèn)為這得看你選擇的就業(yè)方向,總的來(lái)說(shuō)我還是比較偏向C++。畢竟大部分的公司,即使是使用JAVA的也都會(huì)提供一份C++的卷子。一般而言,JAVA注重應(yīng)用,可以有很多框架。而C++更注重微觀方面,比如指針,內(nèi)存等。
三、武功秘笈逐本數(shù)
在程序的世界里,門派武功各種各樣。菜鳥(niǎo)往往一進(jìn)來(lái)就矇了,實(shí)在是亂花漸入迷人眼。仰天長(zhǎng)嘆,敢問(wèn)路在何方...其實(shí),天下武功出少林,要是實(shí)在沒(méi)想出要練哪門武功,那找本《易筋經(jīng)》來(lái)苦練苦練準(zhǔn)沒(méi)錯(cuò)。下面逐本來(lái)數(shù)下C++派系的各本秘笈。
《C++ Primer》:公認(rèn)的C++入門書。但在我看來(lái),拿這本東西入門并不好,想看到C++長(zhǎng)什么樣子估計(jì)已經(jīng)白發(fā)滄桑了。厚厚的一塊磚頭,內(nèi)容從最基礎(chǔ)的概念開(kāi)始,然后逐漸說(shuō)到容器,模板,異常等。每章后面都有練習(xí)題,如果結(jié)合答案,邊做邊看收獲會(huì)有不少。雖然題目看起來(lái)有點(diǎn)簡(jiǎn)單,當(dāng)作鞏固還是可以的。整本書要全部看完有點(diǎn)難度,基礎(chǔ)的特別是汲及到原理方面的東西得仔細(xì)看,筆試往往就是考這些。
《Effective C++》:外國(guó)人的作品,候捷的翻譯。怎么說(shuō)呢?你完全可以把它當(dāng)作小說(shuō)來(lái)看。這并不是指書的內(nèi)容,而是書的風(fēng)格語(yǔ)言。整本書大概分了50條條例,書也不厚,所以看起來(lái)會(huì)相對(duì)輕松。不過(guò)這本書你不能看完就放一邊,得經(jīng)常翻翻,看第一遍的時(shí)候很多東西其實(shí)是還沒(méi)想清楚的。
《深入淺出MFC》:這玩意初學(xué)MFC的千萬(wàn)不要看,越看越暈。不是說(shuō)寫得不好,而是你還沒(méi)到那個(gè)level。在你還不知道怎么生成個(gè)MFC程序的時(shí)候,它已經(jīng)在模擬MFC整個(gè)框架的運(yùn)作了,看了肯定不知所云,剛剛還在燃燒的小宇宙瞬間就滅了。假如你不是初學(xué)者,而且想窺視一下被微軟封裝得面目全非的框架長(zhǎng)什么樣子,那就得好好看下這本書。書的內(nèi)容大部分是用最簡(jiǎn)單的方式來(lái)模擬MFC的框架,代碼有點(diǎn)多,如果看起來(lái)累大概看一下就可以了。理解MFC的消息機(jī)制是看這本書的重點(diǎn),而且這也是MFC的難點(diǎn)所在,經(jīng)常會(huì)在面試的時(shí)候被問(wèn)到(假如你簡(jiǎn)歷上說(shuō)熟悉MFC)。
《Windows核心編程》:這本書主要針對(duì)Windows操作系統(tǒng),并且所有代碼都是通過(guò)C++來(lái)編寫。代碼寫得很規(guī)范,可以從網(wǎng)上下載了代碼自己編譯運(yùn)行。不過(guò)你最好使用Vista或Win7系統(tǒng),我使用XP環(huán)境來(lái)編譯程序會(huì)出現(xiàn)某些函數(shù)不存在。當(dāng)然這個(gè)是小數(shù),無(wú)傷大雅。整本書的語(yǔ)言通俗易懂,就是厚度方面有點(diǎn)嚇人...可以集中看內(nèi)核對(duì)象與線程方面的介紹,其他的沒(méi)空就略過(guò)。
上面說(shuō)的都是練底子的秘笈,對(duì)于急功近利的機(jī)會(huì)主義者來(lái)說(shuō)自然有點(diǎn)只能遠(yuǎn)望的感覺(jué)。如果你既想馬兒跑得快,又不想給馬兒吃很多草,那就喂它一罐紅牛吧。臨陣磨槍,不快也光,下面這兩本書很適合你。
《程序員面試寶典》:不用介紹都聽(tīng)過(guò)它的大名了吧,凡找軟件開(kāi)發(fā)的人手一本,可以說(shuō)是找工大軍的Bible。書上記載了各類型的筆試題與面試題,題目并不難,只要有一定基礎(chǔ)的就可以看得懂。把它當(dāng)作找工的入門書很不錯(cuò)。
《編程之美》:如果你想找百度,網(wǎng)易,騰訊等一些智商要求比較高的公司,那么嚴(yán)重推薦這本書。這本書是由微軟亞洲研究院(MSRA)出的,對(duì)于MSRA的面試相信大家都知道有多難,而這本書就是面試的縮影。所謂熟讀唐詩(shī)三百首,不會(huì)吟時(shí)也會(huì)偷。讀完這本書,你的面試會(huì)有把握很多。而且說(shuō)不定筆試的時(shí)候也會(huì)給你驚喜。說(shuō)到這里又鉤起我的傷心回憶。自己做了半個(gè)小時(shí)才勉強(qiáng)做出來(lái)的題目,別人10分鐘內(nèi)解決。我十分不解,他說(shuō)這題在《編程之美》有。而且這樣的經(jīng)歷不止一次。
當(dāng)然,這里只能說(shuō)說(shuō)自己看過(guò)的書,對(duì)于沒(méi)看過(guò)的實(shí)在不好發(fā)表言論。