📝 Quiz tổng hợp - Vibe Coding với AI
Chào mừng bạn đến với bài quiz tổng hợp! Bài quiz gồm 18 câu hỏi trắc nghiệm và 3 bài tập thực hành giúp bạn kiểm tra toàn bộ kiến thức đã học trong khóa Vibe Coding với AI.
Cấu trúc bài quiz:
- Phần 1: Nền tảng Vibe Coding (3 câu)
- Phần 2: GitHub Copilot (3 câu)
- Phần 3: Prompt Engineering cho Code (3 câu)
- Phần 4: Agent Mode & Testing (3 câu)
- Phần 5: Debugging & Review (3 câu)
- Phần 6: Best Practices & Chiến lược (3 câu)
- Phần 7: Bài tập thực hành (3 bài)
Phần 1: Nền tảng Vibe Coding
Phần 2: GitHub Copilot
Phần 3: Prompt Engineering cho Code
Phần 4: Agent Mode & Testing
Phần 5: Debugging & Review
Phần 6: Best Practices & Chiến lược
Phần 7: Bài tập thực hành
Bài tập 1: Prompt Engineering thực tế
Yêu cầu: Viết một comment prompt chi tiết để yêu cầu AI sinh một hàm xử lý đăng ký tài khoản người dùng với các yêu cầu sau:
- Validate email, password (tối thiểu 8 ký tự, có chữ hoa, chữ thường, số)
- Hash password trước khi lưu
- Kiểm tra email đã tồn tại chưa
- Trả về thông báo lỗi bằng tiếng Việt
- Sử dụng TypeScript
Gợi ý: Hãy viết comment bao gồm: mô tả chức năng, input/output types, các edge case, và ví dụ sử dụng.
1// Bài làm mẫu - Comment prompt cho AI:23// Hàm đăng ký tài khoản người dùng mới4// Input: { email: string, password: string, fullName: string }5// Output: Promise<{ success: boolean, message: string, userId?: string }>6//7// Yêu cầu validate:8// - Email: format hợp lệ (regex), không trống9// - Password: tối thiểu 8 ký tự, ít nhất 1 chữ hoa, 1 chữ thường, 1 số10// - fullName: không trống, tối thiểu 2 ký tự11//12// Business logic:13// - Kiểm tra email đã tồn tại trong database chưa14// - Hash password bằng bcrypt trước khi lưu15// - Tạo userId dạng UUID16// - Trả về thông báo lỗi bằng tiếng Việt17//18// Edge cases:19// - Email đã tồn tại → "Email đã được sử dụng"20// - Password yếu → "Mật khẩu phải có ít nhất 8 ký tự, bao gồm chữ hoa, chữ thường và số"21// - Database error → "Đã xảy ra lỗi, vui lòng thử lại sau"22//23// Ví dụ:24// registerUser({ email: "user@example.com", password: "MyPass123", fullName: "Nguyễn Văn A" })25// → { success: true, message: "Đăng ký thành công", userId: "uuid-..." }Bài tập 2: Debugging với AI
Yêu cầu: Đoạn code sau có lỗi. Hãy mô tả cách bạn sẽ sử dụng AI để tìm và sửa lỗi:
1async function fetchUserData(userId) {2 const response = fetch(`/api/users/${userId}`);3 const data = response.json();45 if (data.status = 200) {6 return data.user;7 }89 return null;10}1112const users = [1, 2, 3].map(id => {13 const user = fetchUserData(id);14 console.log(user.name);15});Gợi ý: Có ít nhất 4 lỗi trong đoạn code trên. Hãy sử dụng Copilot Chat với prompt: "Phân tích đoạn code này, liệt kê tất cả lỗi và gợi ý cách fix"
Đáp án:
- Thiếu
awaitởfetch()và.json()— cầnawait fetch(...)vàawait response.json() - Dùng
=thay vì===trong điều kiệnif (data.status = 200)— phép gán thay vì so sánh .map()với async function không trả về Promise array — cầnPromise.all()vớiasynccallback- Truy cập
user.namekhi user có thể lànull— cần kiểm tra null trước khi truy cập property
Bài tập 3: Refactoring với AI
Yêu cầu: Sử dụng AI để refactor đoạn code dưới đây, áp dụng các nguyên tắc clean code:
1def p(d):2 t = 03 for i in d:4 if i["t"] == "A":5 t += i["p"] * i["q"] * 0.96 elif i["t"] == "B":7 t += i["p"] * i["q"] * 0.858 elif i["t"] == "C":9 t += i["p"] * i["q"]10 if t > 1000:11 t = t * 0.9512 if t > 5000:13 t = t * 0.914 return tGợi ý: Sử dụng prompt: "Refactor đoạn code này theo clean code principles: đặt tên biến rõ ràng, tách logic thành hàm nhỏ, sử dụng constants, thêm type hints và docstring"
Đáp án mẫu:
1from dataclasses import dataclass2from enum import Enum3from typing import List45class CustomerTier(Enum):6 PREMIUM = "A"7 STANDARD = "B"8 BASIC = "C"910TIER_DISCOUNTS = {11 CustomerTier.PREMIUM: 0.90,12 CustomerTier.STANDARD: 0.85,13 CustomerTier.BASIC: 1.00,14}1516BULK_DISCOUNT_THRESHOLDS = [17 (5000, 0.90),18 (1000, 0.95),19]2021@dataclass22class OrderItem:23 item_type: str24 price: float25 quantity: int2627def calculate_item_subtotal(item: OrderItem) -> float:28 """Tính tổng tiền của một sản phẩm sau khi áp dụng chiết khấu theo hạng."""29 tier = CustomerTier(item.item_type)30 discount_rate = TIER_DISCOUNTS.get(tier, 1.0)31 return item.price * item.quantity * discount_rate3233def apply_bulk_discount(total: float) -> float:34 """Áp dụng chiết khấu theo tổng giá trị đơn hàng."""35 for threshold, discount_rate in BULK_DISCOUNT_THRESHOLDS:36 if total > threshold:37 return total * discount_rate38 return total3940def calculate_order_total(items: List[OrderItem]) -> float:41 """42 Tính tổng giá trị đơn hàng sau tất cả chiết khấu.4344 Args:45 items: Danh sách sản phẩm trong đơn hàng4647 Returns:48 Tổng tiền sau chiết khấu49 """50 subtotal = sum(calculate_item_subtotal(item) for item in items)51 return apply_bulk_discount(subtotal)Phần 8: Rubric đánh giá
| Tiêu chí | Xuất sắc (9-10) | Tốt (7-8) | Đạt (5-6) | Chưa đạt (dưới 5) |
|---|---|---|---|---|
| Trắc nghiệm (18 câu) | 16-18 câu đúng | 13-15 câu đúng | 9-12 câu đúng | Dưới 9 câu đúng |
| Bài tập 1 - Prompt Engineering | Prompt chi tiết, đủ context, có ví dụ và edge cases | Prompt rõ ràng, đủ thông tin cơ bản | Prompt đơn giản nhưng đúng hướng | Prompt thiếu thông tin hoặc sai cách |
| Bài tập 2 - Debugging | Tìm được 4/4 lỗi, giải thích rõ ràng | Tìm được 3/4 lỗi | Tìm được 2/4 lỗi | Tìm được dưới 2 lỗi |
| Bài tập 3 - Refactoring | Code sạch, tách hàm hợp lý, có type hints, docstring, constants | Code cải thiện rõ rệt, đặt tên tốt | Đổi tên biến rõ hơn nhưng chưa tách logic | Không cải thiện đáng kể |
Phần 9: Hoàn thành
🎉 Chúc mừng bạn đã hoàn thành Quiz tổng hợp Vibe Coding với AI!
Tổng kết kiến thức đã kiểm tra:
- ✅ Nền tảng Vibe Coding và triết lý AI-assisted development
- ✅ GitHub Copilot: setup, phím tắt, inline suggestions, Copilot Chat
- ✅ Prompt Engineering: comments as prompts, function signatures, context injection
- ✅ Agent Mode: multi-file editing, workspace commands, task automation
- ✅ AI cho Testing: test generation, edge case detection, TDD với AI
- ✅ AI cho Debugging: error explanation, fix suggestions, log analysis
- ✅ Code Review với AI: security scanning, code quality, best practices
- ✅ Refactoring với AI: code smell detection, pattern extraction, performance optimization
- ✅ Chiến lược Multi-model: GPT-4, Claude, Gemini Code Assist, local models
- ✅ Documentation với AI: docstring, README, API docs
- ✅ Best Practices: verify AI output, understand before accepting, security considerations
Bước tiếp theo: Áp dụng Vibe Coding vào dự án thực tế của bạn. Hãy bắt đầu với một tính năng nhỏ, sử dụng AI hỗ trợ, và từng bước nâng cao kỹ năng phối hợp với AI!
