要畢業找工作了,如何備戰演算法。儘管在微博上簡單梳理過,如下圖所示:
但因字數限制,特撰此文著重闡述下:程式設計師如何快速準備面試中的演算法,順便推薦一些相關的書籍或資料。
備戰面試中演算法的五個步驟
總體來說,備戰面試中的演算法,分為五個步驟,如下:
1、首選你得確保自己已經掌握好一門程式語言
如果是C的話,推薦Dennis M. Ritchie & Brian W. Kernighan著的《C程式設計語言》,和《C和指標》;
C++ 則推薦《C++ Primer》,《深度探索C++物件模型》,《Effective C++》 。
掌握一門語言並不容易,不是翻完一本書即可了事,語言中的細枝末節需要在平日不斷的程式設計練習中加以熟練。
2、過一遍微軟面試100題系列
我從2010年起開始整理 微軟面試100題系列,見過的題目不可謂不多,但不管題目怎般變化,依然是那些常見的題型和考察點,當然,不考察任何知識點,純粹考察程式設計能力的題目也屢見不鮮。但不管千變萬化,始終不離兩點:①看你基本知識點的掌握情況;②程式設計基本功。
而當你看了一遍微軟面試100題之後(不要求做完),你自會意識到:資料結構和演算法在筆試面試中的重要性。
3、苦補資料結構基礎
如果學資料結構,可以看我們在大學裡學的.任一本資料結構教材都行,如果你覺得實在不夠上檔次,那麼可以再看看《STL原始碼剖析》。
4 、看演算法導論
《演算法導論》上的前大部分的章節都在闡述一些經典常用的資料結構和典型演算法(如二分查詢, 快速排序、 Hash表),以及一些高階資料結構(諸如紅黑樹、 B樹),如果你已經學完了一本資料結構教材,那麼建議你著重看貪心、動態規劃、圖論等內容,這3個議題每一個議題都大有題目可出。
如果演算法導論看不懂,你可以看本部落格。
5、刷leetcode或cc150或程式設計藝術系列
如主要在國外找工作,推薦兩個面試程式設計網站:一個是 ,leetcode是國外一網站,它上面有不少程式設計題;一個是,而後這個網站的創始人寫了本書,叫《careercup cracking coding interview》,最終這本英文書被圖靈教育翻譯出版為《程式設計師面試金典》。
若如果是國內找工作,則鄭重推薦我編寫的《程式設計師程式設計藝術》,有程式設計藝術部落格版,以及在部落格版本上精簡優化的 程式設計藝術github版。除此之外,還可看看《程式設計之美》,與《劍指offer》。
而不論是準備國內還是國外的海量資料處理面試題,此文必看: 教你如何迅速秒殺掉:99%的海量資料處理面試題。
後記
學習最忌心浮氣躁,急功近利,即便練習了演算法,也不一定代表能萬無一失通過筆試面試關,因為總體說來,在一般的筆試面試中,70%基礎+ 30%coding能力(含演算法),故如果做到了上文中的5個步驟,還遠遠不夠,最後,我推薦一份書單,以此為大家查漏補缺(不必全部看完,歡迎大家補 充):
《深入理解計算機系統》
ard Stevens著的《TCP/IP詳解三卷》,《UNIX網路程式設計二卷》,《UNIX環境高階程式設計:第2版》,詳見此 豆瓣頁面;
綜上:上述全部過程短則半年,長則三年。最後一句:急功近利者必敗,越想快速越要循序漸進,踏實前進。