Bạn debug một lỗi khó như thế nào? Bạn dùng AI ở bước nào?
Gợi ý trả lời
Người phỏng vấn muốn nghe một quy trình, không phải một công cụ. Câu trả lời tốt có các bước rõ ràng và cho thấy bạn kiểm chứng trước khi tin.
Một quy trình bạn có thể trình bày:
- Tái hiện lỗi bằng cách nhỏ nhất có thể: một lệnh, một script, một test. Chưa tái hiện được thì chưa nên sửa, vì bạn không có cách biết mình đã sửa xong.
- Ghi rõ kết quả thật và kết quả mong muốn. "Tổng sai" không đủ; "tổng ra 67.000đ, lẽ ra 35.000đ" thì đủ.
- Lần theo dữ liệu, từ chỗ nó vào tới chỗ nó sai: tạo ở đâu, đi qua hàm nào, ai dùng chung. Đọc stack trace nếu có, đặt breakpoint thay vì rải
console.log. - Loại trừ có bằng chứng: phần nào đã có test xanh, phần nào đã kiểm tra bằng tay.
- Sửa, rồi chạy lại cách tái hiện và toàn bộ test. Tìm mọi nơi gọi hàm mà bạn vừa đổi.
Về AI, nên nói rõ bạn dùng nó ở đâu và không dùng ở đâu. AI giúp nhiều ở bước 3: đọc code lạ, gợi ý chỗ đáng nghi, giải thích một thông báo lỗi. Nhưng AI chỉ thấy những gì bạn đưa cho nó, nên bạn đưa cả cách tái hiện, kết quả thật, kết quả mong muốn, những file mà dữ liệu đi qua và những gì đã loại trừ. Bạn cũng yêu cầu nó chỉ ra file và dòng trước khi sửa, để tự kiểm tra nguyên nhân.
Điểm cộng: kể một lỗi cụ thể, ví dụ một lỗi chỉ xuất hiện khi có hai người dùng cùng lúc, và nói bạn đã làm gì để nó không quay lại (một test tái hiện đúng lỗi đó).