1. Khi một chương trình yêu cầu nhập dữ liệu từ người dùng, nhưng người dùng lại nhập một giá trị không phù hợp với kiểu dữ liệu mong đợi (ví dụ: nhập chữ thay vì số), lỗi gì có thể xảy ra?
A. Lỗi cú pháp
B. Lỗi logic
C. Lỗi nhập liệu không hợp lệ (Invalid Input Error) hoặc Lỗi kiểu dữ liệu (Type Error)
D. Lỗi vô hạn
2. Khi một hàm (function) hoặc phương thức (method) được gọi với các tham số không hợp lệ hoặc không đúng kiểu, lỗi gì có thể xảy ra?
A. Lỗi cú pháp
B. Lỗi logic
C. Lỗi gọi hàm/phương thức không hợp lệ (Invalid Function/Method Call Error)
D. Lỗi biên dịch
3. Một lập trình viên muốn kiểm tra xem biến `tuoi` có lớn hơn hoặc bằng 18 hay không, nhưng lại viết điều kiện là `tuoi > 18`. Lỗi này thuộc loại nào?
A. Lỗi cú pháp
B. Lỗi thực thi
C. Lỗi logic
D. Lỗi không xác định
4. Một lập trình viên muốn sắp xếp một danh sách các số theo thứ tự tăng dần, nhưng lại sử dụng thuật toán sắp xếp theo thứ tự giảm dần. Kết quả đầu ra sẽ là gì?
A. Chương trình sẽ bị lỗi cú pháp.
B. Chương trình sẽ chạy bình thường nhưng danh sách sẽ được sắp xếp sai thứ tự.
C. Chương trình sẽ báo lỗi thực thi.
D. Chương trình sẽ không thể chạy.
5. Phát biểu nào sau đây là đúng về sự khác biệt giữa lỗi logic và lỗi thực thi?
A. Lỗi logic xảy ra khi biên dịch, lỗi thực thi xảy ra khi chạy.
B. Lỗi logic khiến chương trình cho kết quả sai, lỗi thực thi khiến chương trình dừng đột ngột hoặc gặp sự cố.
C. Cả hai loại lỗi đều do cú pháp sai.
D. Lỗi thực thi dễ phát hiện hơn lỗi logic.
6. Khi chương trình cố gắng thực hiện một thao tác với kiểu dữ liệu không tương thích (ví dụ: cộng một chuỗi với một số nguyên mà không chuyển đổi kiểu), lỗi gì thường xuất hiện?
A. Lỗi cú pháp
B. Lỗi logic
C. Lỗi kiểu dữ liệu (Type Error)
D. Lỗi không xác định
7. Một chương trình xử lý ngày tháng, nhưng không có cơ chế kiểm tra xem năm nhập vào có phải là năm nhuận hay không khi tính toán số ngày. Điều này có thể dẫn đến lỗi gì trong các trường hợp cụ thể?
A. Lỗi cú pháp
B. Lỗi thực thi
C. Lỗi logic
D. Lỗi biên dịch
8. Một lập trình viên quên khai báo một biến trước khi sử dụng nó trong một ngôn ngữ lập trình yêu cầu khai báo biến rõ ràng. Lỗi gì sẽ xảy ra?
A. Lỗi logic
B. Lỗi cú pháp hoặc lỗi biến chưa được khai báo (Undefined Variable Error)
C. Chương trình sẽ tự động khai báo biến đó.
D. Lỗi thực thi
9. Phát biểu nào sau đây mô tả chính xác nhất lỗi cú pháp (Syntax Error) trong lập trình?
A. Chương trình chạy nhưng cho kết quả sai.
B. Chương trình không thể biên dịch hoặc thông dịch do vi phạm quy tắc ngữ pháp của ngôn ngữ lập trình.
C. Chương trình gặp sự cố trong quá trình thực thi, ví dụ như chia cho 0.
D. Chương trình hoạt động đúng nhưng không đạt được mục tiêu đề ra ban đầu.
10. Nếu một chương trình thực hiện phép tính `5 % 2` (phép chia lấy dư), kết quả mong đợi là gì?
A. 2.5
B. 2
C. 1
D. Lỗi chia cho 0
11. Phát biểu nào sau đây là đúng về cách xử lý lỗi trong lập trình?
A. Mọi lỗi đều có thể được ngăn chặn hoàn toàn.
B. Việc xử lý lỗi giúp chương trình chạy ổn định hơn khi gặp sự cố.
C. Chỉ có lỗi cú pháp mới cần được xử lý.
D. Lỗi logic không thể được phát hiện.
12. Lỗi nào thường xuất hiện khi cố gắng truy cập một phần tử của mảng (array) hoặc danh sách (list) bằng một chỉ số (index) nằm ngoài phạm vi hợp lệ của nó?
A. Lỗi cú pháp
B. Lỗi logic
C. Lỗi truy cập ngoài phạm vi (Index Out of Bounds Error)
D. Lỗi định dạng
13. Khi lập trình, việc sử dụng một tên biến không hợp lệ (ví dụ: bắt đầu bằng số, chứa ký tự đặc biệt không cho phép) sẽ dẫn đến loại lỗi nào?
A. Lỗi logic
B. Lỗi thực thi
C. Lỗi cú pháp
D. Lỗi ngoại lệ
14. Trong các bước gỡ lỗi, việc biên dịch (compiling) hay thông dịch (interpreting) chương trình có vai trò gì?
A. Nó chỉ chạy chương trình mà không phát hiện lỗi.
B. Nó giúp phát hiện lỗi cú pháp trước khi chương trình thực thi.
C. Nó tự động sửa tất cả các loại lỗi.
D. Nó chỉ dùng để tối ưu hóa tốc độ chương trình.
15. Trong lập trình, loại lỗi nào thường xảy ra khi chương trình thực hiện một hành động không mong muốn hoặc cho kết quả sai, mặc dù cú pháp của chương trình là đúng?
A. Lỗi cú pháp (Syntax Error)
B. Lỗi logic (Logic Error)
C. Lỗi thực thi (Runtime Error)
D. Lỗi ngoại lệ (Exception Error)
16. Trong ngôn ngữ lập trình, ngoại lệ (exception) thường được định nghĩa là gì?
A. Một lỗi cú pháp không thể tránh khỏi.
B. Một sự kiện bất thường xảy ra trong quá trình thực thi chương trình, có thể được xử lý.
C. Một lỗi logic nghiêm trọng không thể sửa.
D. Một lỗi chỉ xảy ra khi chương trình kết thúc.
17. Khi một chương trình cố gắng ghi dữ liệu vào một vùng nhớ không được phép truy cập, lỗi gì thường xảy ra?
A. Lỗi cú pháp
B. Lỗi logic
C. Lỗi truy cập bộ nhớ (Memory Access Error) hoặc Lỗi phân đoạn (Segmentation Fault)
D. Lỗi vô hạn
18. Một lập trình viên viết mã để tính tổng hai số nguyên `a` và `b`, nhưng lại sử dụng toán tử trừ (`-`) thay vì cộng (`+`). Kết quả chương trình sẽ là gì?
A. Chương trình sẽ báo lỗi cú pháp.
B. Chương trình sẽ chạy và cho ra kết quả là hiệu của hai số, thể hiện một lỗi logic.
C. Chương trình sẽ bị dừng đột ngột.
D. Chương trình sẽ không nhận diện được lỗi.
19. Một chương trình được thiết kế để lặp lại một hành động 10 lần, nhưng do sai sót trong điều kiện vòng lặp, nó lại thực hiện hành động đó 11 lần. Đây là ví dụ của loại lỗi nào?
A. Lỗi cú pháp
B. Lỗi logic
C. Lỗi thực thi
D. Lỗi không xác định
20. Phát biểu nào sau đây mô tả đúng nhất về mối quan hệ giữa lỗi logic và kết quả đầu ra của chương trình?
A. Lỗi logic không ảnh hưởng đến kết quả đầu ra.
B. Lỗi logic dẫn đến kết quả đầu ra không chính xác hoặc không mong muốn.
C. Lỗi logic luôn làm chương trình dừng lại.
D. Lỗi logic chỉ xảy ra khi có lỗi cú pháp.
21. Phát biểu nào sau đây mô tả đúng nhất về vòng lặp vô hạn (infinite loop) trong lập trình?
A. Vòng lặp chỉ chạy đúng một lần.
B. Vòng lặp thực hiện một tập hợp các lệnh lặp đi lặp lại mà không có điểm dừng.
C. Vòng lặp không thực hiện lệnh nào.
D. Vòng lặp chỉ chạy khi người dùng yêu cầu.
22. Xét đoạn mã Python sau: `x = 10; y = 0; print(x / y)`. Loại lỗi nào có khả năng xảy ra nhất khi thực thi đoạn mã này?
A. Lỗi cú pháp
B. Lỗi logic
C. Lỗi chia cho 0 (ZeroDivisionError)
D. Lỗi kiểu dữ liệu
23. Phát biểu nào sau đây KHÔNG phải là mục đích của việc gỡ lỗi (debugging)?
A. Tìm và sửa các lỗi trong chương trình.
B. Nâng cao hiệu suất và độ tin cậy của chương trình.
C. Thêm các tính năng mới cho chương trình.
D. Hiểu rõ hơn về cách chương trình hoạt động.
24. Trong quá trình gỡ lỗi, khi bạn đặt một điểm dừng (breakpoint) trong mã nguồn, mục đích chính là gì?
A. Để chương trình chạy nhanh hơn.
B. Để tạm dừng chương trình tại một dòng mã cụ thể và kiểm tra trạng thái của các biến.
C. Để tự động sửa lỗi tại dòng đó.
D. Để biên dịch lại chương trình.
25. Trong quá trình gỡ lỗi (debugging), hành động nào là quan trọng nhất để xác định nguyên nhân của một lỗi?
A. Thay đổi ngẫu nhiên các dòng mã.
B. Thêm nhiều câu lệnh `print` để theo dõi giá trị của biến.
C. Hiểu rõ thông báo lỗi và cách chương trình hoạt động.
D. Biên dịch lại toàn bộ chương trình.