Họ đang đo gì
Bạn có làm việc được khi chưa biết đáp án không — thứ mà công việc thật đòi hỏi mỗi ngày.
Trả lời ngắn~30 giây
Nhắc lại đề bằng lời của mình để chắc là hiểu đúng. Hỏi về ràng buộc: n lớn cỡ nào, đầu vào có sắp xếp chưa, có trùng lặp không, có rỗng không. Đưa ra một ví dụ nhỏ và giải bằng tay. Nói ra một cách giải thô sơ cùng độ phức tạp của nó — điều này rất quan trọng vì nó cho bạn một điểm neo và cho người phỏng vấn thấy bạn không bế tắc. Rồi mới tìm cách cải thiện, và chỉ viết code khi đã thống nhất được hướng.
Giải thích sâu
Việc nói ra cách giải thô sơ bị nhiều người bỏ qua vì sợ nghe kém. Ngược lại là đúng: nó chứng minh bạn hiểu bài toán, cho bạn một đáp án dự phòng nếu hết giờ, và biến cuộc trò chuyện thành “cải thiện từ O(n²)” thay vì “im lặng nghĩ”. Im lặng ba phút là tín hiệu tệ nhất trong vòng này, vì người phỏng vấn không thấy gì để chấm.
Câu hỏi về ràng buộc không phải hình thức — chúng thu hẹp không gian lời giải rất mạnh. n ≤ 1.000 nghĩa là O(n²) chấp nhận được và bạn không cần tối ưu thêm. Đầu vào đã sắp xếp thì mở ra hai con trỏ và tìm kiếm nhị phân. Chỉ có chữ cái thường thì đếm bằng mảng 26 phần tử thay vì hash map. Mỗi câu hỏi có thể tiết kiệm mười phút đi sai hướng.
Về việc kẹt: nói ra chỗ mình kẹt là hợp lệ và thường được gợi ý. “Mình nghĩ cần một cách nhớ lại kết quả đã tính, nhưng chưa nghĩ ra khoá nên là gì” tốt hơn nhiều so với ngồi im — người phỏng vấn muốn thấy bạn hợp tác được khi khó, vì đó chính xác là điều họ sẽ làm việc cùng bạn sau này.
Câu hỏi tiếp theo họ sẽ hỏi
?Viết xong thì làm gì?
Chạy tay qua một ví dụ nhỏ, dòng theo dòng, kể cả khi bạn tự tin. Rồi kiểm tra các biên: mảng rỗng, một phần tử, mọi phần tử giống nhau. Việc tự tìm ra bug trước khi người phỏng vấn chỉ ra được đánh giá cao hơn nhiều so với việc viết đúng ngay từ đầu.
Trả lời thế này là mất điểm
- Viết code ngay khi nghe xong đề. Bạn đang giải bài toán mà bạn tưởng tượng, không phải bài toán được hỏi.
- Im lặng suy nghĩ. Không nói thì không có gì để chấm, và thời gian vẫn trôi.
Xem thêm trên site
Nguồn
- Polya — How to Solve It (hiểu bài toán, lập kế hoạch, thực hiện, nhìn lại)