Bài test take-home khi xin việc lập trình: cách làm và điều nhà tuyển dụng chấm

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

Nhiều công ty gửi bài test take-home: bạn nhận đề, làm ở nhà trong vài ngày rồi nộp lại. Hình thức này giúp ứng viên làm việc thoải mái hơn so với bị theo dõi trực tiếp, nhưng cũng dễ khiến bạn tốn thời gian mà không biết nên tập trung vào đâu. Hiểu họ chấm điều gì sẽ giúp bạn làm đúng trọng tâm.

Nhà tuyển dụng đánh giá điều gì?

  • Tính đúng đắn: chương trình có chạy và đáp ứng yêu cầu của đề không.
  • Chất lượng code: dễ đọc, đặt tên rõ nghĩa, cấu trúc hợp lý, không lặp lại không cần thiết.
  • Tư duy thiết kế: cách chia lớp hoặc module, xử lý lỗi, mở rộng.
  • Kiểm thử: có test cho các trường hợp quan trọng.
  • Tài liệu và giao tiếp: README, giải thích quyết định, giả định.
  • Quản lý thời gian: nộp đúng hạn, phạm vi vừa phải.

Bước 1: Đọc đề và làm rõ

Đọc kỹ đề ít nhất hai lần. Gạch ra các yêu cầu bắt buộc và tùy chọn. Nếu có điều chưa rõ, hãy gửi email hỏi ngắn gọn thay vì tự đoán. Việc hỏi cho thấy bạn làm việc cẩn thận. Hỏi thêm về giới hạn thời gian, ngôn ngữ và công cụ được phép dùng, cách nộp bài.

Bước 2: Lập kế hoạch thời gian

Dù đề nói "khoảng ba giờ", nhiều ứng viên bỏ ra cả cuối tuần. Hãy chia thời gian: phân tích và thiết kế, cài đặt chức năng chính, kiểm thử, viết tài liệu và dọn dẹp. Ưu tiên làm xong yêu cầu bắt buộc một cách sạch sẽ trước khi nghĩ tới tính năng thêm. Một lời giải nhỏ, gọn, chạy đúng luôn tốt hơn một lời giải lớn còn lỗi.

Bước 3: Làm gọn, đúng và dễ đọc

  • Dùng cấu trúc thư mục rõ ràng, tách logic nghiệp vụ khỏi phần giao diện hoặc truy cập dữ liệu.
  • Đặt tên hàm và biến diễn tả ý định.
  • Xử lý các trường hợp lỗi và dữ liệu không hợp lệ.
  • Tránh code thừa, chú thích thừa; chú thích để giải thích lý do chứ không lặp lại điều code đã nói.
  • Commit thường xuyên với thông điệp rõ ràng nếu nộp qua kho Git.

Bước 4: Viết kiểm thử

Dù đề không bắt buộc, vài test cho logic chính là điểm cộng lớn. Tập trung vào các trường hợp biên và luồng chính, không cần cố đạt độ phủ tuyệt đối. Ví dụ với một hàm tính phí vận chuyển, hãy test các ngưỡng chuyển bậc, đầu vào bằng không và giá trị không hợp lệ.

function shippingFee(weightKg) {  if (weightKg <= 0) throw new Error('Cân nặng phải lớn hơn 0');  if (weightKg <= 1) return 15000;  if (weightKg <= 5) return 25000;  return 25000 + Math.ceil(weightKg - 5) * 5000;}console.assert(shippingFee(1) === 15000);console.assert(shippingFee(5) === 25000);console.assert(shippingFee(5.5) === 30000);

Bước 5: Viết README tốt

README là nơi bạn giao tiếp với người chấm. Hãy có các phần sau:

  1. Mô tả ngắn bài toán và cách bạn tiếp cận.
  2. Hướng dẫn cài đặt và chạy, kiểm tra nhanh để người chấm chạy được ngay.
  3. Các giả định bạn đã đặt ra khi đề chưa rõ.
  4. Các quyết định thiết kế quan trọng và lý do.
  5. Những điều sẽ cải thiện nếu có thêm thời gian.

Phần cuối đặc biệt hữu ích: bạn thừa nhận giới hạn thay vì để người chấm tự phát hiện, đồng thời cho thấy bạn biết hướng cải tiến.

Những lỗi thường gặp

  • Nộp bài không chạy được vì thiếu bước cài đặt hoặc thiếu file cấu hình mẫu.
  • Đẩy thư mục thư viện, file tạm hoặc thông tin bí mật vào kho mã.
  • Làm quá nhiều tính năng ngoài yêu cầu khiến code rối.
  • Sao chép giải pháp từ mạng mà không hiểu, rồi không giải thích được khi được hỏi lại.
  • Nộp muộn mà không báo trước.

Về việc dùng công cụ hỗ trợ

Hãy xem đề có quy định về việc dùng tài liệu hoặc trợ lý lập trình AI hay không và tuân thủ. Nếu được phép, bạn vẫn phải hiểu từng dòng mình nộp, vì vòng sau thường có buổi thảo luận về bài làm và bạn sẽ được hỏi vì sao chọn cách này.

Chuẩn bị cho buổi thảo luận bài làm

Nhiều công ty mời bạn trình bày bài nộp sau đó. Hãy ôn lại các lựa chọn của bạn: vì sao chọn cấu trúc này, khó khăn gặp phải, nếu dữ liệu lớn gấp nhiều lần thì cần thay đổi gì, bạn sẽ thêm tính năng X như thế nào. Đây là cơ hội tuyệt vời để thể hiện chiều sâu tư duy.

Kết luận

Take-home không đòi hỏi bạn hoàn hảo mà là một bản giải gọn gàng, đáng tin và được giải thích rõ. Giữ phạm vi vừa phải, chăm chút README và kiểm thử, bạn sẽ nổi bật hơn nhiều ứng viên chỉ nộp code.

Nếu bạn muốn luyện cách xây dựng dự án nhỏ từ đầu đến cuối, các khóa thực hành tại codebem.com có thể giúp bạn.

author_photo
Nguyễn Đình Cường

0 comment