JavaScript Algorithms and Data Structures Masterclass 是為軟體工程師面試開設的演算法教學課程,由 Udemy 上教學 網頁程式設計 著名的講師 Colt Steele 開設,擁有 4.7 顆星以上的超高評價!
為了複習很久沒練習的演算法、同時進一步學習 JavaScript,我完成了這門課,在這則筆記記錄我的課程心得。
課程內容#
包含超過 20 小時的影片教學,還有超過 80 題程式練習題,我認為分量剛好足以入門演算法,而且不會講太刁鑽、或者面試題太少考到的內容。
涵蓋的主題,都是資料結構與演算法的必備基礎,包括:
- Big-O Notation
- 各種排序:Bubble, Selection, Insertion, Quick, Merge, Radix Sort
- 線性結構:Linked List, Stack, Queue
- 樹:Binary Heap, Tree Traversal
- 圖論:DFS, BFS, Dijkstra’s 最短路徑演算法
- Dynamic Programming
雖說都是必備基礎,不夠熟悉這些主題的話、依然很容易忘記,建議善用 間隔重複法 來幫助記憶:每隔一段時間就複習教材、測試自己是否有記好解題流程與時間複雜度。也可以把演算法的書(例如 演算法圖鑑)放在手邊、或者把好用的 VisuAlgo 網站 加入書籤,提高自己複習的頻率、強化記憶。
課程特色:三步驟教學#
1. 解決問題#
在第一步驟,講師會說明為什麼要學這個演算法、問題的核心困難點、並且用動畫清楚地介紹解題流程。在這個階段,釐清脈絡後最重要的成品就是 Pseudo Code。
講師強調,面對演算法面試題,只要你能順利向面試官說明你的解決問題流程,就算你寫的程式語法不完全對,也有機會順利過關。因此,釐清思緒、並寫好 Pseudo Code,是非常重要的環節。
如果你對這門課所介紹的解題流程有興趣,可以參考好豪的另一則筆記:Code Interview 解題原則。
2. 寫程式#
只要釐清了思緒,寫程式階段就像填空一樣,將 Pseudo Code 用程式語法實現就好。講師寫的 JavaScript 語法不是追求最乾淨的程式碼、而是選擇直白的寫法,所以程式碼相當好懂。
Colt Steele 的解題法:寫好 Pseudo Code,再補上程式碼(Source: Colt Steele 的演算法課程)
3. 比較複雜度#
講師不只會講一種解題法,所以需要比較時間與空間複雜度,了解各個方法優劣勢為何,這也幾乎是演算法面試必問題。
適合哪些人?#
我建議開始這門課之前,需要有寫過任何一種程式語言的經驗、不限定是 JavaScript,至少要知道 loop、function、return 是什麼。
(如果真的沒有程式基礎,freeCodeCamp 是個免費又好用的初學資源)
資料結構與演算法初學者#
這門課的內容是最基礎的演算法,只要你對資料結構與演算法有興趣,不需要任何數學先備知識、可以馬上開始上課。
在找尋大量習題的 JavaScript 學習者#
課程中附上的 JavaScript 習題,都是跟課程提到的演算法直接相關的,在看完一章節的影片之後、馬上動手寫相關主題的習題,會有更好的學習效果。而且習題難度適中,只要有看懂影片,解題就不會太難。
想快速複習 Coding Interview 的求職者#
這門課是為了軟體工程師面試而設計的,內容十分精簡,就算你在學校學過演算法,這門課也適合快速複習觀念。或者運用剛剛提到的「三步驟教學」特色,如果你已經有點演算法基礎了,就在學習過程中好好思考:究竟自己還沒搞懂的是哪個部分?解決問題(Pseudo Code)、程式語法本身、還是時間/空間複雜度?
我不懂 JavaScript,還適合上這門課嗎?#
當然可以!這門課雖然都是用 JavaScript 來講解,但是並沒有使用複雜的語法(例如 ES6),只要你學過任何一個程式語言,花個幾分鐘快速看一下 JS 語法,肯定能看懂課程內容。
如果你愛的是 Python…#
我在上課同時,也喜歡用 Python 練習資料結構,要搭配這門課,好豪推薦一本免費的線上課本 Problem Solving with Algorithms and Data Structures using Python。課本的內容與難度都和此 Udemy 課程相近,我會看完講師 Colt Steele 的教學影片後,再來這本課本看 Python 版本的演算法寫法、也使用這裡的 Python 習題練習。
結語#
如果你想找軟體工程師工作,幾乎都少不了演算法面試題,這門 JavaScript Algorithms and Data Structures Masterclass 課程不論是初學或複習,都是很好用的教材,幫助你打好演算法基礎、寫 LeetCode 練習面試題更順利。
你喜歡線上課程自學程式設計嗎?也推薦你閱讀我的 Udemy 自學 Python Flask 後端開發心得。
如果這則筆記有幫助到你,歡迎追蹤 好豪的粉絲專頁,我會持續分享 Python 以及資料科學相關文章;也可以點選下方按鈕分享,讓更多想提升 Python 技能的朋友看到!