1. Điểm dừng (breakpoint) trong debugger có chức năng gì?
A. Dừng chương trình tại một dòng lệnh cụ thể để kiểm tra trạng thái.
B. Chạy toàn bộ chương trình cho đến khi kết thúc.
C. Biên dịch lại toàn bộ mã nguồn.
D. Tự động sửa tất cả các lỗi có thể có.
2. Khi một hàm trả về giá trị không chính xác, điều đầu tiên cần kiểm tra là:
A. Các tham số đầu vào của hàm và logic bên trong hàm.
B. Tên của hàm có bị sai chính tả không.
C. Lỗi kết nối mạng.
D. Lỗi hệ điều hành.
3. Một lập trình viên nhận được báo cáo rằng chương trình của mình đôi khi hiển thị sai ngày tháng. Đây có khả năng là lỗi gì?
A. Lỗi logic trong việc xử lý ngày tháng.
B. Lỗi cú pháp trong câu lệnh hiển thị.
C. Chương trình bị virus tấn công.
D. Lỗi do phần cứng máy tính.
4. Khi sử dụng debugger, bước nào cho phép bạn đi vào bên trong một lời gọi hàm (function call) để gỡ lỗi chi tiết hơn?
A. Step Into.
B. Step Over.
C. Run to Cursor.
D. Continue.
5. Khi sử dụng debugger, bước nào giúp chương trình thực thi từng dòng lệnh một?
A. Step Over (hoặc Step).
B. Continue.
C. Run.
D. Break.
6. Trong quá trình gỡ lỗi, việc chia nhỏ vấn đề phức tạp thành các phần nhỏ hơn, dễ quản lý hơn được gọi là:
A. Chia để trị (Divide and Conquer).
B. Kiểm thử đơn vị (Unit Testing).
C. Tối ưu hóa mã nguồn (Code Optimization).
D. Phân tích dữ liệu (Data Analysis).
7. Để gỡ lỗi hiệu quả, một lập trình viên nên làm gì đầu tiên khi gặp một lỗi không xác định?
A. Đọc kỹ thông báo lỗi (nếu có) và cố gắng tái hiện lại lỗi một cách nhất quán.
B. Xóa bỏ tất cả các phần mã nguồn liên quan đến chức năng đó.
C. Hỏi ngay lập người khác mà không tự tìm hiểu.
D. Thêm thật nhiều câu lệnh print để xem chương trình làm gì.
8. Khi một chương trình gặp lỗi và dừng hoạt động đột ngột, đó thường là loại lỗi gì?
A. Lỗi nghiêm trọng (Fatal error).
B. Lỗi logic (Logical error).
C. Lỗi cú pháp (Syntax error).
D. Lỗi cảnh báo (Warning error).
9. Một lập trình viên viết một chương trình tính tổng các số từ 1 đến 10. Thay vì kết quả là 55, chương trình lại trả về 50. Lỗi này có thể là do:
A. Vòng lặp kết thúc sớm hơn một lần.
B. Chương trình bị lỗi cú pháp.
C. Chương trình không thể biên dịch.
D. Có quá nhiều biến trong chương trình.
10. Khi một chương trình yêu cầu nhập liệu từ người dùng, lỗi có thể xảy ra nếu người dùng nhập vào định dạng KHÔNG mong đợi, ví dụ nhập chữ thay vì số. Đây là loại lỗi gì?
A. Lỗi xử lý đầu vào (Input handling error).
B. Lỗi logic.
C. Lỗi cú pháp.
D. Lỗi biên dịch.
11. Quá trình tìm và sửa lỗi trong chương trình máy tính được gọi là gì?
A. Debug (Gỡ lỗi).
B. Compile (Biên dịch).
C. Develop (Phát triển).
D. Test (Kiểm thử).
12. Lỗi Null Pointer Exception (hoặc tương tự) xảy ra khi nào?
A. Cố gắng truy cập một đối tượng hoặc biến mà nó chưa được gán giá trị (null).
B. Chương trình chạy quá chậm.
C. Nhập sai mật khẩu.
D. Mã nguồn có quá nhiều vòng lặp.
13. Phát biểu nào sau đây KHÔNG phải là một kỹ thuật gỡ lỗi phổ biến?
A. Thêm các câu lệnh in ra giá trị biến (print statements) để theo dõi.
B. Sử dụng debugger để theo dõi từng bước thực thi.
C. Viết lại toàn bộ chương trình từ đầu nếu có lỗi nhỏ.
D. Kiểm tra log file của chương trình để tìm dấu hiệu lỗi.
14. Lỗi cú pháp (Syntax error) thường xảy ra khi nào?
A. Khi mã nguồn không tuân thủ quy tắc ngữ pháp của ngôn ngữ lập trình.
B. Khi chương trình cho ra kết quả không mong muốn.
C. Khi chương trình chạy quá chậm.
D. Khi chương trình bị treo hoặc đóng đột ngột.
15. Công cụ hỗ trợ lập trình viên tìm và sửa lỗi trong mã nguồn gọi là gì?
A. Debugger.
B. Compiler.
C. Interpreter.
D. Text Editor.
16. Lỗi logic (Logical error) là lỗi gì?
A. Chương trình chạy đúng cú pháp nhưng cho ra kết quả sai.
B. Chương trình không thể biên dịch được.
C. Chương trình gặp lỗi trong quá trình thực thi.
D. Chương trình bị treo do sử dụng quá nhiều bộ nhớ.
17. Phát biểu nào sau đây là đúng về mối quan hệ giữa kiểm thử (testing) và gỡ lỗi (debugging)?
A. Kiểm thử giúp phát hiện lỗi, còn gỡ lỗi giúp sửa lỗi đã phát hiện.
B. Gỡ lỗi là một phần của kiểm thử.
C. Kiểm thử và gỡ lỗi là hai quá trình hoàn toàn tách biệt.
D. Gỡ lỗi chỉ được thực hiện sau khi chương trình hoàn thành.
18. Khi sử dụng debugger, việc xem giá trị của một biến tại một thời điểm cụ thể được gọi là:
A. Watch (Theo dõi).
B. Step Into.
C. Break.
D. Log.
19. Trong các ngôn ngữ lập trình hiện đại, một số lỗi có thể được phát hiện sớm hơn nhờ vào:
A. Trình biên dịch (Compiler) hoặc trình thông dịch (Interpreter).
B. Người dùng cuối.
C. Hệ điều hành.
D. Bộ xử lý trung tâm (CPU).
20. Trong quá trình gỡ lỗi, việc kiểm tra các giá trị của biến tại những thời điểm quan trọng là cần thiết để?
A. Xác định xem logic xử lý có đang hoạt động đúng như dự kiến hay không.
B. Tăng tốc độ thực thi của chương trình.
C. Giảm dung lượng bộ nhớ chương trình sử dụng.
D. Tạo ra các tính năng mới cho chương trình.
21. Lỗi Index out of bounds xảy ra khi nào?
A. Truy cập vào một phần tử của mảng hoặc danh sách bằng chỉ số nằm ngoài phạm vi hợp lệ.
B. Chương trình sử dụng quá nhiều bộ nhớ.
C. Cố gắng thực thi một lệnh không tồn tại.
D. Nhập sai định dạng dữ liệu.
22. Lỗi off-by-one error thường gặp ở đâu trong lập trình?
A. Các vòng lặp và truy cập mảng/danh sách.
B. Các câu lệnh điều kiện (if-else).
C. Việc khai báo biến.
D. Các hàm tính toán số học.
23. Việc ghi lại lịch sử hoạt động của chương trình, bao gồm cả các lỗi phát sinh, vào một tệp tin được gọi là:
A. Logging.
B. Debugging.
C. Compiling.
D. Testing.
24. Khi một chương trình trả về kết quả sai, nhưng không có thông báo lỗi nào xuất hiện và chương trình vẫn chạy bình thường, lỗi đó có thể là:
A. Lỗi logic.
B. Lỗi cú pháp.
C. Lỗi nghiêm trọng.
D. Lỗi ngoại lệ (Exception).
25. Trong lập trình, bug (lỗi) được hiểu phổ biến nhất là gì?
A. Một lỗi sai trong mã nguồn khiến chương trình hoạt động không như mong đợi.
B. Một tính năng mới được nhà phát triển bổ sung vào chương trình.
C. Một vấn đề về hiệu năng làm chậm chương trình.
D. Một lỗi trong quá trình biên dịch mã nguồn.