程序猿如何跨越算法的鴻溝

對(duì)于立志進(jìn)一線互聯(lián)網(wǎng)公司,同時(shí)不滿足于一輩子干純業(yè)務(wù)應(yīng)用開發(fā),希望在后端做點(diǎn)事情的同學(xué)來說,備戰(zhàn)面試中的算法,分為哪幾個(gè)步驟呢?
如直接想要突擊算法手冊(cè)的,請(qǐng)?zhí)D(zhuǎn)至文末獲取。
1、掌握一門編程語言
C的話,推薦Dennis M. Ritchie & Brian W. Kernighan合著的《C程序設(shè)計(jì)語言》,和《C和指針》;
C++ 則推薦《C++ Primer》,《深度探索C++對(duì)象模型》,《Effective C++》;
Java推薦《Thinking in Java》,《Core Java》,《Effictive Java》,《深入理解Java虛擬機(jī)》。
掌握一門語言并不容易,不是翻完一兩本書即可了事,語言的細(xì)枝末節(jié)需要在平日不斷的編程練習(xí)中加以熟練。
2、苦補(bǔ)數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)
大部分的面試題都在圍繞一個(gè)點(diǎn):基于各種數(shù)據(jù)結(jié)構(gòu)上的增刪改查。如字符串的查找翻轉(zhuǎn),鏈表的查找遍歷合并刪除,樹和圖的查找遍歷,后來為了更好地查找,我們想到了排序,排序仍然不夠,我們有了貪心、動(dòng)態(tài)規(guī)劃,再后來東西多了,于是有了海量數(shù)據(jù)處理,資源有限導(dǎo)致人們彼此競爭,出現(xiàn)了博弈組合概率。
3、刷leetcode
如主要在國外找工作,推薦兩個(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ù)博客版,以及在博客版本基礎(chǔ)上精簡優(yōu)化的編程藝術(shù)github版。除此之外,還可看看《編程之美》,與《劍指offer》。
4、突擊手冊(cè)與后記
最后,我提供一份《程序員面試突擊必會(huì)算法》。
下載地址:kdocs.cn/l/ck8Q6SzMWsRa
學(xué)習(xí)最忌心浮氣躁,急功近利,即便練習(xí)了算法,也不一定代表能萬無一失的通過筆試與面試環(huán)節(jié),因?yàn)榭傮w說來,在一般的筆試面試中,70%基礎(chǔ)+ 30%coding能力(含算法),故如果做到了上文中的三個(gè)步驟,還遠(yuǎn)遠(yuǎn)不夠。