Cách vượt qua phỏng vấn lập trình trực tiếp

Bởi Aaron Cao · Cập nhật

Cách vượt qua phỏng vấn lập trình trực tiếp
Hãy xem phỏng vấn lập trình trực tiếp như một cuộc trò chuyện với trình biên dịch. Nói to các đánh đổi, bắt đầu bằng kế hoạch brute-force, rồi tối ưu dần. Trên CoderPad, CodeSignal, hoặc trình soạn thảo dùng chung trong Zoom, Google Meet hay Microsoft Teams, người phỏng vấn đánh giá quá trình cũng nhiều như hàm cuối cùng.

Hãy xem phỏng vấn lập trình trực tiếp như một cuộc trò chuyện với trình biên dịch. Nói to các đánh đổi, bắt đầu bằng kế hoạch brute-force, rồi tối ưu dần. Trên CoderPad, CodeSignal, hoặc trình soạn thảo dùng chung trong Zoom, Google Meet hay Microsoft Teams, người phỏng vấn đánh giá quá trình cũng nhiều như hàm cuối cùng.

Vòng phỏng vấn lập trình trực tiếp thực sự chấm điểm những gì?

Lập trình trực tiếp không phải là bài tập mang về nhà. Người phỏng vấn quan sát cách bạn làm rõ đề bài, chọn một ví dụ, chọn cấu trúc dữ liệu, và cách bạn xử lý khi một test thất bại. Tính đúng đắn rất quan trọng, nhưng một hàm hoàn hảo được viết trong im lặng, không bàn về độ phức tạp, thường bị chấm điểm thấp hơn một giải pháp brute-force chạy được mà sau đó bạn cải thiện dần.

Một kỹ sư backend phỏng vấn cho vị trí L5 tại một nhà cung cấp đám mây công cộng được giao đề bài viết bộ giới hạn tốc độ (rate limiter) trong trình soạn thảo dùng chung. Người phỏng vấn không mong chờ một thuật toán token bucket kiểu sách giáo khoa ngay lần biên dịch đầu tiên. Họ muốn nghe sự khác biệt giữa lưu lượng đột biến và trạng thái ổn định, so sánh giữa cách tiếp cận O(1) và việc quét log, cùng một test thất bại được viết trước khi xử lý trường hợp thông thường. Cuộc trò chuyện đó chính là vòng phỏng vấn.

Các vòng này thường diễn ra trên CoderPad, CodeSignal, HackerRank, hoặc trình soạn thảo dùng chung trong Zoom, Google Meet hay Microsoft Teams. Hãy hỏi về kích thước đầu vào, các giá trị trùng lặp và khả năng thay đổi (mutation) trước khi gõ. Nhắc lại kết quả đầu ra mong muốn. Sau đó mới viết code.

  • Đã làm rõ các ràng buộc trước khi viết dòng đầu tiên.
  • Bắt đầu bằng một kế hoạch brute-force đúng, rồi thực hiện một cải tiến.
  • Nói to độ phức tạp thời gian và không gian.
  • Đã chạy thử một ví dụ và một trường hợp biên.
  • Đã xử lý ổn thỏa khi lần chạy thất bại mà không im lặng.

Bạn nên nói như thế nào trong khi gõ code?

Bạn lo rằng nói chuyện sẽ làm bạn chậm lại hoặc nghe có vẻ thiếu tự tin. Phần này đưa ra một mẫu trình bày mà bạn có thể tái sử dụng cho bất kỳ bài toán nào trên trình soạn thảo dùng chung, từ lúc nhắc lại đề bài đến lúc bị bí. Hãy luyện tập cho đến khi nó trở thành phản xạ, chứ không phải một kịch bản học thuộc.

Trước dòng đầu tiên, hãy nhắc lại đề bài, nêu các ràng buộc, và tự tay chạy qua một ví dụ. Sau đó nói ý tưởng brute-force và độ phức tạp của nó. Chỉ khi đó mới gõ code. Trong khi gõ, hãy nêu bất biến (invariant) của vòng lặp, chứ không phải từng phím bấm. Nếu bị bí, hãy nói bạn đang kiểm tra điều gì (đầu vào null, lỗi lệch một đơn vị, đã sắp xếp hay chưa) thay vì im lặng.

  • Nói to để làm rõ kiểu dữ liệu, kích thước và các trường hợp biên.
  • Đưa ra brute-force, rồi một cải tiến, rồi mới viết code.
  • Chạy lại ví dụ qua hàm đã hoàn thiện.
  • Hỏi xin gợi ý thay vì im lặng bế tắc.

Một buổi luyện tập có giới hạn thời gian mà bạn nói xuyên suốt từ đầu đến cuối có trên trang phỏng vấn mô phỏng.

Người phỏng vấn có thể nhìn thấy lớp phủ AI không?

Nếu bạn chia sẻ màn hình, một cửa sổ, hoặc một desktop được ghi hình, mọi thứ trên màn hình đó đều hiển thị, bao gồm cả lớp phủ nổi. Các nền tảng có giám sát, trình duyệt khóa và thiết bị do công ty quản lý đều nằm ngoài phạm vi hoạt động của bất kỳ trợ lý cục bộ nào. Đừng coi bất kỳ công cụ nào là vô hình trong những trường hợp đó.

SubcueAI cung cấp hai hình thức hỗ trợ trực tiếp, và không hình thức nào tham gia cuộc gọi như một bot hay chèn script vào trang họp. Ứng dụng desktop gốc cho macOS và Windows ghi lại âm thanh hệ thống cùng micro của bạn, và hiển thị một lớp phủ cục bộ nổi hoạt động cùng các ứng dụng họp trên desktop. Tiện ích mở rộng Chromium (Chrome và Edge) dùng Side Panel và chỉ ghi lại âm thanh của tab họp, tức là người phỏng vấn, không bao giờ ghi micro của bạn, nên nó hoạt động với các cuộc gọi trên tab trình duyệt và không phiên âm lời bạn nói. Bản Firefox chỉ dùng để luyện tập mô phỏng.

Nếu lớp phủ nằm trên màn hình mà bạn không chia sẻ, người phỏng vấn sẽ không thấy nó. Tuy nhiên, chia sẻ toàn bộ desktop sẽ bao gồm mọi cửa sổ trên màn hình đó. Những giới hạn trung thực về những gì người phỏng vấn có thể thấy được tổng hợp trên trang chủ đề khả năng bị phát hiện.

Bạn nên luyện tập gì trước buổi phỏng vấn thật?

Hãy luyện tập các mẫu bài mà bạn thực sự sẽ viết dưới áp lực thời gian: mảng và bảng băm, hai con trỏ, cửa sổ trượt, tìm kiếm nhị phân, BFS và DFS, heap, và phép gộp khoảng cơ bản. Thành thạo hashmap, hàng đợi và API sắp xếp của ngôn ngữ bạn dùng quan trọng hơn việc học thuộc các bài toán lắt léo. Hãy nói trong khi giải; luyện tập trong im lặng sẽ không chuyển hóa thành kỹ năng thật.

Hãy luyện tập mô phỏng một lần với đúng bộ công cụ bạn sẽ dùng khi phỏng vấn thật: cùng ngôn ngữ, cùng thói quen dùng trình soạn thảo, cùng ứng dụng họp. Nếu công ty dùng Zoom trên ứng dụng desktop, hãy luyện tập ở đó. Nếu họ dùng Google Meet trong một tab Chrome, hãy luyện tập với tab đó đang mở. Cách thiết lập lớp phủ desktop và Side Panel của Chrome có trên trang hướng dẫn.

Nếu bạn không thể hoàn thành giải pháp tối ưu, hãy đưa ra một brute-force đúng, nêu rõ điểm nghẽn, và phác thảo hướng tiếp cận nhanh hơn. Một câu trả lời hoàn chỉnh nhưng chậm hơn, kèm theo kế hoạch cải tiến rõ ràng, thường tốt hơn một ý tưởng thông minh nhưng dang dở.

Câu hỏi thường gặp

Nói chuyện trong khi code có thực sự làm thay đổi điểm số không?

Có. Người phỏng vấn không thể chấm điểm một kế hoạch mà họ chưa từng nghe. Gõ code trong im lặng trông giống như đoán mò, ngay cả khi câu trả lời đúng. Hãy nhắc lại đề bài, phác thảo brute-force, rồi mới gõ code.

SubcueAI có tham gia cuộc gọi Zoom, Google Meet hay Microsoft Teams của tôi không?

Không. Không có bot nào tham gia cuộc họp, và không có script nào bị chèn vào trang họp. Tính năng hỗ trợ luôn nằm trên máy của bạn dưới dạng lớp phủ macOS hoặc Windows, hoặc Side Panel của Chrome hay Edge.

Người phỏng vấn có thể thấy lớp phủ khi bạn chia sẻ màn hình code không?

Có, nếu lớp phủ nằm trên màn hình hoặc cửa sổ được chia sẻ. Chia sẻ màn hình, ghi hình, kỳ thi có giám sát và thiết bị do công ty quản lý đều nằm ngoài phạm vi hoạt động. Đừng coi bất kỳ công cụ nào là vô hình trong những trường hợp đó.

Tiện ích mở rộng trình duyệt có nghe thấy tôi hay đọc tab CoderPad không?

Không. Side Panel của Chromium chỉ ghi lại âm thanh của tab họp (tức người phỏng vấn), không bao giờ ghi micro của bạn, và không phiên âm lời bạn nói. Nó không đọc một trình soạn thảo CoderPad riêng biệt. Firefox chỉ dùng để luyện tập mô phỏng.

Nếu tôi không thể hoàn thành giải pháp tối ưu kịp giờ thì sao?

Hãy đưa ra một brute-force đúng, nêu rõ điểm nghẽn, và phác thảo hướng tiếp cận nhanh hơn. Một câu trả lời hoàn chỉnh nhưng chậm hơn, kèm theo kế hoạch cải tiến rõ ràng, thường tốt hơn một ý tưởng thông minh nhưng dang dở.

Câu hỏi liên quan

← Thêm về Loại phỏng vấn