LongCut logo

AI 時代刷題還有用?10 個月從零開始刷 LeetCode到 AWS Offer 完整攻略

By Nollie Chen

Summary

Topics Covered

  • AI時代刷LeetCode更重要
  • 即時學習取代預防學習
  • UMPIRE框架統治面試
  • 精刷間隔重複勝狂刷

Full Transcript

2025 年了 我們還需要刷 LeetCode 嗎 嗨大家好 我是 Nollie 目前在 美國 AWS 總部擔任軟體工程師 今天拍這個影片 想跟大家分享 2025 年 我們應該要 如何準備 Coding interview 更重要的是 不會在面試中 被面試官認為 我們在用 AI 作弊 如果你正在準備軟體工程師面試 或是剛開始零基礎 不知道從哪裡開始

這支影片一定要看到最後 我會分享我 不到一年 從完全不會寫 code 到拿到 Amazon offer 的完整路徑 同時也會分享 2025 年的最新遊戲規則 首先我們來聊聊 為什麼 2025 年 刷題變得更重要了 我知道很多人會想 現在 AI 這麼強 ChatGPT Claude、Copilot 都能寫 code 為什麼我還要刷 LeetCode

然而正是因為 AI 工具的普及 Coding interview 在 202 5年反而更重要了 理由有三點 第一點 其實公司知道你會用 AI 比方說 Meta、Google、Amazon 這幾年都有在更新 他們的面試流程 現在面試 不只考你 會不會寫 code 更考你為什麼這樣寫 面試官會故意問你 為什麼用這個資料結構 為什麼用這個演算法 有沒有其他更好的做法 那如果你只會背答案

或者是 prompting 然後要在那邊等很久 基本上過不了面試 第二個原因是 OA 的變態化趨勢 過去兩年 很多公司開始引進 AI 偵測系統 舉例 HackerRank、CodeSignal 這幾年來都有 Behavioral analytics 他們會追蹤你的 打字速度 思考時間 甚至是你的滑鼠移動軌跡 甚至是你的滑鼠移動軌跡 那如果你 OA 表現太完美 速度太快 很容易就會被 AI flag 第三點則是大家都知道的

競爭更激烈了 因為現在大家都能夠用 AI 輔助學習 其實入門的門檻降低很多 這代表投簡歷的人其實比過去更多 但說實話 這個市場的 headcount 並沒有增加 甚至還在減少 那也因此 公司就會用更高的篩選 去篩出他們想要的人才 所以你看 刷 LeetCode 其實不是在跟 AI 競爭 反而是證明 那好消息是

有了 AI 其實大家學習的速度都變快了 以零經驗轉碼的同學來說 要怎麼開始刷題呢 我想先講一下我的血淚史 2023 年 5 月 我是一個 完全不會寫code的文組人 我說的不會寫是真的 連 hello world 我都要 google 的那種程度 但我知道如果要在美國 找 software engineer 實習 我肯定逃不過 coding interview

於是我給了我自己一個目標 要在開學前把基礎打好 那零基礎要怎麼開始呢 第一步 我們要學會基礎語法 這邊很多人會卡住 會覺得要先把程式語言學好 學到精熟才可以開始刷題 然後就陷入了一個 看教學影片的 比方說看 Java 教學影片 覺得還不夠 又去看了演算法 又去看了資料結構 然後看了一圈 一個月過後 還是沒開始刷題

因為 永遠學不完 永遠覺得自己 還沒準備好 那我完全理解這種心情 因為開始動手做 你就會覺得自己很笨嘛 怎麼這個也不會 那個也不會 但是一直在看影片 反而會讓你覺得 我有在學東西 這是一個假象 比方說我們想學游泳好了 你看一百個小時的游泳教學影片 並不會教你怎麼游 與其如此 不如就是學一點 基本的換氣划水

然後真的下泳池 才能夠幫助我真的學會這項技能 那我想要分享一下 我當初的做法 我當初刷我的第一題 LeetCode Two Sum 的時候 看到題目想說 不就是加在一起嗎 然後看了解答發現 其實可以用 Hash map 但我完全不懂 Python Dictionary 是怎麼用的 我就去網路上查應該怎麼做 然後理解 隔天再重新寫一遍 就發現

我會記得怎麼用 Python Dictionary 用這樣子的方式 從做中學 這種方法我們把它叫做 Just-in-time Learning(即時學習) 它比 just in case 的預防性學習 效果來得有效很多 那學跟做的比例 儘量根據科學研究 就是做 3:7 所以在這邊我鼓勵大家 如果還沒有開始 就隨便在 YouTube 上面找一個 30 分鐘、1 個小時的

Python 入門影片 把基本的語法學好以後 就可以直接開始刷題了 那接下來第二步 我們要做的是建立 刷題的知識體系 假設你已經學會基本語法了 接下來我們就是要建立一個系統 去有效的刷題 而不是亂槍打鳥 那這邊跟大家介紹四個 我的黃金組合 第一個是 Grind 75 的 Cheatsheet 這個網站完全就是我的救命恩人

我超級推薦 首先第一點是它按照 priority 去排序 告訴你應該學習哪些資料結構 再來它有 非常完整的學習指南 包含說每個資料結構的介紹 和使用場景 優缺點的分析 Time Complexity 的表格 以及它有搭配的 推薦練習題 那這個網站超讚 是因為它就是針對 Coding interview 去設計 所以你不會學你用不到的東西

那我的使用方法 就是會到這個網站上 依據重要度的排序 從最重要的開始學 那前面有提到 3:7 的比例 也就是說我看完這個 cheatsheet 我可能比方 Two pointers 底下有三個常見的解法 我看完第一個解法的時候 我就先去找 相對應的題目來做 然後再看第二個解法 再去找相對應的題目來做 那中間如果遇到 我覺得不夠清楚的地方

我就再根據我的那個弱點去做加強 這樣子學習起來我覺得是更有效率 我的第二份學習資源 這大部分人應該都有用到的 NeetCode150 這 150 題是 Blind 75 的加強版 它基本上涵蓋了所有大廠的高頻題 每一題都有 影片解說 還有圖解 有動畫 有視覺化的講解 超級新手友善 那大家在刷的時候 可以按照它 Roadmap 的順序刷

邏輯會比較連貫 那我當初刷題的時候 第一遍通常我就是當做學習 如果五分鐘內我沒有想出解法 我就會直接去看 LeetCode 討論區 或者是在這個 NeetCode150 本人的影片裡面 看他提供的思路講解 那通常他都會先從 暴力解開始寫到最優解 所以中間可以學很多 看完一樣回到前面講的3:7 就把影片關掉

然後再重新自己寫一次 看能不能寫出來 如果還是寫不出來 就是再回去把你覺得你學會 但其實還沒有的觀念補齊 那如果學好的話 就是過幾天之後再來寫一次 才確定自己真的 不是短暫的記憶 去背的這個題目 而是真的有理解 第三個 我特別推薦的是山景城一姐的頻道 這個頻道我真的超級推薦 超級新手友善 這個 Youtuber

他本人也是轉碼背景 也因此他在解釋一些 複雜概念的算法 資料結構的時候 特別的有邏輯 特別的好懂 有時候我看 NeetCode 的影片 他其實 思考還蠻快的 然後沒辦法理解的時候 我就會去看類似的影片 山景城一姐有沒有拍過 通常就是 一看就會瞬間秒懂 在這邊推薦給大家 那我的最後一個常用工具 其實就是 手寫筆記 一點都不 fancy 對吧

但其實根據研究發現 手寫其實是能夠更幫助人類 還有學習任何東西 除此之外 其實疫情前的面試 大家都是去公司寫白板題 由於現在 GenAI 的發展 我們其實不確定 未來公司會不會把面試 就是實體面試加回去 這也算是一個提前準備 那我自己的筆記 主要就是用我的 iPad 記錄 內容包含說

資料結構的視覺化圖解 演算法的執行步驟 題目的思考框架 比方說 為什麼第一次會寫錯 或寫下一些 corner cases 還有一些注意事項 以及常見的模板和套路 尤其是一開始什麼都還不會的時候 手寫筆記真的特別有幫助 因為有時候打字太快 你覺得自己懂了 但是手寫的時候 會幫助你在一步一步的思考 然後你就會發現哦

其實還有很多東西不小心 miss 我自己用的 APP 是 Goodnotes 但其實 這些很常用的都很好 選一個你喜歡的就行 第三步 我們要做的就是 培養正確的刷題型 我知道很多人第一次寫 LeetCode 會超級挫折 就是剛打開然後覺得 看得懂題目 但完全不知道從哪裡開始寫 然後開始懷疑我 是不是適合當軟體工程師的料 我要告訴你 這完全正常

第一次就能夠靠自己 把 LeetCode 秒解的人 是少數的奇才 這個階段我們要記得 就是我們在 學習別人的思考方式 因為我們是菜鳥 所以所見所聞都是機會 那由於學習的效果通常不是一個線性 而是一個指數成長 你可能在學前五十題的時候都覺得 我還是一團糟 什麼都看不懂 但是在八十題的時候就突然豁然開朗

至於那個題數到底多寡 有時候仰賴天分 有時候仰賴努力 有時候仰賴你在學習的過程中 是不是真正的有理解 總歸一句 就是不要氣餒 你的大腦正在學一個新的東西 它在建立新的神經連線 這需要時間的 就像你蓋房子 你打地基 打了半天 看不出來房子到底長怎麼樣 但是等地基都打好 最後把房子蓋起來的速度是很快的

那我們現在學會基本語法 知道要怎麼刷題 也確立好正確的刷題心態了 但這樣還不夠 我們還需要一個框架 在面試的時候 可以展現我們學過的所有東西 這就是我接下來要講的 UMPIRE 法則 UMPIRE 法則是你面試時候的 生存指南 我一開始刷題的時候 就是刷完一題刷下一題 完全沒有練習 要怎麼去用講話

呈現我腦袋裡面在想的事情 我第一次在 Wharton 社團面試 我們有個 coding interview 的時候 雖然 code 寫出來了 但是我講得一團糟 那也是這一次的經驗 我才意識到 能寫得出來 code 是一回事 能夠邊寫邊清楚解釋 又是另一回事 那這就是為什麼我們需要一個框架 UMPIRE UMPIRE 是什麼 UMPIRE stands for

很多人在面試的時候會遇到一個問題 這題好像看過 或者是寫過很多遍了 然後他們看到題目來就很興奮 就秒解 然後秒解了一堆題之後 發現最後 沒有拿到 offer 為什麼是這個原因呢 因為通常面試的時候 不管是哪一間公司 就是有幾個評分的標準 差不多就是這 4 個 包含說你的問題解決能力 你的溝通能力 你的技術能力以及測試的能力

因此在 coding interview 的環節 你能夠把你的程式碼打出來 這是基本的 這只是其中一個評分項目 如果你想要在不同的評分標準 都拿到 strong hire 就可以幫你一個大忙 那這邊我用一個題目 來帶大家看一下這六個字母的意思 首先 U Understand 就是我們要理解題目 包含說我們要提出釐清題目的問題 確保說

我們瞭解面試官真的想要的是什麼 還是用自己的話重述題目 確認雙方的瞭解一致 同時也要試著自己舉出幾個 happy path 以及 edge cases 讓面試官知道 你對於輸出還有輸入 以及整個程式代碼的要求 都有確定的理解 那這邊我們來舉例 想象一下你現在正在面試 面試官丟了一個題目給你 接下來你會做什麼呢

很多人這時候做的事情就是 安安靜靜的讀題目 但其實更好的做法是 題目一下你就可以問面試官說 我可不可以邊讀邊把題目念出來 這麼做的好處是 確保說 你跟面試官之間的溝通是 沒有阻礙的 就是你在讀的時候 面試官不會想說哦 你現在是不是在看 AI 你是不是在偷查答案 沒有 就是他可以跟著你的閱讀速度 知道你現在是進行到哪裡 讀完題目之後

我們一定要問 一定要丟出很多的 clarifying questions 去展現你的思考能力 以及你的溝通能力 以這個題目來說 我就會問說 Grid 有沒有可能是空的 有沒有 time complexity 或者 space complexity 的限制 Grid 指的是正方形 可能是長方形 還是它可能是不規則的形狀 adjacent 指的是 比方上下左右叫 adjacent 還是斜對角也可以

可不可以定義清楚 同時很多時候在面試的時候 面試官為了考你的溝通能力 他可能不會給你 太多的 test cases 所以這個階段我們要舉幾個 happy cases 然後舉幾個 edge cases 來跟面試官做討論 來展現你真的有 understand 那下一步我們要做的就是 match Match 這個階段 你要想辦法把你 過去學過的所有資料結構 還有演算法 Match 到現在這個題目

看哪些東西是可以用的 嘗試去對應到你可能之前刷過的題目 或是一些常常見到的 pattern 那這邊也是你可以賣弄學問的地方 舉例來說 這題很明顯是一個 graph 題 但如果你直接說 廣度優先搜尋(BFS) 那就太 low 了 在這邊儘可能的就是 提幾個你覺得可以做的解法 最後去分析、narrow down 為什麼你決定要用 BFS 最適合 因為首先 BFS 然後你就開始講它有幾個特性

這個過程 就可以展現你對於不同資料 結構的熟悉度 講完之後問面試官 那你覺得這樣合理嗎 還是你有其他的要求 比方你特別希望我用哪一種方式解 一樣就是 溝通要清楚 那接下來就是 plan 很多人在前面就是做完 U、M 之後 下一階段他們就開始覺得 那我就開始把程式碼打出來 而忽略這個很重要的 Plan 階段 Plan 就是做計劃

包含說你畫簡單的圖 你寫偽代碼 來說明你接下來想要寫的程式 大概的邏輯 然後帶著面試官 跟著你的偽代碼去走一遍 確認你的方法可行 那這一步很重要 第一在走一遍你整個 code 過程中 你如果發現了一些 bug 你可以提早的修復 同時也能確保 面試官對你的解法有沒有意見 說不定他會給你一些建議

確保兩個人的溝通有清楚 保證下一步不會因為思考不周 而出大錯 那接下來 implement 也就是實際的 code it out 把代碼打出來 寫的時候記得邊寫邊講 讓面試官知道你正在做什麼 那我知道邊打字邊講話 超級難 但這沒有任何的捷徑 就是只能提早開始練習 加油 那程式碼寫完之後 下一步我們要做的是 R 也就是 Review

而不是就結束 Review 的時候我們要檢查 要 Dry Run 就通常大家在面試的時候 不會給你像 LeetCode 這樣子的平臺 你可以按一下 run 它就跑 通常就是一個 text editor 所以你要用的是你 前面 understand 寫的 Happy case 還有Edge case 去帶面試官走過你的程式碼 一步一步地看說 這個程式碼到底有沒有成功 然後在這個階段也是 如果你有發現任何 bug 的話 你就可以 debug

這就是測試你 testing 能力的時候 那最後 UMPIRE 法則的 E 我們要拿來分析 總結一下 這個程式的 time complexity 以及 space complexity 時間夠的話 你可以分析一下 你目前解法的優缺點 並且補充一下在不同情況下 有沒有其他優化的空間 比方說如果今天這個 Grid 裡面的橘子 它非常的分散 它很稀疏 會怎麼解 那這大概就是

整個 UMPIRE 法則的框架 記熟這個框架 基本上 每一次寫 LeetCode 還有每一次面試 都應該要用上 UMPIRE 法則為什麼這麼有效呢 第一 他強迫你想清楚再動手 不會一開始就亂寫寫錯 第二 他幫助你展現你的溝通能力 讓面試官知道你想說什麼 第三 他幫助你建立長期的記憶 因為你真的有了解這個題目

應該怎麼分析 怎麼解而不是純粹的背答案 以及最後 他幫助你能夠應對各種不一樣的題目 就算今天這個題目沒看到 你至少有一個框架可以去 東拼西湊一些東西進來 但記住 UMPIRE 它不只是一個解題方式 它還是一個溝通的框架 面試官要看的不只是 你能不能夠解題 更重要的是你的 溝通能力 問題解決能力

以及你在壓力情況下的表現 我們來談一下 要怎麼實際的準備 coding interview 首先 刷完 Neetcode150 之後要做什麼 我的建議是 不要急著刷新題 就是刷完 150 題之後 應該要 回去再刷 150 題 然後 回去再刷 150 題 確保你這些東西真的要學會 而不是靠短暫記憶學起來 很多人會問我說

Nollie 你刷了幾題再上岸 我這邊放上我的數字 就是回答你的問題 那我要講的是 這跟上岸的結果 完全沒有因果關係 那我就會建議大家 精刷而不是狂刷新題 是有科學根據的 研究證明 Space repetition 其實是最好的學習策略 舉例來說 我第一次學會 一週後複習 一個月後再複習 每一次的複習都會去

增強我神經之間的連線 個人做法就是 NeetCode150 至少刷兩到三遍 每遍中間隔兩到四周 同時用 Excel 去記錄哪些已經熟了 哪些還不熟 那這邊給大家看個範例 就比方說 我會在這 Day 1 的部分 列上我第一次學習的日期 基本上全是白底 因為基本上全部都要重學 那這 Day 2 的部分 我一次就寫對的地方 我用綠色寫了

但是可能有一些 bug 或者有些地方沒寫完用黃色 完全忘記用紅色 那在第三次刷題 也就是 Day 3 的地方 我會再刷一次紅色、黃色的題目 那如果還是有很多紅色很多黃色 就再繼續 Day 4 Day 5,就是不斷的重刷 這樣能幫助你科學的追蹤進度 看到自己的成就 而不是自我感覺良好 或是自我感覺很不好 刷題刷的還 OK 的同時

我們也要開始練習 Speak Out Loud 練習模擬面試 這一步很多人都會忽略 但其實超級重要 因為你在面試的時候 你其實會緊張 你會結巴 你會不知道應該要怎麼解釋 你腦袋裡面想的事情 如果沒有練習的話 好不容易拿到面試機會 可能就會因此搞砸 那我自己的練習方法就是 我會用手機或者用電腦錄影 計時三十分鐘 從 Neetcode150 上面選一個題目

來做解答 解答的過程我都要練習大聲講出來 然後最後結束 我會像作文小老師給自己打分數 UMPIRE 的六個原則 我有沒有都做到 這樣子一直重複重複的練習 那一開始你可能會覺得很蠢 自己對著電腦講話到底在幹嘛 但是相信我 你一直練習一直練習 真的遇到真人面試的時候 才不會緊張 那第二個方法 是我比較建議的方法是

大家可以去找真人練習 比方說 系上的學長姐 你的同學 或者是你正在上課的TA 或者是 用 Exponent 練習模擬面試 你可以在上面自動的去配對 跟你程度相近 或者是面試主題是一樣的夥伴 或者是面試主題是一樣的夥伴 然後互相當對方的面試官 還有 candidate 比方說 Coding interview Behavioral question System design 各種題型都可以面試 那重點是 我覺得跟真人面試

相對於自己錄影 或者是第三種方法 大家可能會用 AI 練習 來的更有臨場感 那有時候 你也可以得到 比較直接的反饋 同時你也可以觀察 中間你拋出了什麼答案 對方給你什麼回答的那個拋接 我覺得那個也是需要練習的 不要覺得害怕 不要覺得說很丟臉 如果講不好應該怎麼辦 大家都是這麼過來的 那最後 我來快速回答一下大家的常見問題 首先

該用什麼語言刷題 大部分的人 其實用 Python 就好了 主要 Python 的語法最簡潔 學習的曲線相對平緩 還有超多的 built-in functions 就是可以在你解題的時候 幫你省很多時間 那通常我會建議就是 大家刷題用一個語言 但是寫 project 的時候 用其他語言是沒有關係的 如果你有非常明確的職涯目標 比方你想進遊戲業 那你可能要用 C++ 去刷題

再來如果時間超級有限 應該先刷哪些 如果你只剩下一到兩個月就要面試 一定要刷 Grind 75 公司高頻題 你可以在 LeetCode 裡面的 Company tag 裡面看到 會建議先刷 Medium 為主 再來 Easy 然後hard 如果程度不到的話就先放棄 但最好情況 其實就是 你知道你未來會有這些面試 會有這些機會 應該要提早準備 而不是 快要面試了才開始想該怎麼辦

第三題是 需要買 LeetCode Premium 嗎 我自己是有買的 但是我是在黑五的時候 那種團購活動 一年 99 美金的時候一起買的 買的有幾個好處 包含說你可以看公司 tag 題目 你可以看官方的詳解 一些詳細的教學影片 同時 LeetCode 也有一些教材 可以當做你的補充學習資訊 那再來有沒有需要打週賽 我覺得完全不需要

如果是想要拿公司的 offer 只需要專注刷高頻題 還有準備模擬面試就夠了 最後 AI 應該怎麼用 我的答案是 絕對不是在面試過程中用 AI AI 應該是一個助教 而不是你的答案提詞機 自己覺得 AI 最好用的時候 就是在練習 UMPIRE 法則的時候 因為我們有很明顯的 六個步驟要去完成 比方說第一步的 understand 我要問問題

有時候看到某些題目 真的不知道哪些釐清問題可以問 我就會讓 AI 去做這件事情 然後學習它的思路 下一次看到類似題目的時候 我就會知道哪些問題可以問 我自己寫完 我自己 Debug 完的程式碼 有時候我也會讓 AI 去幫我分析說 還有沒有優化的空間 以及對一下答案 我自己寫的時間複雜度 空間複雜度跟他寫的一不一樣 那我自己在幫大家模擬面試的時候

其實有的時候有些人 看稿或是看 AI 從面試官 也就是我的角度來看 非常明顯的 AI 答案都非常 general 嘛 他可能問了 100 個人 其中有用 AI 的 50 個人 答案都會差不多 所以真的 不要在面試中用 AI 非常容易露餡 那最後來跟大家做個總結 我知道很多人會想 現在市場不是很糟糕 不是都沒有面試 為什麼還要刷 LeetCode 那我想說的是

正是因為這個市場 非常的競爭激烈 你的準備充足 反而會讓你脫穎而出 目前如果還沒有面試 有面試都沒關係 平常的努力是很重要的 日常的累積 能夠幫助你在機會來臨的時候 好好把握 不會錯過 那如果你現在正在準備 coding interview 準備的很痛苦 我想要告訴你 你並不孤單 全世界有幾萬人

每天一開啟 LeetCode 都在懷疑自己適不適合走這條路 我也曾經經歷過那些 就是看到題目 我就想放棄的時候 但是我相信天道酬勤 刷題這段經歷 其實會讓你變得更會思考 更能解決問題 這些能力是會跟著你一輩子的 那如果這支影片對你很有幫助 記得幫我按讚訂閱分享

我會持續的分享我在北美求職 刷題、找工作的一些Tips 心得 或者是一些科技業所見所聞 那如果任何刷題相關的問題 或者是想看什麼樣的影片 都可以在留言區告訴我 祝福大家在找工作這件事情上面 一切順利 那我們下次見嘍拜拜

Loading...

Loading video analysis...