1. Nếu một vòng lặp for có điều kiện khởi tạo là i = 0 và điều kiện lặp là i < 10, vòng lặp này sẽ thực thi bao nhiêu lần?
A. 9 lần (từ 0 đến 8).
B. 10 lần (từ 0 đến 9).
C. 11 lần (từ 0 đến 10).
D. Vô số lần nếu không có bước nhảy.
2. Một lỗi phổ biến khi sử dụng vòng lặp là gì?
A. Vòng lặp không bao giờ kết thúc (infinite loop).
B. Vòng lặp chỉ chạy đúng một lần.
C. Vòng lặp yêu cầu nhiều bộ nhớ hơn bình thường.
D. Vòng lặp không thể thay đổi biến.
3. Lỗi logic trong chương trình là loại lỗi gì?
A. Lỗi do viết sai các từ khóa hoặc ký hiệu trong ngôn ngữ lập trình.
B. Lỗi do cấu trúc chương trình không tuân theo quy tắc của ngôn ngữ lập trình.
C. Lỗi do thuật toán hoặc cách triển khai ý tưởng sai, dẫn đến kết quả không mong muốn.
D. Lỗi do thiết bị phần cứng không hoạt động đúng cách.
4. Nếu một chương trình yêu cầu nhập dữ liệu và chương trình bị treo hoặc thoát đột ngột khi nhập một giá trị cụ thể, lỗi này có thể thuộc loại nào?
A. Lỗi cú pháp.
B. Lỗi logic do xử lý dữ liệu nhập sai.
C. Lỗi biên dịch.
D. Lỗi phần cứng.
5. Công cụ nào thường được sử dụng để theo dõi giá trị của biến trong quá trình thực thi chương trình?
A. Trình soạn thảo văn bản.
B. Máy tính bỏ túi.
C. Trình gỡ lỗi (Debugger).
D. Máy in.
6. Đâu là một cách tiếp cận tốt để tìm lỗi trong một chương trình lớn?
A. Kiểm tra ngẫu nhiên các phần của chương trình.
B. Chia nhỏ chương trình thành các module nhỏ hơn và kiểm tra từng module.
C. Chạy chương trình và hy vọng lỗi tự biến mất.
D. Chỉ kiểm tra phần cuối cùng của chương trình.
7. Việc thêm các câu lệnh print (hoặc write) vào chương trình để hiển thị giá trị biến được gọi là phương pháp gì?
A. Gỡ lỗi bằng trình biên dịch.
B. Gỡ lỗi bằng cách ghi log.
C. Gỡ lỗi bằng cách đặt breakpoint.
D. Gỡ lỗi bằng cách sử dụng trình phân tích.
8. Khi một chương trình hoạt động không ổn định (ví dụ: chạy lúc được lúc không), điều này thường gợi ý vấn đề gì?
A. Chương trình có lỗi cú pháp nghiêm trọng.
B. Lỗi logic phụ thuộc vào điều kiện ngẫu nhiên hoặc trạng thái hệ thống.
C. Trình biên dịch bị lỗi.
D. Thiếu bộ nhớ RAM.
9. Phương pháp Rubber duck debugging là gì?
A. Sử dụng con vịt cao su để gõ vào bàn phím.
B. Giải thích từng dòng mã của chương trình cho một đối tượng không phải người (như con vịt cao su).
C. Kiểm tra lỗi bằng cách ném chương trình vào con vịt cao su.
D. Tìm kiếm lỗi trên mạng xã hội.
10. Yếu tố nào sau đây KHÔNG phải là một bước trong quy trình gỡ lỗi thông thường?
A. Xác định lỗi.
B. Tìm hiểu nguyên nhân gây lỗi.
C. Thực hiện sửa lỗi.
D. Thêm tính năng mới vào chương trình.
11. Lệnh Step Into (hoặc tương đương) trong trình gỡ lỗi khác với Step Over ở điểm nào?
A. Step Into thực thi toàn bộ hàm, còn Step Over chỉ thực thi một dòng.
B. Step Into đi vào chi tiết bên trong các hàm được gọi, còn Step Over thực thi hàm đó như một khối lệnh.
C. Step Into chỉ dành cho các hàm hệ thống, còn Step Over cho các hàm người dùng tự định nghĩa.
D. Không có sự khác biệt đáng kể.
12. Trong lập trình, bug là thuật ngữ dùng để chỉ gì?
A. Một tính năng mới của chương trình.
B. Một lỗi hoặc sai sót trong chương trình.
C. Một đoạn mã được viết tốt.
D. Một thuật toán hiệu quả.
13. Tại sao việc đặt tên biến rõ ràng và có ý nghĩa lại quan trọng trong việc gỡ lỗi?
A. Để làm cho chương trình trông chuyên nghiệp hơn.
B. Giúp người lập trình dễ dàng hiểu được mục đích của biến và theo dõi luồng dữ liệu.
C. Tăng tốc độ thực thi của chương trình.
D. Giảm số lượng dòng mã cần viết.
14. Tại sao việc gỡ lỗi lại quan trọng trong phát triển phần mềm?
A. Để làm cho chương trình chạy chậm hơn.
B. Để đảm bảo chương trình hoạt động chính xác, ổn định và đáp ứng yêu cầu.
C. Để tăng kích thước tệp tin chương trình.
D. Để làm phức tạp thêm quá trình lập trình.
15. Để gỡ lỗi hiệu quả, người lập trình nên có phẩm chất nào?
A. Thiếu kiên nhẫn và hay đổ lỗi.
B. Tư duy logic, cẩn thận và kiên trì.
C. Chỉ tập trung vào viết mã mới.
D. Tránh đọc tài liệu và hướng dẫn.
16. Trong quá trình viết chương trình, khi gặp lỗi cú pháp, điều gì thường xảy ra với trình biên dịch?
A. Chương trình vẫn chạy bình thường nhưng có thể cho kết quả sai.
B. Trình biên dịch sẽ báo lỗi và dừng quá trình biên dịch.
C. Chương trình sẽ tự động sửa lỗi cú pháp.
D. Chương trình sẽ bỏ qua lỗi cú pháp và tiếp tục chạy.
17. Khi gỡ lỗi, việc giả định rằng mã này chắc chắn đúng có thể dẫn đến hệ quả gì?
A. Giúp tìm ra lỗi nhanh hơn.
B. Có thể bỏ sót lỗi nằm ở chính đoạn mã đó.
C. Làm cho trình biên dịch hoạt động hiệu quả hơn.
D. Tăng độ tin cậy của chương trình.
18. Nếu một chương trình yêu cầu người dùng nhập tuổi và người dùng nhập một chuỗi ký tự thay vì số, lỗi nào có thể xảy ra?
A. Lỗi cú pháp.
B. Lỗi logic.
C. Lỗi kiểu dữ liệu (Type error) hoặc lỗi ngoại lệ (Exception) khi chuyển đổi.
D. Lỗi biên dịch.
19. Trong quá trình gỡ lỗi, trace (dò vết) chương trình có nghĩa là gì?
A. Kiểm tra tốc độ thực thi của chương trình.
B. Theo dõi từng bước thực thi của chương trình và giá trị các biến.
C. Đếm số dòng mã đã viết.
D. Kiểm tra dung lượng bộ nhớ chương trình sử dụng.
20. Khi gặp lỗi Index out of bounds, điều này thường chỉ ra vấn đề gì?
A. Biến không được khai báo.
B. Truy cập vào một phần tử của mảng hoặc danh sách với chỉ số (index) không hợp lệ.
C. Lỗi logic trong phép toán.
D. Lỗi cú pháp trong câu lệnh điều kiện.
21. Phát biểu nào sau đây mô tả đúng nhất về breakpoint trong trình gỡ lỗi?
A. Là một lỗi cú pháp đã được xác định.
B. Là một điểm dừng tạm thời trong quá trình thực thi chương trình.
C. Là một thông báo lỗi từ trình biên dịch.
D. Là một tập hợp các lệnh đã được gỡ lỗi.
22. Khi gặp lỗi Division by zero, điều này có nghĩa là gì?
A. Chương trình đang cố gắng chia một số cho chính nó.
B. Chương trình đang cố gắng chia cho một số nguyên dương.
C. Chương trình đang cố gắng chia một số cho không.
D. Chương trình đang thực hiện phép chia số thực.
23. Khi một chương trình hoạt động sai, bước đầu tiên cần làm để gỡ lỗi là gì?
A. Viết lại toàn bộ chương trình từ đầu.
B. Kiểm tra lại từng dòng lệnh để xác định nguyên nhân gây lỗi.
C. Thay đổi ngẫu nhiên các giá trị biến.
D. Hỏi người khác mà không tự tìm hiểu.
24. Khi sử dụng trình gỡ lỗi, lệnh Step Over (hoặc tương đương) có chức năng gì?
A. Thực thi toàn bộ chương trình cho đến khi kết thúc.
B. Thực thi dòng lệnh hiện tại và chuyển sang dòng lệnh kế tiếp, không đi vào chi tiết các hàm gọi.
C. Thực thi dòng lệnh hiện tại và đi vào chi tiết các hàm được gọi.
D. Bỏ qua việc thực thi dòng lệnh hiện tại.
25. Nếu chương trình cho ra kết quả đúng với một bộ dữ liệu đầu vào nhưng sai với bộ dữ liệu khác, lỗi này có khả năng là gì?
A. Lỗi cú pháp nghiêm trọng.
B. Lỗi logic trong cách xử lý một trường hợp cụ thể.
C. Chương trình đã hoàn hảo.
D. Lỗi do trình biên dịch.