我決定寫篇短文,即爲此文。之因此要寫這篇文章,緣於微博上常有朋友詢問,要畢業找工做了,如何備戰算法。儘管在微博上簡單梳理過,以下圖所示:html
但因字數限制,許多問題沒法一次性說清楚,故特撰此文着重闡述下:程序員如何快速準備面試中的算法,繼而推薦一些相關的書籍或資料。順便也供節後跳槽、3月春季招聘小高潮、及6月畢業找工做的朋友參考。前端
對於立志進一線互聯網公司,同時不知足於一生幹純業務應用開發,但願在後端作點事情的同窗來講,備戰面試中的算法,分爲五個步驟,以下:nginx
1、掌握一門編程語言git
首先你得確保你已掌握好一門編程語言:程序員
掌握一門語言並不容易,不是翻完一兩本書便可了事,語言的細枝末節須要在平日不斷的編程練習中加以熟練。
2、過一遍微軟面試100題系列github
我從2010年起開始整理微軟面試100題系列,見過的題目不可謂很少,但無論題目怎般變化,依然是那些常見的題型和考察點,固然,不考察任何知識點,純粹考察編程能力的題目也家常便飯。故無論變幻無窮,始終不離兩點:①看你基本知識點的掌握狀況;②編程基本功。面試
而當你看了一遍微軟面試100題以後(不要求作完,且這個系列的有些答案存在很多問題,看時注意),你自會意識到:數據結構和算法在筆試面試中的重要性。
3、苦補數據結構基礎redis
若是學數據結構,能夠看咱們在大學裏學的任一本數據結構教材都行,包括鏈表、數組、字符串、矩陣、樹、圖等等,若是你以爲實在不夠上檔次,那麼能夠再看看《STL源碼剖析》。
4、看算法導論算法
《算法導論》上的前大部分的章節都在闡述一些經典經常使用的數據結構和典型算法(如二分查找,快速排序、Hash表),以及一些高級數據結構(諸如紅黑樹、B樹),若是你已經學完了一本數據結構教材,那麼建議你着重看貪心、動態規劃、圖論等內容,這3個議題每個議題都大有題目可出。同時,熟悉經常使用算法的時間複雜度。編程
若是算法導論看不懂,你能夠參看本博客。
5、刷leetcode或cc150或編程藝術系列
而不管是準備國內仍是國外的海量數據處理面試題,此文必看:教你如何迅速秒殺掉:99%的海量數據處理面試題。
此外,多看看優秀的開源代碼,如nginx或redis,多作幾個項目加以實踐之,儘早實習(在一線互聯網公司實習3個月可能賽過你自個黑燈瞎火摸爬滾打一年)。
固然,若是你是準備社招,且已經具有了上文所說的語言 & 數據結構 & 算法基礎,能夠直接跳到本第五步驟,開始刷leetcode或cc150或編程藝術系列。
學習最忌心浮氣躁,急功近利,即使練習了算法,也不必定表明能萬無一失經過筆試面試關,由於整體說來,在通常的筆試面試中,70%基礎+ 30%coding能力(含算法),故若是作到了上文中的5個步驟,還遠遠不夠,最後,我推薦一份非算法的書單,以此爲你們查漏補缺(沒必要所有看完,歡迎你們補充):