1. Nền tảng |
Lập trình & Toán học |
- Thành thạo một ngôn ngữ lập trình (C++, Java, hoặc Python).
- Hiểu về con trỏ và quản lý bộ nhớ (đặc biệt quan trọng với C++).
- Nắm vững khái niệm đệ quy.
- Học về Độ phức tạp Thời gian & Không gian (Big O Notation).
|
- Phân tích được độ phức tạp của một thuật toán đơn giản.
- Giải các bài toán đệ quy cơ bản.
|
2. CTDL Tuyến tính |
Lưu trữ tuần tự |
- Mảng (Arrays) và Chuỗi (Strings).
- Danh sách liên kết (Linked Lists): đơn, đôi, vòng.
- Ngăn xếp (Stacks).
- Hàng đợi (Queues) & Hàng đợi ưu tiên (Priority Queues).
|
- Tự triển khai (implement) các CTDL trên từ đầu.
- Giải quyết các bài toán ứng dụng (vd: kiểm tra ngoặc hợp lệ bằng Stack).
|
3. Thuật toán Cơ bản |
Tìm kiếm & Sắp xếp |
- Thuật toán tìm kiếm: Tuyến tính, Nhị phân.
- Thuật toán sắp xếp cơ bản: Bubble Sort, Selection Sort, Insertion Sort.
- Thuật toán sắp xếp hiệu quả: Merge Sort, Quick Sort, Heap Sort.
|
- Hiểu ưu và nhược điểm của từng thuật toán.
- Triển khai các thuật toán sắp xếp và so sánh hiệu năng.
|
4. CTDL Phi tuyến |
Lưu trữ phân cấp & Mạng lưới |
- Bảng băm (Hash Tables): xử lý va chạm, hàm băm.
- Cây (Trees): Cây nhị phân, Cây tìm kiếm nhị phân (BST).
- Cây cân bằng: Cây AVL, Cây Đỏ-Đen.
- Đồ thị (Graphs): Biểu diễn (ma trận kề, danh sách kề), các loại đồ thị.
|
- Triển khai và thao tác trên cây nhị phân tìm kiếm.
- Mô hình hóa các bài toán thực tế bằng đồ thị.
|
5. Thuật toán Nâng cao |
Các kỹ thuật giải quyết vấn đề |
- Duyệt đồ thị: Breadth-First Search (BFS), Depth-First Search (DFS).
- Thuật toán tham lam (Greedy Algorithms).
- Quy hoạch động (Dynamic Programming).
- Tìm đường đi ngắn nhất: Dijkstra, Bellman-Ford.
- Cây khung nhỏ nhất: Prim, Kruskal.
|
- Nhận dạng được loại bài toán và áp dụng kỹ thuật phù hợp.
- Giải quyết các bài toán quy hoạch động kinh điển.
|
6. Luyện tập & Áp dụng |
Thực chiến |
- Luyện tập giải bài toán trên các nền tảng như LeetCode, HackerRank, Codeforces.
- Tập trung vào các dạng bài phổ biến trong phỏng vấn.
- Tham gia các cuộc thi lập trình (nếu có thể).
- Thực hiện một dự án nhỏ ứng dụng các CTDL & GT đã học.
|
- Tăng tốc độ và sự tự tin khi giải quyết vấn đề.
- Xây dựng portfolio với các bài toán đã giải.
- Sẵn sàng cho các vòng phỏng vấn kỹ thuật.
|