🗺️ Roadmap FAANG — DSA Mastery
Về tài liệu này
Đây là bản đồ toàn cảnh cho hành trình chinh phục FAANG System Design Interviews. Mọi node đều liên kết đến file chi tiết tương ứng. Cập nhật progress bằng cách thay
[ ]thành[x].
📍 Triết lý học tập
Senior Engineer Mindset
“Không phải học thuộc lòng — mà là nhận diện pattern. Mỗi bài LeetCode là một instance của một template đã biết. Nhiệm vụ của bạn: build mental model đủ mạnh để map problem → pattern → solution trong 5 phút đầu.”
3 trụ cột của FAANG DSA:
- Pattern Recognition — Đọc đề → nhận diện signal words → biết ngay template nào dùng
- Complexity Intuition — Nhìn constraint () → biết ngay hay tốt hơn
- Code Fluency — TypeScript clean, edge-case-proof, viết được trong 20 phút
🗓️ Lộ trình 25 buổi
🏗️ Giai đoạn 1 — Big Tech Foundation (12 buổi)
flowchart TD A[🚀 Start] --> B[Buổi 1<br/>Complexity & Array] B --> C[Buổi 2<br/>Linked List] C --> D[Buổi 3<br/>Stack & Queue] D --> E[Buổi 4<br/>Recursion & Backtrack] E --> F[Buổi 5<br/>Binary Search] F --> G[Buổi 6<br/>Sorting] G --> H[Buổi 7<br/>Hash Table] H --> I[Buổi 8-9<br/>Tree & Graph DFS/BFS] I --> J[Buổi 10<br/>Heap] J --> K[Buổi 11-12<br/>Practice & Mock] K --> L[🎯 Big Tech Ready]
| # | Chủ đề | File | Status | Độ khó |
|---|---|---|---|---|
| 01 | Complexity Analysis & Array | 01-Complexity-and-Array | [ ] | ⭐⭐ |
| 02 | Linked List & Dummy Node | 02-Linked-List-Dummy-Node | [ ] | ⭐⭐ |
| 03 | Stack & Queue | 03-Stack-and-Queue | [ ] | ⭐⭐ |
| 04 | Recursion & Backtracking | 04-Recursion-and-Backtracking | [ ] | ⭐⭐⭐ |
| 05 | Binary Search (Lower/Upper Bound) | 05-Binary-Search | [ ] | ⭐⭐⭐ |
| 06 | Sorting: Merge & Quick | 06-Sorting-Merge-Quick | [ ] | ⭐⭐⭐ |
| 07 | Hash Table | 07-Hash-Table | [ ] | ⭐⭐ |
| 08 | Tree: DFS & BFS | 08-Tree-DFS-BFS | [ ] | ⭐⭐⭐ |
| 09 | Graph: DFS & BFS | 09-Graph-DFS-BFS | [ ] | ⭐⭐⭐ |
| 10 | Heap / Priority Queue | 10-Heap | [ ] | ⭐⭐⭐ |
| 11 | Practice Round 1 | 11-Practice-Big-Tech-1 | [ ] | Mixed |
| 12 | Practice Round 2 + Mock | 12-Practice-Big-Tech-2 | [ ] | Mixed |
🚀 Giai đoạn 2 — FAANG Mastery (13 buổi)
flowchart TD A[🎯 Big Tech Ready] --> B[Buổi 1<br/>Two Pointers & Sliding Window] B --> C[Buổi 2<br/>Bit Manipulation] C --> D[Buổi 3<br/>Monotonic Stack/Queue] D --> E[Buổi 4<br/>Advanced Binary Search] E --> F[Buổi 5<br/>Divide & Conquer] F --> G[Buổi 6<br/>String Matching<br/>Rolling Hash & Trie] G --> H[Buổi 7<br/>Union Find] H --> I[Buổi 8<br/>Weighted Graphs<br/>Dijkstra & Bellman-Ford] I --> J[Buổi 9<br/>DP Foundations] J --> K[Buổi 10<br/>Advanced DP<br/>Bitmask/Digit/Tree] K --> L[Buổi 11<br/>Segment Tree<br/>Lazy Propagation] L --> M[Buổi 12-13<br/>Full Mock Interviews] M --> N[🏆 FAANG Ready]
| # | Chủ đề | File | Status | Độ khó |
|---|---|---|---|---|
| 01 | Two Pointers & Sliding Window | 01-Two-Pointers-Sliding-Window | [ ] | ⭐⭐⭐ |
| 02 | Bit Manipulation | 02-Bit-Manipulation | [ ] | ⭐⭐⭐ |
| 03 | Monotonic Stack & Queue | 03-Monotonic-Stack-Queue | [ ] | ⭐⭐⭐⭐ |
| 04 | Advanced Binary Search | 04-Advanced-Binary-Search | [ ] | ⭐⭐⭐⭐ |
| 05 | Divide & Conquer | 05-Divide-and-Conquer | [ ] | ⭐⭐⭐ |
| 06 | String Matching: Rolling Hash & Trie | 06-String-Matching-Trie | [ ] | ⭐⭐⭐⭐ |
| 07 | Union Find (Disjoint Set) | 07-Union-Find | [ ] | ⭐⭐⭐ |
| 08 | Weighted Graphs: Dijkstra & Bellman-Ford | 08-Weighted-Graphs | [ ] | ⭐⭐⭐⭐ |
| 09 | Dynamic Programming (Top-down/Bottom-up) | 09-Dynamic-Programming | [ ] | ⭐⭐⭐⭐ |
| 10 | Advanced DP: Bitmask, Digit, Tree DP | 10-Advanced-DP | [ ] | ⭐⭐⭐⭐⭐ |
| 11 | Segment Tree & Lazy Propagation | 11-Segment-Tree | [ ] | ⭐⭐⭐⭐⭐ |
| 12 | Mock Interview 1 | 12-Practice-FAANG-1 | [ ] | Mixed |
| 13 | Mock Interview 2 | 13-Practice-FAANG-2 | [ ] | Mixed |
🧠 Bản đồ Pattern Recognition
Cách dùng bảng này
Khi đọc đề bài, scan qua Signal Words để map ngay vào pattern đúng.
| Signal Words trong đề | Pattern | Complexity Target |
|---|---|---|
| ”sorted array”, “find target” | Binary Search | |
| ”subarray/substring with condition” | Sliding Window | |
| ”two elements sum to X” | Two Pointers | |
| ”all permutations/combinations” | Backtracking | hoặc |
| “shortest path (unweighted)“ | BFS | |
| ”shortest path (weighted)“ | Dijkstra | |
| ”connected components”, “union groups” | Union Find | |
| ”next greater/smaller element” | Monotonic Stack | |
| ”top K elements” | Heap | |
| ”count ways”, “min/max cost” | Dynamic Programming | Varies |
| ”range query + updates” | Segment Tree | per op |
| ”prefix/suffix pattern” | Trie hoặc Rolling Hash | per lookup |
📊 Complexity Quick Reference
Xem chi tiết tại Complexity-Cheatsheet
| Constraint | Max Acceptable Complexity | Typical Algorithm |
|---|---|---|
| Brute force, permutation | ||
| Bitmask DP | ||
| Floyd-Warshall | ||
| Bubble sort, 2D DP | ||
| Merge sort, Segment Tree | ||
| Two pointers, Sliding window | ||
| Binary Search |
🎯 Interview Execution Framework
5 phút đầu là quyết định
FAANG interviewer chấm điểm ngay từ cách bạn tiếp cận bài toán, không chỉ là code cuối cùng.
Framework UMPIRE
U — Understand: Đọc kỹ, clarify ambiguity, confirm constraints
M — Match: Map to known pattern (dùng bảng Pattern Recognition ở trên)
P — Plan: Nói to approach trước khi code ("I'll use a sliding window because...")
I — Implement: Code sạch, đặt tên biến có ý nghĩa
R — Review: Walk through example, check edge cases
E — Evaluate: Phân tích Time/Space Complexity chủ động
Các câu hỏi Clarification cần hỏi ngay
- Có negative numbers không?
- Input có thể empty không?
- Có duplicates không?
- Integer có thể overflow 32-bit không? (với Java/C++ quan trọng hơn TS)
- Return gì nếu không có answer?
🔗 Quick Navigation
- Complexity-Cheatsheet — Bảng tra cứu Big O đầy đủ
- _Template-Problem — Template giải LeetCode chuẩn Senior
- 01-Complexity-and-Array — Bắt đầu hành trình
Last updated: 2026-03 | Track: fsecourse.com FAANG Program