[轉]程序員如何快速準備面試中的算法

             程序員如何快速準備面試中的算法

前言
[轉自] July大神
我決定寫篇短文,即爲此文。之所以要寫這篇文章,緣於微博上常有朋友詢問,要畢業找工作了,如何備戰算法。儘管在微博上簡單梳理過,如下圖所示:

但因字數限制,許多問題無法一次性說清楚,故特撰此文着重闡述下:程序員如何快速準備面試中的算法,繼而推薦一些相關的書籍或資料。順便也供節後跳槽、3月春季招聘小高潮、及6月畢業找工作的朋友參考。

備戰面試中算法的五個步驟

對於立志進一線互聯網公司,同時不滿足於一輩子幹純業務應用開發,希望在後端做點事情的同學來說,備戰面試中的算法,分爲五個步驟,如下:

1、掌握一門編程語言
首先你得確保你已掌握好一門編程語言:

C的話,推薦Dennis M. Ritchie & Brian W. Kernighan合著的《C程序設計語言》、《C和指針》,和《征服C 指針》;
C++ 則推薦《C++ Primer》,《深度探索C++對象模型》,《Effective C++》 。

掌握一門語言並不容易,不是翻完一兩本書即可了事,語言的細枝末節需要在平日不斷的編程練習中加以熟練。
2、過一遍微軟面試100題系列

我從2010年起開始整理微軟面試100題系列,見過的題目不可謂不多,但不管題目怎般變化,依然是那些常見的題型和考察點,當然,不考察任何知識點,純粹考察編程能力的題目也屢見不鮮。故不管千變萬化,始終不離兩點:①看你基本知識點的掌握情況;②編程基本功。

而當你看了一遍微軟面試100題之後(不要求做完,且這個系列的有些答案存在不少問題,建議以我的新書《編程之法》爲準),你自會意識到:數據結構和算法在筆試面試中的重要性。
3、苦補數據結構基礎

如果學數據結構,可以看我們在大學裏學的任一本數據結構教材都行,包括鏈表、數組、字符串、矩陣、樹、圖等等,如果你覺得實在不夠上檔次,那麼可以再看看《STL源碼剖析》。
4、看算法導論

《算法導論》上的前大部分的章節都在闡述一些經典常用的數據結構和典型算法(如二分查找,快速排序、Hash表),以及一些高級數據結構(諸如紅黑樹、B樹),如果你已經學完了一本數據結構教材,那麼建議你着重看貪心、動態規劃、圖論等內容,這3個議題每一個議題都大有題目可出。同時,熟悉常用算法的時間複雜度。

如果算法導論看不懂,你可以參看本博客。

5、刷leetcode或cc150或編程藝術系列

如主要在國外找工作,推薦兩個編程面試網站:一個是國外一網站leetcode,它上面有個OJ對於找工作的同學來說非常值得一刷https://oj.leetcode.com/;另外一個是http://www.careercup.com/,而後這個網站的創始人寫了本書,叫《careercup cracking coding interview》,最終這本英文書被圖靈教育翻譯出版爲《程序員面試金典》。
若如果是國內找工作,則鄭重推薦編程之法github版,尤其是在博客版本基礎上精簡優化的我的新書《編程之法》。除此之外,還可看看《編程之美》,與《劍指offer》。

而不論是準備國內還是國外的海量數據處理面試題,此文必看:教你如何迅速秒殺掉:99%的海量數據處理面試題。收錄於新書《編程之法》第六章。

另,多看看優秀的開源代碼,如nginx或Redis,多做幾個項目加以實踐之,儘早實習(在一線互聯網公司實習3個月可能勝過你自個黑燈瞎火摸爬滾打一年)。

當然,如果你已經具備了上文所說的語言 & 數據結構 & 算法基礎,可以直接跳到本第五步驟,開始刷leetcode或cc150或編程藝術系列。此外,特別推薦此面試求職&算法在線課程。

後記

學習最忌心浮氣躁,急功近利,即便練習了算法,也不一定代表能萬無一失通過筆試面試關,因爲總體說來,在一般的筆試面試中,70%基礎+ 30%coding能力(含算法),故如果做到了上文中的5個步驟,還遠遠不夠,最後,我推薦一份非算法的書單,以此爲大家查漏補缺(不必全部看完,歡迎大家補充):

《深入理解計算機系統》
W.Richard Stevens著的《TCP/IP詳解三卷》,《UNIX網絡編程二卷》,《UNIX環境高級編程:第2版》,詳見此豆瓣頁面;
你如果要面機器學習一類的崗位,建議看看相關的算法(如支持向量機通俗導論(理解SVM的三層境界),收錄於新書《編程之法》第7.1節),及老老實實補補數學基礎,包括微積分、線性代數、概率論與數理統計(除了教材,推薦一本《數理統計學簡史》)、矩陣論(推薦《矩陣分析與應用》)等..

綜上:上述全部過程短則半年,長則三年。
最後要強調的是:切忌急功近利,越想快速越要循序漸進,踏實前進,若實在覺得算法 & 編程太難,轉產品、運營、測試、運維、前端、設計都是不錯的選擇,因爲雖然編程有趣,但不一定人人適合編程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章