前言
隨着互聯網寒潮的到來, 愈來愈多的互聯網公司提升了面試的難度,其中之一就是加大了面試當中手撕算法題的比例。這裏說的算法題不是深度學習,機器學習這類的算法,而是排序,廣度優先,動態規劃這類既考覈數據結構也考覈編程能力的題目。刷題的網址很是的多,其中以leetcode是最爲出名的。面試
在刷題上,我花了大量的時間,蹚了許多的坑,總結了一下,主要有這三個問題:算法
- 刷過的題總是忘,第二次刷的時候仍是不會作
- 刷題的速度很慢,即便花一天時間,也經常只能刷五六道
- 堅持不下來,總是刷到一半就停滯下來了,當我第二次再來刷的時候,前面刷過的題都又忘的差很少
說出來都是淚,感受刷題這個路是真的難走,花了不少時間,可是感受沒有什麼收穫。因此最近我一直在反思本身刷題的方法,但願可以提升刷題的效率和速度。當我總結了如下方法之後,我很明顯的感覺到本身的刷題速度從之前週末的一天五六道提高到週末一天刷十五六道以上,速度相比之前提高的很是明顯。編程
一. 咱們來談談爲何要刷題數據結構
- 面試須要。Google以及今日頭條等公司面試的時候,很是看重基本的算法題目,leetcode 刷的很差第一面都過不了
- 刷題可以提升自信。實際工做當中的代碼論算法複雜度遠遠低於刷題的難度,這麼難的題我都刷過了,況且工做的代碼, 固然工做當中通常也用不到這些咱們刷題的方法
- 大部分同窗刷題能力須要提升。在面試同窗算法題的時候,三道算法題可以寫出一道的也不是不少
二. 如何快速刷題
因爲我本人目前只刷了400道左右的題目,頗有可能有更好的方法,歡迎你們賜教機器學習
- 確立計劃。好比在準備找工做的時候,明確就要60天刷leetcode 前400題,平均一週就要刷75題,能夠週末兩天刷50題,週一到週五 天天刷5題,將問題分解下來,天天必定要完成任務才能睡覺
- 分解計劃。因爲須要一週刷75題,提早規劃將本週須要刷的75題,整理成excel,刷完一題標記一下,一週完畢之後,能夠看到滿滿標記的excel 很是的有成就感
- 快速刷題。初期一天刷五題其實也是很高的負擔,通常來講剛刷題,一題都至少要半個小時,一天五道的話,可能至少也要兩個半小時。因此咱們在刷題的時候,爲了節約時間,五分鐘沒有思路,就別浪費時間了,直接看答案. 另一個緣由,面試的時候,也不可能讓你思考好久。要明確認知,這個和高考刷題沒什麼區別,理解不了,先背下來。
- 組隊刷題。你們一塊兒刷題,能夠明顯的督促本身堅持下來,刷題這個原本就是堅持的過程。
三. 如何避免遺忘學習
- 及時重複。因爲咱們刷完題之後,遺忘曲線會聽從一個先快後慢的過程,因此要及時重複刷過的題,這個須要提早規劃刷的75題,咱們會以後再講如何規劃每週的75題
- 與人分享。當咱們刷完題之後,若是能講給別人聽的話,會大大加深咱們的映像,在講給別人聽的時候,若是你能講的很明白,說明你是完全理解了,可是若是聽的人始終沒有聽明白,那頗有可能就是本身沒有理解這個題目,須要本身再回去思考一下這個題目的解法。
四. 如何提升面試環節當中刷題的表現優化
- 養成bug free 的習慣。寫完代碼之後, 必定要仔細檢查,保證沒有思路問題,沒有下標越界問題,考慮各類邊界狀況,沒有變量命名不一致等問題
- 掌握多種解法。算法題面試,作出來是一方面, 若是可以在這個題目上掌握不一樣時間複雜度的解法,而後再呈現給面試官,面試官天然會更加滿意的。假設一個同窗在面試的時候,先寫時間複雜度和空間複雜度最高的方法,面試官頗有可能會問你這個題目有更優的解法嗎,你再寫時間複雜度和空間複雜度稍低一點的解法,若是面試官繼續問你能不能更優化一點,你再寫出時間複雜度和空間複雜度最優的方案,面試官會認爲你的思考是有深度的,若是一開始就寫出時間複雜度和空間複雜度最優的方法,面試官只是會以爲這個題目你之前作過而已。
五.結束語spa
- 刷題最重要的是速度和效率。短期內高質量快速刷完纔是最終目的,明確本身的認知,不要和題目死磕。
- 堅持下來。若是一個事情方向是正確的時候,即便一時遇到挫折了,也不要氣餒,多總結方法,持續提升。刷題這件事情給個人挫敗感是很是高的,中間是一度放棄了好久,可是當我想明白這道坎是必定要過的時候,就下定了決心必定要攻克這道難關,持續總結方法,持續進步。最後歡迎關注個人我的公衆號:ModifyAI