前言
許多人都知道,大公司很喜歡考資料結構與演算法(Data Structures & Algorithms,簡稱 DSA),所以大家都為了應付面試而刷題。考刷題一直被詬病沒有鑑別度,許多工程師也認為工作上用不到,再加上近幾年因為 AI 工具的盛行,又有更多人覺得刷題沒有意義。
不過有一說一,身為軟體工程師,我認為了解 DSA 還是滿有幫助的,讓人在工作中自然思考如何讓效能最佳化。
而且現實情況是,現在仍有許多公司採用 DSA 來當作面試內容,所以各位再怎麼不願意,想獲得更多機會,踏實學習資料結構與演算法,然後刷題刷好刷滿還是必須的。
身為一個非 CS 科系背景的人,剛開始刷題遇到許多障礙,更不用說前端工程師熟練的程式語言 JavaScript,一直都不是刷題的主流。因此,我的筆記主要會從前端工程師的角度出發,和大家分享學習演算法與資料結構的心得。
提示
強烈建議前端工程師直接學習 Python 並用它來刷題
建議利用 Python 刷題的原因如下:
- JavaScript 缺乏很多相關功能,例如常見的資料結構 heap,在 js 裡沒有但 Python 有內建模組
- 在網路上討論刷題,Python 絕對是最常見的語言,如果你和其他領域工程師討論刷題,py 可以當成共通語言
- Python 寫法很簡單, 和 js 比起來是事半功倍
- 大多數公司的 coding 面試關卡,不會限定你用哪個語言
- 刷題是長期抗戰,如果你對解題不感興趣,那刷題絕對是枯燥乏味的事情,盡量簡化這件事才能持續刷題
如果你的目的是為了熟悉某一種程式語言,那麼用該語言刷題會比較恰當,但是以練習 DSA 為目的,那建議就用 Python 吧!
預備知識
接下來的筆記內容會有實際的程式碼,至少熟悉 JavaScript 或是 Python 比較好。