程序員如何快速準(zhǔn)備面試中的算法
前言
我決定寫篇短文,即為此文。之所以要寫這篇文章,緣于微博上常有朋友詢問,要畢業(yè)找工作了,如何備戰(zhàn)算法。盡管在微博上簡單梳理過,如下圖所示:
但因字?jǐn)?shù)限制,特撰此文著重闡述下:程序員如何快速準(zhǔn)備面試中的算法,順便推薦一些相關(guān)的書籍或資料。
備戰(zhàn)面試中算法的五個(gè)步驟
總體來說,備戰(zhàn)面試中的算法,分為五個(gè)步驟,如下:
1、***你得確保自己已經(jīng)掌握好一門編程語言
- 如果是C的話,推薦Dennis M. Ritchie & Brian W. Kernighan著的《C程序設(shè)計(jì)語言》,和《C和指針》;
- C++ 則推薦《C++ Primer》,《深度探索C++對(duì)象模型》,《Effective C++》 。
掌握一門語言并不容易,不是翻完一本書即可了事,語言中的細(xì)枝末節(jié)需要在平日不斷的編程練習(xí)中加以熟練。
2、過一遍微軟面試100題系列
我從2010年起開始整理 微軟面試100題系列,見過的題目不可謂不多,但不管題目怎般變化,依然是那些常見的題型和考察點(diǎn),當(dāng)然,不考察任何知識(shí)點(diǎn),純粹考察編程能力的題目也屢見不鮮。但不管千變?nèi)f化,始終不離兩點(diǎn):①看你基本知識(shí)點(diǎn)的掌握情況;②編程基本功。
而當(dāng)你看了一遍微軟面試100題之后(不要求做完),你自會(huì)意識(shí)到:數(shù)據(jù)結(jié)構(gòu)和算法在筆試面試中的重要性。
3、苦補(bǔ)數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)
如果學(xué)數(shù)據(jù)結(jié)構(gòu),可以看我們?cè)诖髮W(xué)里學(xué)的任一本數(shù)據(jù)結(jié)構(gòu)教材都行,如果你覺得實(shí)在不夠上檔次,那么可以再看看《STL源碼剖析》。
4 、看算法導(dǎo)論
《算法導(dǎo)論》上的前大部分的章節(jié)都在闡述一些經(jīng)典常用的數(shù)據(jù)結(jié)構(gòu)和典型算法(如二分查找, 快速排序、 Hash表),以及一些高級(jí)數(shù)據(jù)結(jié)構(gòu)(諸如紅黑樹、 B樹),如果你已經(jīng)學(xué)完了一本數(shù)據(jù)結(jié)構(gòu)教材,那么建議你著重看貪心、動(dòng)態(tài)規(guī)劃、圖論等內(nèi)容,這3個(gè)議題每一個(gè)議題都大有題目可出。
如果算法導(dǎo)論看不懂,你可以看本博客。
5、刷leetcode或cc150或編程藝術(shù)系列
- 如主要在國外找工作,推薦兩個(gè)面試編程網(wǎng)站:一個(gè)是 http://leetcode.com/,leetcode是國外一網(wǎng)站,它上面有不少編程題;一個(gè)是http://www.careercup.com/,而后這個(gè)網(wǎng)站的創(chuàng)始人寫了本書,叫《careercup cracking coding interview》,最終這本英文書被圖靈教育翻譯出版為《程序員面試金典》。
- 若如果是國內(nèi)找工作,則鄭重推薦我編寫的《程序員編程藝術(shù)》,有編程藝術(shù)博客版,以及在博客版本上精簡優(yōu)化的 編程藝術(shù)github版。除此之外,還可看看《編程之美》,與《劍指offer》。
而不論是準(zhǔn)備國內(nèi)還是國外的海量數(shù)據(jù)處理面試題,此文必看: 教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題。
后記
學(xué)習(xí)最忌心浮氣躁,急功近利,即便練習(xí)了算法,也不一定代表能萬無一失通過筆試面試關(guān),因?yàn)榭傮w說來,在一般的筆試面試中,70%基礎(chǔ)+ 30%coding能力(含算法),故如果做到了上文中的5個(gè)步驟,還遠(yuǎn)遠(yuǎn)不夠,***,我推薦一份書單,以此為大家查漏補(bǔ)缺(不必全部看完,歡迎大家補(bǔ) 充):
- 《深入理解計(jì)算機(jī)系統(tǒng)》
- W.Richard Stevens著的《TCP/IP詳解三卷》,《UNIX網(wǎng)絡(luò)編程二卷》,《UNIX環(huán)境高級(jí)編程:第2版》,詳見此 豆瓣頁面;
- ..