備戰(zhàn)面試中算法的五個步驟 對于立志進一線互聯(lián)網(wǎng)公司,同時不滿足于一輩子干純業(yè)務應用開發(fā),希望在后端做點事情的同學來說,備戰(zhàn)面試中的算法,分為五個步驟,如下: 1、掌握一門編程語言 首先你得確保你已掌握好一門編程語言: C的話,推薦Dennis M. Ritchie & Brian W. Kernighan合著的《C程序設計語言》,和《C和指針》; C++ 則推薦《C++ Primer》,《深度探索C++對象模型》 、《Effective C++》 。 掌握一門語言并不容易,不是翻完一兩本書即可了事,語言的細枝末節(jié)需要在平日不斷的編程練習中加以熟練。 2、過一遍微軟面試100題系列 我從2010年起開始整理微軟面試100題系列,見過的題目不可謂不多,但不管題目怎般變化,依然是那些常見的題型和考察點。當然,不考察任何知識點,純粹考察編程能力的題目也屢見不鮮。故不管千變?nèi)f化,始終不離兩點:①看你基本知識點的掌握情況;②編程基本功。 而當你看了一遍微軟面試100題之后(不要求做完),你自會意識到:數(shù)據(jù)結(jié)構(gòu)和算法在筆試面試中的重要性。 3、苦補數(shù)據(jù)結(jié)構(gòu)基礎 如果學數(shù)據(jù)結(jié)構(gòu),可以看我們在大學里學的任一本數(shù)據(jù)結(jié)構(gòu)教材都行,如果你覺得實在不夠上檔次,那么可以再看看《STL源碼剖析》。 4、看算法導論 《算法導論》上的前大部分的章節(jié)都在闡述一些經(jīng)典常用的數(shù)據(jù)結(jié)構(gòu)和典型算法(如二分查找,快速排序、Hash表),以及一些高級數(shù)據(jù)結(jié)構(gòu)(諸如紅黑樹、B樹),如果你已經(jīng)學完了一本數(shù)據(jù)結(jié)構(gòu)教材,那么建議你著重看貪心、動態(tài)規(guī)劃、圖論等內(nèi)容,這3個議題每一個議題都大有題目可出。同時,熟悉常用算法的時間復雜度。 5、刷leetcode或cc150或編程藝術系列 如主要在國外找工作,推薦兩個面試編程網(wǎng)站:一個是leetcode,一家國外一網(wǎng)站,它上面有不少編程題;另外一個是careercup,而后這個網(wǎng)站的創(chuàng)始人寫了本書,叫《careercup cracking coding interview》,最終這本英文書被圖靈教育翻譯出版為《程序員面試金典》。 若如果是國內(nèi)找工作,則鄭重推薦JULY編寫的《程序員編程藝術》,有編程藝術博客版,以及在博客版本基礎上精簡優(yōu)化的編程藝術github版。除此之外,還可看看《編程之美》與《劍指offer》 。 而不論是準備國內(nèi)還是國外的海量數(shù)據(jù)處理面試題,此文必看:教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題。此外,多看看優(yōu)秀的開源代碼,如nginx或redis,多做幾個項目加以實踐之,盡早實習(在一線互聯(lián)網(wǎng)公司實習3個月可能勝過你自個黑燈瞎火摸爬滾打一年)。 當然,如果你是準備社招,且已經(jīng)具備了上文所說的語言 & 數(shù)據(jù)結(jié)構(gòu) & 算法基礎,可以直接跳到本第五步驟,開始刷leetcode或cc150或編程藝術系列。 學習最忌心浮氣躁,急功近利,即便練習了算法,也不一定代表能萬無一失 通過筆試面試關,因為總體說來,在一般的筆試面試中,70%基礎+ 30%coding能力(含算法),故如果做到了上文中的5個步驟,還遠遠不夠。最后,我推薦一份非算法的書單,以此為大家查漏補缺(不必全部看完,歡迎大家補充): 《深入理解計算機系統(tǒng)》 W.Richard Stevens著的《TCP/IP詳解三卷》,《UNIX網(wǎng)絡編程二卷》,《UNIX環(huán)境高級編程:第2版》 你如果要面機器學習一類的崗位,建議看看相關的算法(如支持向量機通俗導論(理解SVM的三層境界)),及老老實實補補數(shù)學基礎,包括微積分、線性代數(shù)、概率論與數(shù)理統(tǒng)計(除了教材,推薦一本《數(shù)理統(tǒng)計學簡史》)、矩陣論(推薦《矩陣分析與應用》)等 綜上:上述全部過程短則半年,長則三年。 最后要強調(diào)的是:急功近利者必敗,越想快速越要循序漸進,踏實前進,若實在覺得算法、編程太難,轉(zhuǎn)產(chǎn)品、運營、測試、運維、前端、設計都是不錯的選擇,因為雖然編程有趣,但不一定人人適合編程。
|
|