
俗稱刷題。什麼是刷題,就是透過寫程式題目,去學習在面試過程中會需要用的觀念,並不是死背各種題目的解法。題目可以分幾大類型,比如說Array相關, Matrix相關, Graph相關, Dynamic Programming相關等等。
- 入門可以參考 “CRACKING the CODING INTERVIEW” 這本書https://www.crackingthecodinginterview.com/
這本書主要可以提供,初步的大方向分類,讓學習的人可以大致了解有哪些大觀念,並且做一些練習題。
這些練習題的解法可以參考我的Github
https://github.com/finderkiller/CrackingCodeInt
也可以下載裡面的檔案用Google Colab開啟直接線上修改程式碼
https://github.com/finderkiller/CrackingCodeInt/blob/master/Cracking%20the%20Coding%20Interview.ipynb
- Leetcode,當有一些基本的大觀念後,可以開始做Leetcode這個網站的題目https://leetcode.com/。
一開始做題,可以先做Top Interview Questions,做到100題左右,會開始注意到某些題目的觀念跟其他題目很類似,這樣是好的開始,可以開始歸類這些題目,用一個表整理起來。
這個表的內容會隨著做的題目越多而增長,可以另外加上空間複雜度跟時間複雜度,以及解這個題目的小提示,方便未來的自己複習,類似下圖。
最下面是各種題目的大分類,分成了Array/String, Matrix, LinkedList, Tree, Graph, Dynamic Programming, Backtracking等等。
每一個大分類,會再有不同類型的小分類題目,分別對應不同的解法去解他們。
然後每一個題目都會有對應的Time Complexity, Space Complexity and Hint.
這邊分享一下自己用Python寫的Leetcode題目解法,大概做了快400題。https://github.com/finderkiller/LeetCode
- Leetcode這個網站,給付費會員提供各家大公司熱門考題的排行榜。在投完履歷後可以開始照著各大公司出題頻率,從大到小開始刷,刷了一題如果覺得重要,可以加到自己的分類表格。
- 在約好面試後,可以開始看論壇上分享的面試心得,比如一畝三分地等等。
我個人的觀點,刷題要重質,不要太注重刷了多少題。
這份分類表格就體現了自身刷題的質量。裡面的分類越多,代表你對題目的心得越豐富,越能察覺這個題目是跟什麼相關,又或許這個題目是另一個新觀念,這樣就是增加一種新分類。
自己都需要有一個自己看得懂的分類表格,可以幫助未來繼續刷題找工作,能快速的重拾觀念,只需要做這邊的一些題目,刷題的感覺就會回來了。


One Reply to “”