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