🗺️ 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:

  1. Pattern Recognition — Đọc đề → nhận diện signal words → biết ngay template nào dùng
  2. Complexity Intuition — Nhìn constraint () → biết ngay hay tốt hơn
  3. 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ủ đềFileStatusĐộ khó
01Complexity Analysis & Array01-Complexity-and-Array[ ]⭐⭐
02Linked List & Dummy Node02-Linked-List-Dummy-Node[ ]⭐⭐
03Stack & Queue03-Stack-and-Queue[ ]⭐⭐
04Recursion & Backtracking04-Recursion-and-Backtracking[ ]⭐⭐⭐
05Binary Search (Lower/Upper Bound)05-Binary-Search[ ]⭐⭐⭐
06Sorting: Merge & Quick06-Sorting-Merge-Quick[ ]⭐⭐⭐
07Hash Table07-Hash-Table[ ]⭐⭐
08Tree: DFS & BFS08-Tree-DFS-BFS[ ]⭐⭐⭐
09Graph: DFS & BFS09-Graph-DFS-BFS[ ]⭐⭐⭐
10Heap / Priority Queue10-Heap[ ]⭐⭐⭐
11Practice Round 111-Practice-Big-Tech-1[ ]Mixed
12Practice Round 2 + Mock12-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ủ đềFileStatusĐộ khó
01Two Pointers & Sliding Window01-Two-Pointers-Sliding-Window[ ]⭐⭐⭐
02Bit Manipulation02-Bit-Manipulation[ ]⭐⭐⭐
03Monotonic Stack & Queue03-Monotonic-Stack-Queue[ ]⭐⭐⭐⭐
04Advanced Binary Search04-Advanced-Binary-Search[ ]⭐⭐⭐⭐
05Divide & Conquer05-Divide-and-Conquer[ ]⭐⭐⭐
06String Matching: Rolling Hash & Trie06-String-Matching-Trie[ ]⭐⭐⭐⭐
07Union Find (Disjoint Set)07-Union-Find[ ]⭐⭐⭐
08Weighted Graphs: Dijkstra & Bellman-Ford08-Weighted-Graphs[ ]⭐⭐⭐⭐
09Dynamic Programming (Top-down/Bottom-up)09-Dynamic-Programming[ ]⭐⭐⭐⭐
10Advanced DP: Bitmask, Digit, Tree DP10-Advanced-DP[ ]⭐⭐⭐⭐⭐
11Segment Tree & Lazy Propagation11-Segment-Tree[ ]⭐⭐⭐⭐⭐
12Mock Interview 112-Practice-FAANG-1[ ]Mixed
13Mock Interview 213-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 đềPatternComplexity 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 ProgrammingVaries
”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 ComplexityTypical 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


Last updated: 2026-03 | Track: fsecourse.com FAANG Program