Ôn tập tổng hợp: từ sắp xếp tới tối ưu
Checkpoint giữa chặng app: rà soát 24 app đã build, vá lỗ hổng, benchmark lại, chuẩn bị nền cho 5 capstone lớn.
Trung bìnhThuật toán ~90 phút
Ôn lại trước khi học
Giới thiệu
Bài này rà soát 24 app đã build. Vá lỗi cũ rồi mới bước vào 5 capstone lớn.
Kiến thức cần nhớ
Chia 24 app thành 4 cụm
- Cụm tìm kiếm gợi ý: autocomplete, search, spell, recsys.
- Cụm hạ tầng: limiter, top-K, cache, index, mapreduce, pipeline.
- Cụm đồ thị tối ưu: fraud, routing, MST, TSP, embedding.
- Ví dụ đời thường: tổng vệ sinh 4 phòng trước khi đón khách.
Checklist rà mỗi app
- App còn chạy 1 lệnh không.
- Benchmark còn tái lập không.
- README có metric và cạm bẫy không.
- Test có chứng minh đúng không.
Vá lỗi và chốt portfolio
- App đỏ thì ghi thẻ lỗi gồm triệu chứng và mức ưu tiên.
- Vá ít nhất 3 thẻ quan trọng nhất trong ngày.
- Chọn 3 app mạnh nhất mang đi phỏng vấn.
- Mỗi app viết pitch 5 câu nêu khó kỹ thuật và metric.
| Cột kiểm tra | Xanh | Đỏ |
|---|---|---|
| Chạy được | 1 lệnh lên ngay | Lỗi không rõ |
| Benchmark | Tái lập chênh dưới 15% | Thiếu số liệu |
| Test | Trước đỏ sau xanh | Không có test |
Ví dụ
- Input: chạy smoke test 24 app. Output: bảng 24 hàng ghi rõ app nào xanh đỏ.
- Giải thích: không app nào ở trạng thái không biết chạy hay hỏng.
- Input: benchmark lại 8 metric lõi. Output: chênh dưới 15% so với lần đầu.
- Giải thích: metric ổn định chứng tỏ app tái lập được.
💻 Bài tập
Không có kiến thức mới. Hôm nay rà soát toàn bộ app ngày 126-149. Nộp vào day-150-review/.
Bài 1: Kiểm kê
Tạo inventory.md với 1 bảng cho mọi app đã làm (ngày 126 tới 149):
| App | Chạy bằng 1 lệnh? | Test pass? | Benchmark tái lập? | README có metric? | Trạng thái |
|---|
Với mỗi app, clone repo sang thư mục mới, làm theo đúng README.md. Ghi lại mọi chỗ phải làm thêm ngoài hướng dẫn. Trạng thái: xanh (ổn), vàng (chạy nhưng thiếu), đỏ (hỏng).
Bài 2: Thẻ lỗi và sửa
- Mỗi vấn đề là 1 thẻ trong
issues.md: tiêu đề, triệu chứng, cách tái hiện, mức ưu tiên (P0 hỏng, P1 sai số liệu, P2 thiếu tài liệu). - Sửa ít nhất 3 thẻ P0 hoặc P1. Mỗi bản sửa là 1 commit có tham chiếu thẻ.
- Thêm 1 script
run_all_tests.shchạy test của mọi app, in bảng tổng hợp.
Bài 3: Ôn tập chủ động (nâng cao)
- Không nhìn code, viết lại từ đầu trong 60 phút: LRU cache, Dijkstra với heap, và Union-Find. Chạy test cũ trên bản mới.
- Ghi lại chỗ bí, chỗ sai, thời gian mỗi bài vào
recall.md. - Chọn 3 app mạnh nhất để mang đi phỏng vấn. Với mỗi app viết 5 dòng: vấn đề, kiến trúc, con số ấn tượng nhất, đánh đổi lớn nhất, việc sẽ làm tiếp.
✅ Tiêu chí hoàn thành
-
inventory.mdđủ mọi app, có trạng thái. - Ít nhất 3 thẻ P0/P1 được sửa, commit có tham chiếu.
-
run_all_tests.shchạy được. - 3 bài viết lại pass test cũ, có
recall.md.
❓ Câu hỏi ôn tập
- 24 app chia 4 cụm gồm những cụm nào?
- Checklist rà mỗi app có 4 mục gì?
- Bản vá đạt cần có gì kèm theo?
- Portfolio 3 app chọn theo tiêu chí nào?
🌕 Bạn đã hoàn thành ngày 150. Làm hết bài tập phía trên rồi sang ngày tiếp theo.