1. Cấu trúc điều khiển 'if-else′ được sử dụng để làm gì?
A. Lặp lại một khối lệnh nhiều lần.
B. Thực hiện một khối lệnh dựa trên một điều kiện cho trước.
C. Khai báo một biến mới trong chương trình.
D. Định nghĩa một hàm (function) mới.
2. Kiểu dữ liệu nào sau đây thường được dùng để lưu trữ số thập phân?
A. int (integer).
B. char (character).
C. float (floating-point).
D. string (string).
3. Thao tác 'debug′ (gỡ lỗi) trong lập trình là quá trình:
A. Biên dịch mã nguồn chương trình sang mã máy.
B. Tìm và sửa các lỗi (bugs) trong chương trình.
C. Tối ưu hóa hiệu suất của chương trình.
D. Viết tài liệu hướng dẫn sử dụng chương trình.
4. Trong lập trình, 'comment′ (chú thích) được sử dụng để làm gì?
A. Tăng tốc độ thực thi chương trình.
B. Giải thích mã nguồn cho người đọc, giúp mã dễ hiểu hơn.
C. Báo lỗi khi có sai sót trong mã.
D. Biên dịch mã nguồn thành mã máy.
5. Phương pháp lập trình 'chia để trị' (divide and conquer) thường được áp dụng để giải quyết loại bài toán nào?
A. Các bài toán có kích thước nhỏ và đơn giản.
B. Các bài toán có thể phân chia thành các bài toán con nhỏ hơn, tương tự và độc lập.
C. Các bài toán yêu cầu sử dụng nhiều vòng lặp.
D. Các bài toán liên quan đến xử lý đồ họa.
6. Khái niệm 'con trỏ' (pointer) trong lập trình (như ngôn ngữ C∕C++) dùng để làm gì?
A. Lưu trữ giá trị của một biến.
B. Lưu trữ địa chỉ bộ nhớ của một biến khác.
C. Đếm số lần một vòng lặp được thực hiện.
D. Đại diện cho một đối tượng trong lập trình hướng đối tượng.
7. Trong lập trình hướng đối tượng (OOP), 'class′ (lớp) là gì?
A. Một thể hiện cụ thể của một đối tượng.
B. Một bản thiết kế hoặc khuôn mẫu cho các đối tượng.
C. Một kiểu dữ liệu nguyên thủy (primitive data type).
D. Một hàm (function) đặc biệt dùng để tạo đối tượng.
8. Trong lập trình, thuật ngữ 'API′ (Application Programming Interface) thường được hiểu là:
A. Một hệ điều hành.
B. Một thư viện chứa các hàm và thủ tục được viết sẵn, cung cấp giao diện để các nhà phát triển phần mềm sử dụng.
C. Một loại ngôn ngữ lập trình.
D. Một công cụ để kiểm thử phần mềm.
9. Thuật toán (algorithm) trong lập trình là gì?
A. Một chương trình máy tính hoàn chỉnh.
B. Một tập hợp các bước hướng dẫn rõ ràng để giải quyết một vấn đề cụ thể.
C. Một loại ngôn ngữ lập trình đặc biệt.
D. Một công cụ để biên dịch mã nguồn.
10. Sự khác biệt chính giữa 'biên dịch′ (compilation) và 'thông dịch′ (interpretation) trong quá trình thực thi chương trình là gì?
A. Biên dịch tạo ra mã máy thực thi trực tiếp, thông dịch thực thi mã nguồn từng dòng một.
B. Biên dịch chỉ dùng cho ngôn ngữ bậc cao, thông dịch chỉ dùng cho ngôn ngữ bậc thấp.
C. Biên dịch thực hiện kiểm tra lỗi cú pháp sau khi chạy chương trình, thông dịch kiểm tra lỗi trước khi chạy.
D. Biên dịch giúp chương trình dễ dàng chạy trên nhiều hệ điều hành hơn so với thông dịch.
11. Khái niệm 'hàm′ (function) trong lập trình mang lại lợi ích chính nào sau đây?
A. Tăng tốc độ thực thi chương trình.
B. Giảm dung lượng bộ nhớ chương trình sử dụng.
C. Tái sử dụng mã nguồn và làm chương trình dễ đọc, dễ quản lý hơn.
D. Tăng tính bảo mật cho chương trình.
12. Phương pháp lập trình 'hướng sự kiện′ (event-driven programming) thường được sử dụng trong loại ứng dụng nào?
A. Ứng dụng tính toán khoa học phức tạp.
B. Ứng dụng web và giao diện người dùng đồ họa (GUI).
C. Ứng dụng quản lý cơ sở dữ liệu.
D. Ứng dụng điều khiển phần cứng thời gian thực.
13. Hoạt động 'ép kiểu′ (type casting) trong lập trình là gì?
A. Kiểm tra kiểu dữ liệu của một biến.
B. Chuyển đổi một giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác.
C. Khai báo một kiểu dữ liệu mới.
D. Xóa bỏ một biến khỏi bộ nhớ.
14. Điều gì xảy ra khi một biến chưa được khởi tạo (uninitialized variable) được sử dụng trong chương trình (trong nhiều ngôn ngữ lập trình)?
A. Chương trình sẽ chạy nhanh hơn vì không cần khởi tạo giá trị ban đầu.
B. Biến sẽ tự động được gán giá trị mặc định (ví dụ: 0 hoặc null).
C. Chương trình có thể gặp lỗi运行时 (runtime error) hoặc kết quả không xác định.
D. Biến sẽ được tự động gán một giá trị ngẫu nhiên.
15. Phép gán (=) trong lập trình thường được dùng để:
A. So sánh hai giá trị có bằng nhau hay không.
B. Kết hợp hai chuỗi văn bản lại với nhau.
C. Gán một giá trị cho một biến.
D. Thực hiện phép tính cộng giữa hai số.
16. Khi so sánh 'stack′ (ngăn xếp) và 'heap′ (vùng nhớ động) trong quản lý bộ nhớ, phát biểu nào sau đây là đúng?
A. Stack được quản lý bởi lập trình viên, heap được quản lý tự động bởi hệ thống.
B. Stack thường được dùng cho biến toàn cục, heap thường được dùng cho biến cục bộ.
C. Stack có tốc độ truy cập nhanh hơn heap, nhưng kích thước thường nhỏ hơn.
D. Stack và heap có chức năng và hiệu suất hoàn toàn giống nhau.
17. Trong lập trình, 'đệ quy′ (recursion) là gì?
A. Một vòng lặp vô hạn.
B. Một hàm (function) gọi chính nó.
C. Một cách sắp xếp dữ liệu trong mảng.
D. Một kỹ thuật gỡ lỗi chương trình.
18. Trong lập trình, biến (variable) được hiểu là gì?
A. Một vùng nhớ được đặt tên, dùng để lưu trữ dữ liệu có thể thay đổi trong quá trình thực thi chương trình.
B. Một giá trị không đổi được gán cho một định danh.
C. Một loại dữ liệu đặc biệt chỉ chứa văn bản.
D. Một lệnh điều khiển luồng thực thi của chương trình.
19. Trong lập trình hướng đối tượng, 'tính kế thừa′ (inheritance) cho phép làm gì?
A. Ẩn giấu thông tin bên trong đối tượng.
B. Tạo ra các đối tượng độc lập, không liên quan đến nhau.
C. Một lớp (class) có thể kế thừa các thuộc tính và phương thức từ lớp khác.
D. Đóng gói dữ liệu và phương thức thao tác trên dữ liệu vào trong một đơn vị.
20. Trong lập trình, 'ngoại lệ' (exception) là gì?
A. Một lỗi cú pháp trong mã nguồn.
B. Một sự kiện bất thường xảy ra trong quá trình thực thi chương trình, làm gián đoạn luồng thực thi bình thường.
C. Một biến được khai báo không đúng kiểu dữ liệu.
D. Một cảnh báo từ trình biên dịch.
21. Khi nào nên sử dụng cấu trúc dữ liệu 'hàng đợi′ (queue)?
A. Khi cần truy cập phần tử một cách ngẫu nhiên.
B. Khi cần lưu trữ dữ liệu theo thứ tự vào trước ra sau (FIFO - First In, First Out).
C. Khi cần tìm kiếm phần tử nhanh chóng.
D. Khi cần sắp xếp dữ liệu theo thứ tự.
22. Vòng lặp 'for′ thường được sử dụng khi nào?
A. Khi muốn thực hiện một khối lệnh vô hạn lần.
B. Khi muốn thực hiện một khối lệnh dựa trên một điều kiện đúng.
C. Khi biết trước số lần lặp cần thực hiện.
D. Khi muốn định nghĩa một hàm trả về giá trị.
23. Kiểu dữ liệu 'boolean′ thường được sử dụng để biểu diễn giá trị nào?
A. Số nguyên.
B. Số thực.
C. Chuỗi văn bản.
D. Giá trị logic đúng hoặc sai (true∕false).
24. Ưu điểm chính của việc sử dụng ngôn ngữ lập trình thông dịch (interpreted language) so với ngôn ngữ lập trình biên dịch (compiled language) là gì?
A. Chương trình chạy nhanh hơn.
B. Khả năng chạy trên nhiều nền tảng hệ điều hành khác nhau dễ dàng hơn (tính di động cao hơn).
C. Mã nguồn chương trình được bảo mật tốt hơn.
D. Sử dụng bộ nhớ hiệu quả hơn.
25. Trong lập trình, 'mảng′ (array) là cấu trúc dữ liệu dùng để:
A. Lưu trữ dữ liệu theo dạng cây phân cấp.
B. Lưu trữ một tập hợp các phần tử có cùng kiểu dữ liệu, được truy cập thông qua chỉ số.
C. Lưu trữ dữ liệu dưới dạng cặp khóa-giá trị.
D. Đại diện cho một đối tượng trong lập trình hướng đối tượng.
26. Trong lập trình web, ngôn ngữ nào thường được sử dụng ở phía máy khách (client-side)?
A. SQL.
B. Python.
C. JavaScript.
D. Java.
27. Ngôn ngữ lập trình bậc cao (high-level programming language) có đặc điểm nổi bật nào?
A. Trực tiếp điều khiển phần cứng máy tính.
B. Khó học và khó sử dụng đối với người mới bắt đầu.
C. Gần gũi với ngôn ngữ tự nhiên của con người, dễ đọc và dễ viết.
D. Chỉ có thể chạy trên một số loại hệ điều hành nhất định.
28. Lỗi 'tràn bộ đệm′ (buffer overflow) là loại lỗi lập trình liên quan đến:
A. Tính toán sai số học.
B. Truy cập vào vùng nhớ không được phép.
C. Ghi dữ liệu vượt quá kích thước vùng nhớ đã được cấp phát.
D. Lỗi cú pháp trong mã nguồn.
29. Trong lập trình, 'biến toàn cục′ (global variable) khác với 'biến cục bộ' (local variable) như thế nào?
A. Biến toàn cục có tốc độ truy cập nhanh hơn biến cục bộ.
B. Biến toàn cục được khai báo bên trong một hàm, biến cục bộ được khai báo bên ngoài hàm.
C. Biến toàn cục có phạm vi sử dụng rộng hơn, có thể truy cập từ bất kỳ đâu trong chương trình, trong khi biến cục bộ chỉ có thể truy cập trong phạm vi hàm hoặc khối lệnh mà nó được khai báo.
D. Biến toàn cục không thể thay đổi giá trị, biến cục bộ có thể thay đổi giá trị.
30. Mục đích chính của việc 'tối ưu hóa mã nguồn′ (code optimization) là gì?
A. Làm cho mã nguồn dễ đọc và dễ hiểu hơn.
B. Giảm kích thước tệp tin mã nguồn.
C. Cải thiện hiệu suất chương trình (tốc độ chạy và sử dụng tài nguyên).
D. Tăng tính bảo mật cho chương trình.