Mẹo phỏng vấn coding
Bởi Aaron Cao · Cập nhật
Làm rõ vấn đề và các ràng buộc trước khi code, trình bày cách tiếp cận của bạn thành lời, đạt được một giải pháp hoạt động trước khi tối ưu hóa, kiểm thử với các trường hợp biên, và nêu độ phức tạp về thời gian và không gian. Người phỏng vấn đánh giá cách bạn tư duy và giao tiếp, không chỉ việc mã cuối cùng có chạy hay không.
Trước khi viết code: làm rõ, rồi lên kế hoạch
Nếu bản năng của bạn khi chịu áp lực là bắt đầu gõ phím ngay lập tức, thì đó chính là bản năng mà phần này sẽ khắc phục. Những ứng viên mạnh nhất dành vài phút đầu tiên không hề code, và người phỏng vấn nhận ra điều đó.
Bắt đầu bằng cách diễn đạt lại vấn đề theo cách hiểu của riêng bạn và xác nhận với người phỏng vấn. Hỏi về các ràng buộc: kích thước đầu vào, phạm vi giá trị, đầu vào có được sắp xếp không, cách xử lý đầu vào rỗng hoặc sai định dạng. Sau đó nêu tên cách tiếp cận dự định và độ phức tạp của nó trước khi bạn viết bất cứ điều gì. Bước lập kế hoạch ngắn này giúp phát hiện sớm những hiểu lầm và cho thấy tư duy có cấu trúc, một phần lớn trong điểm số.
Trong lúc code: suy nghĩ thành lời và xây dựng theo từng bước
Sự im lặng là cách phổ biến nhất khiến một người giải quyết vấn đề giỏi lại trông có vẻ yếu. Hãy liên tục giải thích những gì bạn đang viết và lý do tại sao, để người phỏng vấn có thể theo dõi logic của bạn và định hướng lại nếu bạn đi lệch hướng.
Hãy đạt được một câu trả lời đúng trước khi tìm một câu trả lời khéo léo. Một giải pháp brute-force đơn giản chạy được có giá trị hơn một ý tưởng thanh lịch không bao giờ biên dịch được, và bạn có thể tối ưu hóa khi đã có thứ gì đó hoạt động. Hãy viết theo từng phần nhỏ, có thể kiểm thử được, sử dụng tên biến rõ ràng, và nếu bị bí, hãy nói ra những gì bạn đang cân nhắc thay vì im lặng. Người phỏng vấn thường đưa ra gợi ý, nhưng chỉ khi họ có thể nghe thấy bạn đang ở đâu.
Sau khi chạy được: kiểm thử, trường hợp biên và độ phức tạp
Một giải pháp chưa hoàn thành khi nó biên dịch được; nó hoàn thành khi bạn đã cố gắng làm cho nó lỗi. Hãy chạy qua code của bạn với một đầu vào bình thường, sau đó cố ý thử những đầu vào khó chịu: đầu vào rỗng, một phần tử duy nhất, các phần tử trùng lặp, số âm, trường hợp lớn nhất mà các ràng buộc cho phép.
Hãy hình dung một kỹ sư frontend phỏng vấn cho vị trí cấp trung viết một giải pháp two-pointer hoạt động được, sau đó, không cần ai yêu cầu, tự truy vết qua một mảng rỗng và một mảng chỉ có một phần tử, rồi nêu thời gian chạy là O(n). Phút cuối cùng của việc tự kiểm thử và phân tích độ phức tạp này thường là yếu tố phân định giữa việc được tuyển dụng và bị xem xét thêm, vì nó cho thấy kỹ sư này sẽ tự phát hiện lỗi của chính mình khi làm việc thực tế. Hãy nói to độ phức tạp về thời gian và không gian ngay cả khi không được yêu cầu.
Biến các mẹo thành thói quen trước vòng thi thực sự
Đọc mẹo thì dễ; thực hiện chúng khi đang lo lắng thì không dễ. Cách khắc phục là luyện tập trong điều kiện gần giống thực tế: đồng hồ bấm giờ đang chạy, giải pháp của bạn được nói thành lời, và không dừng lại để tra cứu. Sau mỗi bài luyện tập, hãy xem lại không chỉ việc bạn có giải được hay không, mà còn việc bạn có làm rõ, trình bày thành lời, và kiểm thử hay không, vì đó chính là những thói quen được chấm điểm.
Các vòng thi nói có giới hạn thời gian trước một người phỏng vấn AI là một cách để xây dựng phản xạ này; bạn có thể thực hiện chúng trên công cụ phỏng vấn thử. Một lưu ý đáng nhắc lại: các vòng thi coding thực tế thường diễn ra trên trình soạn thảo chia sẻ có giám sát hoặc bị ghi hình, vì vậy không có trợ lý trực tiếp nào an toàn trong lúc đó, và mục tiêu của việc luyện tập chính là để không cần đến nó. Có thêm câu trả lời về các vòng thi coding tại trung tâm chủ đề các loại phỏng vấn, và hướng dẫn luyện tập tại trung tâm chủ đề phỏng vấn thử.
Câu hỏi thường gặp
Mẹo quan trọng nhất cho phỏng vấn coding là gì?
Tôi có nên viết giải pháp tối ưu ngay từ đầu không?
Tôi nên xử lý thế nào khi bị bí?
Tôi có cần nêu độ phức tạp về thời gian và không gian không?
Câu hỏi liên quan
- Câu hỏi phỏng vấn về AI tạo sinh là gì và chuẩn bị cho chúng như thế nào?
- Tôi nên chuẩn bị thế nào cho buổi phỏng vấn lập trình của Google?
- Quy trình phỏng vấn và sàng lọc của Andela là gì?
- Quy trình phỏng vấn và sàng lọc của Arc.dev là gì?
- Quy trình phỏng vấn và sàng lọc của Braintrust là gì?
- Có thể đeo AirPods khi phỏng vấn qua Zoom không?