從小白到 6 個 offer,我到底是怎麼刷題的?

最近自習室裏又興起了一陣刷題潮,你們相約刷題~git


今天和你們系統分享下我去年轉行時的一個刷題過程和方法,但願對你有所幫助。github

首先介紹下個人編程基礎,我學的是金融工程專業,碩士時學過 C++ 的課,這也是個人編程入門課(但我我的很是不推薦用 C++ 入門)。這門課的重點是 C++ 在金融領域的應用,好比給 Option 訂價,基本不涉及算法和數據結構。面試

因此我是有必定編程基礎的,可是對算法和數據結構是小白,也不懂空間複雜度和時間複雜度爲什麼物。算法

另外說明一下個人時間,我是在工做後纔開始刷題,因此是晚上和週末來刷,時間比較緊張,若是是學生的話在個人基礎上要多刷一些喲。編程

下面上乾貨。微信


我把個人刷題過程分爲 3 階段。數據結構

第一階段:打基礎

時間是 3 個月,作了 128 道題,平均天天 1-2 題。dom

這一階段刷題對我來講,是一個學習數據結構和算法的過程。數據結構和算法

因此若是是科班的同窗這一步就能夠跳過了。學習

常常有同窗問這個刷題順序問題:

我認爲在不一樣階段是不同的,那麼第一階段我是按照算法類型來刷,每一個類型大概花 1-2 周的時間。

那到底先刷哪一個類型呢?

刷 DP?

這不是勸退麼?

這裏對於小白來講,合理的學習曲線是很是重要的,不然一上來數據結構都不清楚去作難的算法題容易受打擊。

那麼怎樣纔是合理的學習曲線呢?

我說的不算,其餘人的也只是他我的經驗,而應該是看名校的口碑課程是怎麼安排的,看教授爲你制定的學習計劃。

MIT 6.006 Introduction to Algorithms

好比第一週,咱們去刷排序算法。

那在這個具體的分類下,題目按什麼順序來作呢?

把題目按照頻率從高到低的順序來作,也就是出現頻率高,常考的咱們先作。

那對於每一道題應該怎麼作呢?

首先我會先本身思考 5 分鐘,那若是過了 5 分鐘尚未任何思路,就沒必要強求了,看答案吧。

Leetcode 有一個討論區,裏面有很是多的大神給的解答,重點不是看他的代碼,而是看他怎麼想的,怎麼分析的這個問題。

若是尚未理解,那我會去搜一下視頻講解。

這裏推薦一個小哥,也是我惟一推薦的 Leetcode 視頻講解:

國內的小夥伴可能不太方便看這個,你們在留言區說下你推薦的視頻講解吧~

對於在北美求職的同窗,這小哥的英文對面試也會很是有幫助。

這樣就把一個刷題計劃落實到了第一個分類、第一週、第一天該作什麼。

可是作完題不是就萬事大吉了,最重要的一步是須要吸取、內化成本身的。

我喜歡的是寫「解題報告」:

<,>

把這道題考查了哪些知識點,正確的思路是怎樣的,別人是怎麼想到的,代碼是怎麼寫的,代碼有什麼小技巧,都記錄下來。

這個是跟我當時一塊兒刷題的小夥伴學的,而且咱們互相講題,這樣效果更好。因此這裏強烈建議你們組隊刷題,互相監督提升。

那麼週末的時候複習和總結,我通常會作:

  1. 從新作一遍本週作過的題目,不是背答案,而是本身再去想一遍;
  2. 再作幾道新題;
  3. 看書,創建更系統的知識體系。

這裏看書不是指把書從頭看到尾,而是抓住重點章節,好比排序算法,那就參考 MIT 教授給你畫的重點,只看《算法導論》的這些章節,這纔是偷懶的正確打開方式啊。

不過,若是你的時間很充足,固然是系統的看書、上課更好了,會有更加平緩的學習曲線。

這樣 3 個月後我把基本的算法類型都刷過了,數據結構也都深刻理解了,剛開始作的題目也差很少都忘了,那麼開始第二階段。

第二階段:拓展思路

這一階段我花了 1 個半月的時間,複習了第一階段的題目,並作了 100 道新題。

  • 平時工做日的時候,我會去複習第一階段的題目,而且用英文把它講出來,畢竟我要參加英文面試,若是是國內面試的話中文就行了,而後你就會發現,本身是不會說話的,不信你錄音聽一聽。
  • 週末時,我會限定時間去作新題,模擬考試或者面試的感受,在有時間壓力下去思考,不然給充足的時間你們都能作出來。

這一階段我是記錄在 Excel 裏:

第二階段作的差很少的時候,就把 Linkedin 設置爲 「open to market「,就會有獵頭找我了,那一旦拿到面試,就到了第三階段。

第三階段:面試

這一階段的重點是找到面試的狀態和感受,而且快速寫出代碼。

那麼個人方法是

  • Mock interview
  • 參加 Leetcode contest

這一階段的刷題順序我會按公司分類來刷,Leetcode 上有 company tag,若是是國內的小夥伴能夠參考這個 Github: https://github.com/afatcoder/LeetcodeTop,列舉了國內幾大互聯網公司常考的面試題,那麼就會更有針對性的準備面試。

這一階段又陸陸續續作了 100 題,同時面完了全部的面試,就收工啦。


最後呢,再送個你們 3 個很好用的 Github 資料:

  1. 按國內公司分類:https://github.com/afatcoder/LeetcodeTop
  2. 按照算法類型分類:https://github.com/wisdompeak/LeetCode
  3. Leetcode 1-919 題的解析:https://github.com/grandyang/leetcode

另外還有一份精選的刷題筆記也想送給你們,以前在視頻號裏推薦過了,尚未領的小夥伴在公衆號後臺回覆「筆記」就有啦。


那以上就是我刷題經驗的整個過程啦,若是還有任何問題歡迎留言或者私信告訴我,若是想加入自習室和你們一塊兒刷題的也歡迎加我微信,備註:自習。

我是小齊,紐約程序媛,點擊下方視頻瞭解個人故事吧~

相關文章
相關標籤/搜索