# 🚀 Golang 零經驗轉職:五個月衝刺計畫(Junior 面試強化版) ## 🎯 總體時程概覽 | 📅 期間 | 階段名稱 | 重點技術棧 | 學習重點與面試準備 | | :--- | :--- | :--- | :--- | | **1 月** | **語法奠基期** | Go 基礎、**Pointer**、Struct、**Interface**、Git | **重點:** 建立強型別思維,理解「記憶體位置」與「介面解耦」。<br>**面試必考:** 能口述「值傳遞 vs 指標傳遞」的差異與應用場景。 | | **2 月** | **Web 實戰期** | HTTP/REST、SQL、**Gin**、**GORM**、**JWT** | **重點:** 完成具備會員登入與權限驗證的 **RESTful API 專案**。<br>**面試必考:** 理解 HTTP 狀態碼、Middleware 運作原理與資料庫 CRUD。 | | **3 月** | **架構與併發** | **Clean Architecture**、Unit Test、**Goroutine**、Channel | **重點:** 將專案重構為乾淨架構,學習撰寫測試並加入併發任務。<br>**面試必考:** 為什麼要用 Interface 做測試 Mock?如何避免 Deadlock? | | **4 月** | **面試特訓期** | **Redis**、**Docker**、**DSA (演算法)**、Mock Interview | **重點:** 加上快取優化與容器化部署。大量練習 LeetCode Easy/Medium。<br>**面試必考:** Redis 常見場景、Docker 基礎指令、演算法邏輯說明。 | | **5 月** | **正式衝刺期** | 投遞履歷、技術面談、複盤修正 | **重點:** 針對面試遇到的弱點快速補強,保持手感並持續滾動修正。 | --- ## ✅ 詳細里程碑與面試準備清單 ### 📚 階段一:語法奠基 (1 月) * [x] **T1.1** 環境安裝與 `go mod` 模組管理。 * [x] **T1.2** 掌握基礎:變數宣告、迴圈 (Go 只有 for)、判斷式。 * [x] **T1.3** **核心重點:** 深入理解 **Slice** 的底層擴容機制(len vs cap)。 * [x] **T1.4** **核心重點:** 搞懂 **Pointer (指標)**,知道什麼時候該傳位址。 * [ ] **T1.5** 學習 **Interface**:理解如何透過介面達成多型與解耦。 * [ ] **T1.6** 實作一個 CLI 版的小工具(如:匯率換算器或文件掃描器)。 ### 💻 階段二:Web 實戰與認證 (2 月) * [ ] **T2.1** 學習 HTTP 基礎(Method, Header, Status Code)。 (2/2~8) * [ ] **T2.2** 掌握 **Gin 框架**:路由 Grouping、參數綁定 (Binding)。 (2/9~22) * [ ] **T2.3** 掌握 **GORM**:Model 定義、AutoMigrate、關聯查詢 (Preload)。 * [ ] **T2.4** **求職關鍵:** 實作 **JWT (JSON Web Token)** 登入驗證與 Middleware。 (2/23~25) * [ ] **T2.5** **專案實作:** 完成一個「電商後台 API」或「個人部落格系統」。 2/26~ ### 🏗️ 階段三:架構、併發與測試 (3 月) * [ ] **T3.1** **架構升級:** 學習 **Clean Architecture**(將邏輯拆分為 Repository, Usecase, Handler)。 * [ ] **T3.2** **併發實作:** 使用 Goroutine + Channel 處理非同步任務(如:註冊後發送電子郵件)。 * [ ] **T3.3** **品質保證:** 使用 Go 內建 `testing` 套件撰寫單元測試。 * [ ] **T3.4** 掌握 Context:學習如何正確控制超時 (Timeout) 與取消訊號。 ### 📈 階段四:效能優化與面試衝刺 (4 月) * [ ] **T4.1** **效能加分:** 引入 **Redis** 實作快取機制 (Cache Aside Pattern)。 * [ ] **T4.2** **部署基礎:** 撰寫 `Dockerfile` 與 `docker-compose.yml`。 * [ ] **T4.3** **演算法練習:** 每天 1-2 題 LeetCode (重點:Array, Hash Map, String)。 * [ ] **T4.4** **面試模擬:** 準備自我介紹、轉職動機、專案技術挑戰 (S.T.A.R. 原則)。 --- ## 💡 給 Junior 的面試錦囊 1. **不要只會寫 Code:** 必須能解釋「為什麼這樣寫」。 2. **注重風格:** 程式碼要符合 `gofmt` 規範,變數命名要精確。 3. **基礎要穩:** 對於零經驗者,面試官更看重你對 HTTP、資料庫索引、記憶體概念的基本功。