Cách học DSA hiệu quả
Một cách học DSA (thuật toán & cấu trúc dữ liệu) để không học vẹt, không quên ngay sau một tuần, và luôn biết mình đang ở đâu. Bài này không có code — nó là bản đồ cho toàn bộ hành trình phía trước, đọc một lần rồi quay lại khi thấy nản.
1. Vì sao DSA "đọc hiểu rồi mà vẫn không làm được"?
Đây là cái bẫy lớn nhất. Bạn đọc một lời giải hay, gật gù "à, đơn giản mà", thấy mình hiểu rồi. Nhưng hôm sau gặp bài na ná, bạn ngồi nhìn màn hình trống rỗng, không biết bắt đầu từ đâu.
Cảm giác "hiểu" khi đọc lời giải là ảo giác. Đọc và nhận ra một con đường khác hoàn toàn với việc tự tìm ra con đường đó. Giống xem người ta bơi: bạn thấy rõ từng động tác, hiểu hết — nhưng nhảy xuống nước thì vẫn chìm. DSA là kỹ năng vận động của tư duy, không phải kiến thức để thuộc. Kỹ năng chỉ lên khi tự tay vật lộn nhiều lần.
Thước đo bạn đã học được chưa: không phải "đọc có hiểu không", mà là "đóng lời giải lại, tự viết được từ đầu không".
2. Ba giai đoạn học (làm gì ở mỗi giai đoạn)
GĐ1 — HIỂU GĐ2 — LUYỆN GĐ3 — HỆ THỐNG
Nắm khái niệm qua → Tự giải nhiều bài, → Nối các mảnh kiến thức
hình động + ví dụ lặp lại ngắt quãng thành bản đồ tư duy
trực quan (để nhớ lâu) (nhìn bài là nhận ra mẫu)
GĐ1 — Hiểu (đừng vội code). Xem hình động, ví dụ cụ thể nhỏ, vẽ ra giấy từng bước. Mục tiêu không phải nhớ code, mà trả lời được: tại sao thu ật toán này đúng? và nó ăn gian được ở đâu để nhanh?. Mỗi bài trên trang này mở đầu bằng phần "Trực quan" cho đúng việc này.
GĐ2 — Luyện (phần chiếm 80% thời gian). Tự giải bài. Nhiều. Quy tắc vàng: vật lộn ít nhất 15-20 phút trước khi xem gợi ý; xem lời giải đầy đủ là phương án cuối. Sau khi xem lời giải, đóng lại và tự gõ lại từ đầu — đây là bước hầu hết mọi người bỏ qua, và là bước quan trọng nhất.
GĐ3 — Hệ thống. Khi đã giải đủ, một điều kỳ diệu xảy ra: bạn bắt đầu nhận ra mẫu. "À, bài này là dạng hai con trỏ", "cái này quy hoạch động". Lúc đó kiến thức rời rạc kết thành bản đồ, và bạn giải bài mới nhanh hơn nhiều. Trụ 4 (Mẫu giải bài) dành riêng cho giai đoạn này.
3. Vì sao bạn quên — và cách chống quên
Não quên theo đường cong quên Ebbinghaus: học xong, trí nhớ rơi rất nhanh trong vài ngày đầu nếu không ôn lại.
Trí nhớ
100% │\
│ \____ ← học 1 lần rồi bỏ: quên gần hết sau 1 tuần
│ \______
│
100% │\ \ \ \ ← ôn lại đúng lúc: đường cong phẳng dần,
│ \_ \_ \__ \ nhớ ngày càng lâu
└──────────────────▶ thời gian
↑ ↑ ↑ ↑
học ôn1 ôn2 ôn3
Cách chống: lặp ngắt quãng (spaced repetition) — ôn lại một chủ đề theo lịch giãn dần:
| Lần ôn | Sau khi học |
|---|---|
| Lần 1 | 1 ngày |
| Lần 2 | 3 ngày |
| Lần 3 | 1 tuần |
| Lần 4 | 1 tháng |
Mỗi lần ôn, đường cong quên phẳng ra một chút, kiến thức bám lâu hơn. Đây cũng là cách hello-algo khuyên học.
Mỗi bài có nút đánh dấu hoàn thành (lưu vào trình duyệt). Đừng học một mạch rồi bỏ — hãy quay lại ôn các bài đã tick theo lịch trên. Phần 8 dưới đây có trò chơi nhỏ để tự kiểm.
4. Vòng lặp tự học cho MỘT chủ đề
Áp dụng cho mỗi bài học:
1. Đọc phần Trực quan + Khái niệm → hiểu Ý TƯỞNG
2. Xem code mẫu, CHẠY THỬ → thấy nó ho ạt động
3. Đóng lại, TỰ GÕ LẠI không nhìn → biến hiểu thành kỹ năng
4. Làm 2-3 bài luyện → gặp biến thể
5. 1 tuần sau, quay lại ôn → chống quên
Bước 3 là bước "đau" nhất và cũng giá trị nhất. Nếu tự gõ lại được mà không nhìn, bạn thật sự đã sở hữu nó.
5. Bốn lỗi học tập kinh điển
- Đọc lời giải quá sớm. Não chỉ ghi nhớ sâu khi đã cố gắng. Xem lời giải khi chưa vật lộn = học hộ cho cảm giác, không cho kỹ năng. → Đặt hẹn giờ 15 phút trước khi cho phép mình xem gợi ý.
- Học thuộc code. Code sẽ quên sau một tuần; ý tưởng và mẫu nhận diện thì ở lại. → Hỏi "tại sao" thay vì "viết thế nào".
- Nhảy cóc nền tảng. Bỏ qua Big-O, đệ quy rồi lao vào thuật toán nâng cao → hổng kiến thức, nản, bỏ cuộc. → Theo đúng thứ tự 5 trụ, tôn trọng cột tiên quyết ở mỗi bài.
- Học bị động. Chỉ xem video/đọc mà không tự gõ, tự chạy. → Luôn mở phần code chạy thật và nghịch: đổi số, làm hỏng, xem lỗi.
6. Kỳ vọng thực tế (đọc khi thấy nản)
Bí một bài là chuyện bình thường, kể cả người giỏi. Cảm giác "mình ngu quá" khi nhìn bài khó là một phần của quá trình, không phải dấu hiệu bạn không hợp. Tiến bộ trong DSA không tuyến tính: nhiều tuần thấy giậm chân, rồi đột nhiên "thông" một loạt. Cứ giải đều, đừng so sánh tốc độ với người khác. Bền hơn nhanh.
7. Lộ trình trang này — 5 trụ cột
Học theo đúng thứ tự:
- Nền tảng (bạn đang ở đây) — Big-O, đệ quy.
- Cấu trúc dữ liệu — mảng, danh sách liên kết, cây, đồ thị...
- Thuật toán — sắp xếp, tìm kiếm, quy hoạch động...
- Mẫu giải bài — two pointers, sliding window... (giai đoạn "hệ thống").
- Luyện thi phỏng vấn.
8. 🎮 Trò chơi: Học đúng hay học sai?
Mỗi câu là một thói quen học. Chọn xem nên làm hay nên tránh:
9. Hoàn thành
…☑️ Đánh dấu hoàn thành để lưu tiến độ. Tiếp theo: 1.1.2 — Thuật toán là gì?