1. Trong các bước phát triển phần mềm, bước nào thường bao gồm việc xác định yêu cầu chức năng và phi chức năng của hệ thống?
A. Kiểm thử (Testing)
B. Triển khai (Deployment)
C. Phân tích yêu cầu (Requirements Analysis)
D. Bảo trì (Maintenance)
2. Tại sao việc sử dụng hàm (function) lại quan trọng trong lập trình?
A. Để làm cho chương trình chậm hơn.
B. Để tăng sự phức tạp của mã nguồn.
C. Để tái sử dụng mã, tổ chức chương trình và làm cho mã dễ đọc, dễ bảo trì hơn.
D. Để chỉ có thể thực thi mã một lần.
3. Khi lập trình, giải thuật (algorithm) có nghĩa là gì?
A. Một ngôn ngữ lập trình cụ thể.
B. Một chuỗi các bước hữu hạn, rõ ràng để giải quyết một vấn đề hoặc thực hiện một nhiệm vụ.
C. Một loại dữ liệu trong máy tính.
D. Một giao diện đồ họa người dùng.
4. Trong lập trình, biên dịch (compilation) là quá trình gì?
A. Chạy trực tiếp mã nguồn trên máy tính.
B. Chuyển đổi mã nguồn từ ngôn ngữ lập trình bậc cao sang mã máy hoặc mã trung gian để máy tính có thể hiểu và thực thi.
C. Tìm kiếm và sửa lỗi trong chương trình.
D. Lưu trữ dữ liệu vào bộ nhớ.
5. Khi một chương trình cần thực hiện một hành động dựa trên việc kiểm tra nhiều điều kiện liên tiếp, cấu trúc nào thường được ưu tiên sử dụng?
A. Vòng lặp for.
B. Hàm.
C. Câu lệnh if-else if-else hoặc switch-case.
D. Biến.
6. Trong lập trình, syntax error (lỗi cú pháp) xảy ra khi nào?
A. Chương trình chạy sai logic.
B. Mã nguồn không tuân thủ các quy tắc ngữ pháp của ngôn ngữ lập trình.
C. Chương trình hết bộ nhớ.
D. Dữ liệu đầu vào không hợp lệ.
7. Đâu là một ví dụ về kiểu dữ liệu nguyên thủy (primitive data type) trong nhiều ngôn ngữ lập trình?
A. Chuỗi (String)
B. Mảng (Array)
C. Số nguyên (Integer)
D. Đối tượng (Object)
8. Ngôn ngữ lập trình nào thường được dùng để phát triển ứng dụng trên hệ điều hành iOS của Apple?
A. Java
B. Python
C. Swift hoặc Objective-C
D. C#
9. Phát biểu nào sau đây mô tả đúng nhất về biến trong lập trình?
A. Là một chuỗi ký tự cố định không thay đổi.
B. Là một vùng nhớ dùng để lưu trữ dữ liệu có thể thay đổi trong quá trình thực thi chương trình.
C. Là một hàm dùng để thực hiện một tác vụ cụ thể.
D. Là một câu lệnh điều kiện để kiểm tra logic.
10. Trong thiết kế thuật toán, việc xác định các bước xử lý theo một trình tự logic và có hệ thống được gọi là gì?
A. Mã hóa
B. Gỡ lỗi
C. Lập trình
D. Thiết kế thuật toán
11. Khái niệm mảng (array) trong lập trình dùng để làm gì?
A. Lưu trữ một giá trị duy nhất.
B. Lưu trữ một tập hợp các giá trị cùng kiểu dữ liệu, có thể truy cập bằng chỉ số.
C. Thực hiện các phép toán số học phức tạp.
D. Tạo giao diện người dùng đồ họa.
12. Khái niệm hằng số trong lập trình đề cập đến loại dữ liệu nào?
A. Dữ liệu có thể thay đổi bất kỳ lúc nào.
B. Dữ liệu không thể thay đổi giá trị trong suốt quá trình thực thi chương trình.
C. Dữ liệu chỉ tồn tại trong một khối lệnh cụ thể.
D. Dữ liệu được nhập từ bàn phím.
13. Một câu lệnh điều kiện if-else được sử dụng để làm gì trong lập trình?
A. Lặp lại một hành động nhiều lần.
B. Thực hiện một hành động dựa trên việc kiểm tra một điều kiện.
C. Định nghĩa một hàm mới.
D. Gán giá trị cho một biến.
14. Phát biểu nào mô tả đúng nhất về khái niệm vòng lặp vô hạn (infinite loop)?
A. Vòng lặp chỉ chạy đúng một lần.
B. Vòng lặp thực hiện một số lần lặp rất lớn.
C. Vòng lặp không có điều kiện dừng hoặc điều kiện dừng không bao giờ được đáp ứng, khiến nó lặp mãi mãi.
D. Vòng lặp chỉ chạy khi có kết nối mạng.
15. Ngôn ngữ lập trình nào thường được sử dụng để phát triển các ứng dụng web phía máy chủ (server-side)?
A. HTML
B. CSS
C. JavaScript (cả client-side và server-side với Node.js)
D. PHP hoặc Python
16. Khi một chương trình máy tính hoạt động không như mong đợi, việc tìm và sửa các lỗi sai được gọi là gì?
A. Biên dịch
B. Gỡ lỗi (Debugging)
C. Tối ưu hóa
D. Mô phỏng
17. Trong lập trình, cấu trúc lặp for thường được sử dụng khi nào?
A. Khi cần thực hiện một khối lệnh một lần duy nhất.
B. Khi cần thực hiện một khối lệnh một số lần xác định trước.
C. Khi cần thực hiện một khối lệnh cho đến khi một điều kiện cụ thể bị sai.
D. Khi cần chọn một trong nhiều khối lệnh để thực thi.
18. Ngôn ngữ lập trình nào được sử dụng rộng rãi trong giáo dục và phát triển ứng dụng đơn giản nhờ cú pháp dễ đọc, dễ hiểu?
A. C++
B. Java
C. Python
D. Assembly
19. Phát biểu nào sau đây mô tả đúng về ngôn ngữ lập trình bậc cao?
A. Gần với ngôn ngữ máy, khó đọc và viết.
B. Gần với ngôn ngữ tự nhiên của con người, dễ đọc và viết hơn.
C. Chỉ có thể thực thi trên các siêu máy tính.
D. Không cần biên dịch hoặc thông dịch.
20. Khái niệm kiểu dữ liệu chuỗi (string) trong lập trình dùng để biểu diễn loại dữ liệu nào?
A. Các số nguyên.
B. Các ký tự hoặc một dãy các ký tự.
C. Các giá trị đúng hoặc sai.
D. Các số có phần thập phân.
21. Trong lập trình, vòng lặp while khác với vòng lặp for chủ yếu ở điểm nào?
A. Vòng lặp while luôn thực hiện ít nhất một lần, còn for thì không.
B. Vòng lặp while thường dùng khi số lần lặp không xác định trước, còn for thường dùng khi số lần lặp đã biết.
C. Vòng lặp while chỉ có thể kiểm tra một điều kiện, còn for có thể kiểm tra nhiều điều kiện.
D. Vòng lặp while cần biến đếm, còn for thì không.
22. Ngôn ngữ lập trình nào thường được sử dụng để tạo các hiệu ứng động và tương tác trên trang web phía trình duyệt (client-side)?
A. Python
B. Java
C. JavaScript
D. C#
23. Trong lập trình, debug là một hoạt động nhằm mục đích gì?
A. Tạo ra các chức năng mới.
B. Tìm và sửa các lỗi trong chương trình.
C. Tối ưu hóa hiệu suất của thuật toán.
D. Viết tài liệu cho chương trình.
24. Trong lập trình, tối ưu hóa (optimization) nhằm mục đích gì?
A. Làm cho chương trình phức tạp hơn.
B. Giảm số lượng dòng mã.
C. Cải thiện hiệu suất của chương trình, ví dụ như giảm thời gian chạy hoặc lượng bộ nhớ sử dụng.
D. Thêm nhiều tính năng không cần thiết.
25. Tại sao việc đặt tên biến và hàm một cách rõ ràng, mang tính mô tả lại quan trọng trong lập trình?
A. Để làm cho mã nguồn khó hiểu hơn.
B. Để chương trình chạy nhanh hơn.
C. Để tăng khả năng đọc, hiểu và bảo trì mã nguồn của chính mình và người khác.
D. Để giảm dung lượng file chương trình.