1. Khi lập trình, việc chia nhỏ một bài toán lớn thành các bài toán con dễ quản lý hơn được gọi là gì?
A. Biên dịch (Compilation)
B. Gỡ lỗi (Debugging)
C. Phân rã vấn đề (Problem Decomposition)
D. Tối ưu hóa (Optimization)
2. Trong lập trình, "vòng lặp while" khác với "vòng lặp for" ở điểm nào?
A. Vòng lặp while luôn thực thi ít nhất một lần, còn vòng lặp for thì không.
B. Vòng lặp while dùng để lặp với số lần xác định trước, còn vòng lặp for dùng khi điều kiện lặp không rõ ràng.
C. Vòng lặp while lặp chừng nào điều kiện còn đúng, còn vòng lặp for thường dùng với biến đếm.
D. Cả hai đều có chức năng và cách sử dụng giống hệt nhau.
3. Trong lập trình, một đoạn mã được thực thi lặp đi lặp lại nhiều lần cho đến khi một điều kiện nhất định được thỏa mãn được gọi là gì?
A. Vòng lặp (Loop)
B. Biến (Variable)
C. Hàm (Function)
D. Câu lệnh điều kiện (Conditional Statement)
4. Khi một chương trình máy tính gặp lỗi và dừng hoạt động đột ngột, đó thường được gọi là gì?
A. Biên dịch lỗi (Compilation Error)
B. Lỗi cú pháp (Syntax Error)
C. Lỗi thực thi (Runtime Error / Crash)
D. Lỗi logic (Logic Error)
5. Đâu là một ví dụ về "kiểu dữ liệu boolean"?
A. 123
B. "Apple"
C. True
D. 45.67
6. Khái niệm "gỡ lỗi" (debugging) trong lập trình đề cập đến hoạt động nào?
A. Viết mã nguồn mới cho chương trình.
B. Tìm kiếm, xác định và sửa các lỗi trong chương trình.
C. Tối ưu hóa tốc độ chạy của chương trình.
D. Thiết kế giao diện người dùng.
7. Phát biểu nào sau đây là đúng về "toán tử logic OR" (|| hoặc "or")?
A. Trả về giá trị đúng nếu CẢ HAI điều kiện đều đúng.
B. Trả về giá trị đúng nếu CHỈ MỘT trong hai điều kiện là đúng.
C. Trả về giá trị đúng nếu CẢ HAI điều kiện đều sai.
D. Trả về giá trị đúng nếu ÍT NHẤT MỘT trong các điều kiện là đúng.
8. Phát biểu nào sau đây mô tả đúng "lỗi logic" (logic error) trong chương trình?
A. Chương trình bị dừng đột ngột trong quá trình chạy.
B. Chương trình có lỗi cú pháp, không thể biên dịch.
C. Chương trình chạy mà không báo lỗi nhưng cho ra kết quả sai.
D. Chương trình không thể khởi động.
9. Phát biểu nào sau đây đúng về "vòng lặp for"?
A. Chỉ được sử dụng khi biết trước số lần lặp.
B. Chỉ được sử dụng khi điều kiện lặp dựa trên một biến đếm tăng hoặc giảm.
C. Luôn thực thi ít nhất một lần.
D. Không cần điều kiện để kết thúc vòng lặp.
10. Khi nói về "biến" trong lập trình, phát biểu nào sau đây là chính xác nhất?
A. Là một giá trị không thay đổi trong suốt quá trình thực thi chương trình.
B. Là một tên gọi đại diện cho một vùng nhớ có thể lưu trữ giá trị và giá trị này có thể thay đổi.
C. Chỉ có thể lưu trữ các giá trị số.
D. Là một lệnh bắt buộc phải có trong mọi chương trình.
11. Trong lập trình, "ngôn ngữ thông dịch" (interpreted language) khác với "ngôn ngữ biên dịch" (compiled language) ở điểm nào?
A. Ngôn ngữ thông dịch yêu cầu biên dịch toàn bộ mã nguồn trước khi chạy.
B. Ngôn ngữ thông dịch thực thi mã nguồn từng dòng một, không cần bước biên dịch riêng biệt.
C. Ngôn ngữ biên dịch không cần máy ảo.
D. Ngôn ngữ thông dịch luôn có tốc độ thực thi nhanh hơn.
12. Đâu là một ví dụ về "kiểu dữ liệu số thực" (floating-point number)?
A. 200
B. -10
C. 5.789
D. "Programming"
13. Trong ngôn ngữ lập trình, toán tử nào dùng để so sánh hai giá trị có bằng nhau hay không?
14. Đâu là một ví dụ về "kiểu dữ liệu số nguyên"?
A. 3.14
B. Hello World
C. 100
D. True
15. Trong lập trình, "toán tử logic AND" (&& hoặc "and") được sử dụng để làm gì?
A. Trả về giá trị đúng nếu CẢ HAI điều kiện đều đúng.
B. Trả về giá trị đúng nếu CHỈ MỘT trong hai điều kiện là đúng.
C. Trả về giá trị đúng nếu CẢ HAI điều kiện đều sai.
D. Đảo ngược kết quả của một điều kiện.
16. Khi bạn cần lưu trữ một danh sách các mục có cùng kiểu dữ liệu, bạn nên sử dụng cấu trúc dữ liệu nào?
A. Biến đơn lẻ (Single Variable)
B. Mảng (Array)
C. Toán tử (Operator)
D. Câu lệnh điều kiện (Conditional Statement)
17. Trong Tin học, "thuật toán" có thể được biểu diễn dưới những hình thức nào?
A. Chỉ bằng ngôn ngữ lập trình.
B. Chỉ bằng sơ đồ khối.
C. Bằng ngôn ngữ tự nhiên, sơ đồ khối hoặc ngôn ngữ lập trình.
D. Chỉ bằng các ký hiệu toán học.
18. Đâu là đặc điểm chính của thuật toán?
A. Phải có khả năng lặp vô hạn.
B. Phải có tính xác định và hữu hạn.
C. Chỉ có thể biểu diễn bằng ngôn ngữ tự nhiên.
D. Không cần có đầu vào.
19. Trong lập trình, mục đích chính của việc sử dụng "biến" là gì?
A. Để lưu trữ các câu lệnh của chương trình.
B. Để đại diện cho các giá trị dữ liệu có thể thay đổi trong quá trình thực thi.
C. Để định nghĩa cấu trúc của vòng lặp.
D. Để hiển thị thông báo lỗi cho người dùng.
20. Phát biểu nào sau đây mô tả đúng chức năng của "vòng lặp do-while"?
A. Luôn thực thi ít nhất một lần, sau đó kiểm tra điều kiện để tiếp tục lặp.
B. Chỉ thực thi khi điều kiện ban đầu là đúng.
C. Lặp lại một khối lệnh với số lần xác định trước.
D. Sẽ không bao giờ bị lặp vô hạn.
21. Phát biểu nào sau đây mô tả đúng chức năng của câu lệnh "if-else" trong lập trình?
A. Thực hiện một khối lệnh chỉ khi điều kiện là sai.
B. Thực hiện một khối lệnh khi điều kiện là đúng, và thực hiện một khối lệnh khác khi điều kiện là sai.
C. Lặp lại một khối lệnh vô số lần.
D. Thực hiện một khối lệnh một số lần xác định trước.
22. Ngôn ngữ lập trình bậc cao khác với ngôn ngữ lập trình bậc thấp ở điểm cơ bản nào?
A. Gần gũi với ngôn ngữ tự nhiên của con người hơn.
B. Yêu cầu người lập trình hiểu sâu về cấu trúc phần cứng máy tính.
C. Chỉ có thể chạy trực tiếp trên phần cứng mà không cần thông dịch hay biên dịch.
D. Tốc độ thực thi luôn nhanh hơn ngôn ngữ bậc thấp.
23. Phát biểu nào sau đây mô tả đúng vai trò của "biên dịch" (compilation) trong quá trình phát triển phần mềm?
A. Biến đổi mã máy thành mã nguồn dễ đọc.
B. Biến đổi mã nguồn (ngôn ngữ lập trình bậc cao) thành mã máy (ngôn ngữ mà máy tính hiểu).
C. Kiểm tra lỗi logic trong chương trình.
D. Chạy thử nghiệm chương trình.
24. Phát biểu nào sau đây đúng về "kiểu dữ liệu chuỗi" (string)?
A. Chỉ có thể lưu trữ các ký tự đặc biệt.
B. Là một dãy các ký tự được bao quanh bởi dấu nháy đơn hoặc nháy kép.
C. Luôn được lưu trữ dưới dạng số nguyên.
D. Không thể chứa khoảng trắng.
25. Phát biểu nào sau đây là đúng về "hàm" (function) trong lập trình?
A. Là một đoạn mã chỉ được thực thi một lần duy nhất khi chương trình bắt đầu.
B. Là một khối mã có tên, có thể nhận đầu vào và trả về một giá trị, cho phép tái sử dụng.
C. Chỉ có thể chứa các câu lệnh gán giá trị.
D. Là bắt buộc phải có trong mọi chương trình.