1. Trong quá trình lập trình, lỗi sai trong mã nguồn được gọi là gì?
A. Bug
B. Variable
C. Function
D. Syntax
2. Tại sao việc viết mã nguồn sạch sẽ, dễ đọc và có cấu trúc rõ ràng lại quan trọng trong việc gỡ lỗi?
A. Giúp lập trình viên khác (hoặc chính mình sau này) dễ dàng hiểu mã và tìm lỗi hơn.
B. Giúp chương trình chạy nhanh hơn.
C. Chỉ quan trọng đối với các chương trình lớn.
D. Không có ảnh hưởng đến quá trình gỡ lỗi.
3. Lỗi thời gian chạy (runtime error) xảy ra khi nào?
A. Chương trình bị dừng hoặc gặp sự cố trong quá trình thực thi, mặc dù cú pháp đúng.
B. Mã nguồn không tuân thủ quy tắc ngữ pháp.
C. Chương trình chạy quá chậm.
D. Kết quả đầu ra không như mong đợi nhưng chương trình vẫn chạy.
4. Một chương trình yêu cầu người dùng nhập tuổi, nhưng người dùng nhập abc. Lỗi này thuộc loại nào?
A. Lỗi thời gian chạy (do nhập liệu không hợp lệ).
B. Lỗi cú pháp.
C. Lỗi logic.
D. Không phải là lỗi, chương trình sẽ xử lý abc như một chuỗi.
5. Để xác định vị trí một lỗi logic, người lập trình thường sử dụng phương pháp nào?
A. In giá trị của các biến tại các điểm khác nhau trong chương trình.
B. Thay đổi toàn bộ mã nguồn.
C. Chỉ dựa vào thông báo lỗi của hệ điều hành.
D. Tăng dung lượng ổ cứng.
6. Nếu một chương trình cố gắng chia một số cho 0, loại lỗi nào có khả năng xảy ra nhất?
A. Lỗi thời gian chạy (Runtime error).
B. Lỗi cú pháp (Syntax error).
C. Lỗi logic (Logic error).
D. Lỗi biên dịch (Compile error).
7. Khi bạn gặp một lỗi cú pháp, trình biên dịch (compiler) hoặc trình thông dịch (interpreter) thường làm gì?
A. Thông báo lỗi cú pháp và dừng quá trình biên dịch/thông dịch.
B. Tự động sửa lỗi và tiếp tục chạy chương trình.
C. Bỏ qua câu lệnh bị lỗi.
D. Hỏi người dùng cách sửa lỗi.
8. Trong quá trình gỡ lỗi, việc ghi lại nhật ký (logging) các sự kiện quan trọng hoặc giá trị biến có lợi ích gì?
A. Giúp tái hiện lại lỗi và phân tích nguyên nhân sau khi lỗi đã xảy ra.
B. Làm cho chương trình tốn nhiều bộ nhớ hơn.
C. Chỉ hữu ích khi chương trình chạy thành công.
D. Tăng tốc độ xử lý của chương trình.
9. Khi một chương trình yêu cầu nhập một giá trị số, nhưng người dùng nhập một giá trị văn bản, hành vi nào sau đây là phổ biến nhất nếu không có xử lý lỗi nhập liệu?
A. Chương trình sẽ báo lỗi thời gian chạy và dừng lại.
B. Chương trình sẽ tự động chuyển đổi văn bản thành số 0.
C. Chương trình sẽ yêu cầu nhập lại.
D. Chương trình sẽ bỏ qua giá trị đó và tiếp tục.
10. Ví dụ nào sau đây là một lỗi cú pháp điển hình trong nhiều ngôn ngữ lập trình?
A. Quên dấu chấm phẩy (;) ở cuối câu lệnh.
B. Sử dụng biến chưa được khai báo.
C. Vòng lặp chạy vô hạn.
D. Chương trình cho ra kết quả sai.
11. Công cụ nào giúp lập trình viên theo dõi từng bước thực thi của chương trình, xem giá trị của biến và trạng thái thực thi?
A. Debugger
B. Text editor
C. Compiler
D. Operating System
12. Đâu KHÔNG phải là một kỹ thuật phổ biến để gỡ lỗi chương trình?
A. Thêm các lệnh in giá trị biến để theo dõi luồng thực thi.
B. Sử dụng công cụ Debugger để kiểm tra từng bước.
C. Thay đổi ngẫu nhiên các giá trị trong mã nguồn cho đến khi chương trình chạy đúng.
D. Đọc kỹ thông báo lỗi và phân tích nguyên nhân.
13. Công việc gỡ lỗi (debugging) bao gồm những bước chính nào?
A. Phát hiện lỗi, xác định vị trí lỗi, sửa lỗi và kiểm tra lại.
B. Viết mã mới hoàn toàn.
C. Chỉ đơn thuần là chạy thử chương trình.
D. Tăng cấu hình máy tính.
14. Khi sửa một lỗi trong chương trình, điều quan trọng nhất cần làm sau khi thay đổi mã nguồn là gì?
A. Biên dịch lại hoặc chạy lại chương trình để kiểm tra xem lỗi đã được khắc phục và không phát sinh lỗi mới.
B. Chỉ đơn giản là lưu lại tệp mã nguồn.
C. Chia sẻ mã nguồn mới cho người khác xem.
D. Xóa bỏ phần mã bị lỗi.
15. Một lập trình viên đang cố gắng tìm hiểu tại sao chương trình lại chậm đi đáng kể sau khi thêm một đoạn mã mới. Đây là dấu hiệu của loại lỗi gì?
A. Có thể là lỗi logic liên quan đến hiệu suất (ví dụ: vòng lặp kém hiệu quả, xử lý dữ liệu lớn không tối ưu).
B. Chắc chắn là lỗi cú pháp.
C. Chương trình đã bị virus tấn công.
D. Cần nâng cấp phần cứng ngay lập tức.
16. Việc sử dụng các hàm hoặc thư viện có sẵn trong ngôn ngữ lập trình có thể giúp giảm thiểu loại lỗi nào?
A. Lỗi cú pháp và lỗi logic (do hàm đã được kiểm chứng).
B. Chỉ lỗi thời gian chạy.
C. Chỉ lỗi do người dùng nhập.
D. Không ảnh hưởng đến bất kỳ loại lỗi nào.
17. Lỗi logic (logic error) là loại lỗi xảy ra khi nào?
A. Chương trình chạy đúng cú pháp nhưng cho kết quả không mong muốn.
B. Chương trình bị dừng đột ngột.
C. Mã nguồn có các ký tự lạ.
D. Biến được khai báo sai kiểu dữ liệu.
18. Nếu một chương trình không trả về kết quả mong đợi, nhưng không có thông báo lỗi nào xuất hiện, bạn nên nghi ngờ loại lỗi nào nhiều nhất?
A. Lỗi logic.
B. Lỗi cú pháp.
C. Lỗi thời gian chạy.
D. Lỗi hệ điều hành.
19. Tại sao việc đọc kỹ thông báo lỗi từ trình biên dịch hoặc trình thông dịch lại quan trọng?
A. Thông báo lỗi thường chỉ ra loại lỗi và vị trí xảy ra lỗi, giúp khoanh vùng nguyên nhân nhanh chóng.
B. Thông báo lỗi chỉ là thông tin phụ không cần thiết.
C. Thông báo lỗi chỉ xuất hiện khi chương trình bị lỗi phần cứng.
D. Thông báo lỗi là do máy tính bị virus.
20. Lỗi cú pháp (syntax error) là loại lỗi xảy ra khi nào?
A. Viết mã không đúng quy tắc ngữ pháp của ngôn ngữ lập trình.
B. Chương trình thực hiện sai một phép tính.
C. Chương trình yêu cầu quá nhiều tài nguyên hệ thống.
D. Dữ liệu đầu vào không hợp lệ.
21. Trong tình huống sau, Nếu tổng hai số a và b lớn hơn 100, thì in ra Lớn, ngược lại in ra Nhỏ. Nhưng chương trình lại in Nhỏ khi tổng là 150. Đây là lỗi gì?
A. Lỗi logic.
B. Lỗi cú pháp.
C. Lỗi biên dịch.
D. Lỗi thời gian chạy.
22. Trong quá trình phát triển phần mềm, tại sao việc kiểm thử (testing) lại quan trọng đến vậy?
A. Để phát hiện sớm các lỗi và đảm bảo chất lượng sản phẩm trước khi bàn giao.
B. Để làm cho chương trình trông phức tạp hơn.
C. Để tăng thời gian phát triển.
D. Để thu hút sự chú ý của người dùng.
23. Khi phát hiện một lỗi, bước đầu tiên và quan trọng nhất để sửa nó là gì?
A. Hiểu rõ bản chất của lỗi và nguyên nhân có thể dẫn đến nó.
B. Thay đổi ngay lập tức một vài dòng mã mà bạn nghi ngờ.
C. Xóa bỏ toàn bộ chức năng liên quan đến lỗi.
D. Hỏi người khác sửa giúp mà không tìm hiểu.
24. Khi sửa một lỗi, nếu việc sửa đó vô tình gây ra một lỗi mới ở phần khác của chương trình, đó được gọi là gì?
A. Lỗi hồi quy (Regression error).
B. Lỗi cú pháp mới.
C. Lỗi logic tạm thời.
D. Lỗi do người dùng.
25. Khi một chương trình máy tính hoạt động không như mong đợi hoặc bị dừng đột ngột, nguyên nhân có thể là gì?
A. Có lỗi logic hoặc lỗi cú pháp trong mã nguồn.
B. Thiếu bộ nhớ RAM.
C. Màn hình máy tính bị hỏng.
D. Kết nối Internet không ổn định.