Kể chuyện patterns và SOLID khi phỏng vấn

Ôn thi phỏng vấn patterns: kể SimUDuck Weather Starbuzz trong hai phút, trả lời khi nào dùng và so sánh cặp đôi dễ nhầm.
KhóDesign pattern ~60 phút

Ôn lại trước khi học

Giới thiệu

Bài này luyện kể chuyện thiết kế trong 2 phút. Dùng để qua vòng phỏng vấn pattern khó nhằn.

Kiến thức cần nhớ

Khung trả lời 4 nhịp

  • Nhịp 1: nỗi đau gặp ở đâu trong dự án.
  • Nhịp 2: 2 cách đầu và vì sao hỏng.
  • Nhịp 3: pattern chọn với vai và quan hệ.
  • Ví dụ đời thường: như kể bệnh, thuốc thử, thuốc chốt.
  • Nhịp 4: đánh đổi và khi nào không dùng.

Ba chuyện thuộc lòng

  • SimUDuck cho Strategy: vịt cao su biết bay sai.
  • Tách bay kêu rồi ủy thác, đổi tên lửa lúc chạy.
  • Trạm thời tiết cho Observer: thêm bảng không sửa trạm.
  • Ví dụ đời thường: như 3 chuyện tủ mang đi thi.
  • Starbuzz cho Decorator: bọc cộng giá thay bùng lớp.
Cặp dễ nhầmKhác ởNhớ bằng
Strategy-StateAi quyết đổiNgoài hay trong
Decorator-ProxyThêm hay chặnLàm thêm hay gác cổng
Adapter-FacadeDịch 1 hay gom hệPhiên dịch hay lễ tân
Factory 2 loại1 món hay cả họMón lẻ hay combo

SOLID gọn

  • Đơn trách nhiệm: 1 lớp chỉ 1 lý do đổi.
  • Đóng mở: thêm mới không sửa cũ đang chạy.
  • Thay thế: lớp con dùng được chỗ lớp cha.
  • Ví dụ đời thường: như dao chỉ cắt, không kiêm nĩa.

Ví dụ

  • Input: "Khi nào dùng Strategy?" -> Output: kể SimUDuck 4 nhịp 2 phút.
  • Giải thích: đủ đau, hỏng, chọn, đánh đổi là đạt điểm.
# Khung kể 2 phút cho mọi pattern
tra_loi = [noi_dau, cach_hong, pattern_chon, danh_doi]
print(len(tra_loi) == 4)  # đủ 4 nhịp

💻 Bài tập

Không cần code mới. Dùng code các ngày trước làm ví dụ. Nộp vào day-118/ gồm file Markdown và bản ghi âm hoặc video.

Bài 1: Kể chuyện 4 nhịp

Viết stories.md gồm 6 câu chuyện, mỗi câu chuyện tối đa 200 từ, đúng 4 nhịp:

  1. Nỗi đau gặp ở đâu (bối cảnh có số liệu: bao nhiêu lớp, bao nhiêu file phải sửa).
  2. Hai cách đầu tiên và vì sao hỏng.
  3. Pattern chọn: vai trò các lớp và quan hệ (kèm sơ đồ 5-10 dòng Mermaid).
  4. Đánh đổi và khi nào không dùng.

Pattern bắt buộc: Strategy, Observer, Decorator, Factory Method, Command, State. Ví dụ lấy từ code chính bạn đã viết (ghi đường dẫn file).

Bài 2: Luyện nói

  1. Tự ghi âm kể 3 câu chuyện, mỗi câu tối đa 2 phút. Nghe lại và ghi chú: chỗ ấp úng, chỗ dùng thuật ngữ sai, chỗ quá dài.
  2. Kể lại lần 2, so thời lượng.

Bài 3: Câu hỏi phỏng vấn thường gặp (nâng cao)

Viết câu trả lời ngắn (tối đa 80 từ) cho 10 câu:

  1. Strategy khác State ở đâu?
  2. Decorator khác Proxy ở đâu?
  3. Adapter khác Facade ở đâu?
  4. Khi nào Singleton là anti-pattern?
  5. Factory Method khác Abstract Factory ở đâu?
  6. SOLID chữ nào bạn hay vi phạm nhất? Ví dụ.
  7. Composition over inheritance nghĩa là gì? Ví dụ trong code của bạn.
  8. Observer có nhược điểm gì với hệ thống lớn?
  9. Pattern nào bạn thấy bị lạm dụng nhiều nhất?
  10. Kể 1 lần bạn gỡ bỏ một pattern vì nó thừa.

✅ Tiêu chí hoàn thành

  • stories.md đủ 6 câu chuyện, mỗi câu dưới 200 từ, có sơ đồ và đường dẫn code.
  • Có 2 lần ghi âm và ghi chú cải thiện.
  • 10 câu trả lời dưới 80 từ mỗi câu.
  • Mỗi câu chuyện có nhịp 4 "khi nào không dùng".

❓ Câu hỏi ôn tập

  • 4 nhịp trả lời là gì?
  • SimUDuck đau ở đâu?
  • Decorator khác Proxy sao?
  • 2 Factory khác nhau gì?

🌕 Bạn đã hoàn thành ngày 118. Làm hết bài tập phía trên rồi sang ngày tiếp theo.

Bớt paste mù, hiểu sâu từng dòng mình viết.

180 Days Challenge. 180 ngày cai nghiện vibe code.