(轉發) Data structure 和Algorithm 重要性
基礎知識就像是一座大樓的地基,它決定了我們的技術高度。要想快速做出點事情,前提條件一定是基礎能力過硬,"內功"要到位。
技術人究竟都需要修煉哪些"內功"呢?我覺得,無外乎就是大學裡的那些基礎課程,操作系統、計算機網絡、編譯原理等等,當然還有數據結構和算法。
數據結構和算法如何應用到實際的編碼中?
為什麼需要這種數據結構和算法?
捋清它們背後的設計思想,培養你舉一反三的能力。
從四個階段學習:
(1) 時間、空間複雜度分析是數據結構和算法中非常重要的知識點,貫穿整個學習過程。但同時也是比較難掌握的,需要真正能掌握複雜度分析,為後面的學習鋪路。掌握時間、空間複雜度的概念,大 O 表示法的由來,各種複雜度分析技巧,以及最好、最壞、平均、均攤複雜度分析方法。之後,面對任何代碼的複雜度分析,你都能游刃有餘、毫不畏懼!
(2) 最基礎、最常用的數據結構和算法,這個也需要重點掌握。針對每種數據結構和算法,結合具體的軟件開發實例運用;比如遞歸,為什麼遞歸代碼比較難寫?如何避免堆棧溢出?如何避免遞歸冗余計算?如何將遞歸代碼轉化為非遞歸代碼?
(3) 學習一些不是那麼常用的數據結構和算法。雖然不常用,但是這些內容你也需要知道。設置這一部分的目的,是為了讓你開拓視野,強化訓練算法思維、邏輯思維。如果說學完基礎部分可以考 80 分,那掌握這一部分就能讓你成為尖子生!
(4) 數據結構和算法在具體軟件實踐中的應用,拿一些開源項目、框架或者系統設計問題,剖析它們背後的數據結構和算法,對於我們技術人來說,更是這樣。既然數據結構和算法這個坎,我們總歸是要跨過去;
#為什麼要學習數據結構和算法
數據結構和算法,跟操作系統、計算機網絡等基礎知識,在實際開發中非常重要,對於我們分析問題解決問題、學習框架、實現需求非常重要。
不容易掌握的知識,就是你區別於其他普通程序員的能力,工作中、簡歷上要看到能力的提升和成長,年齡不是限制從業,而是能力限制了你!
#想要通關大廠面試千萬別讓數據結構和算法拖了後腿
面試的時候都喜歡考算法、讓人現場寫代碼。有些人雖然技術不錯,但每次去面試都會"跪"在算法上,很是可惜。那你有沒有想過,為什麼這些大公司都喜歡考算法呢?
校招的時候,參加面試的學生通常沒有實際項目經驗,公司只能考察他們的基礎知識是否牢固。社招就更不用說了,越是厲害的公司,越是注重考察數據結構與算法這類基礎知識。相比短期能力,他們更看中你的長期潛力。
你可能要說了,我不懂數據結構與算法,照樣找到了好工作啊。那我是不是就不用學數據結構和算法呢?當然不是,你別忘了,我們學任何知識都是為了"用"的,是為了解決實際工作問題的,學習數據結構和算法自然也不例外。
...