1. Thông dịch (interpretation) khác với biên dịch (compilation) ở điểm nào?
A. Thông dịch tạo ra mã máy, biên dịch thì không.
B. Thông dịch thực thi mã nguồn từng dòng một, biên dịch dịch toàn bộ mã nguồn trước khi thực thi.
C. Thông dịch nhanh hơn biên dịch.
D. Thông dịch chỉ dùng cho ngôn ngữ bậc thấp.
2. Trong mô hình client-server, `client` và `server` có vai trò gì?
A. Client cung cấp dịch vụ, server sử dụng dịch vụ.
B. Client yêu cầu dịch vụ, server cung cấp dịch vụ.
C. Client và server có vai trò ngang nhau, cùng cung cấp và sử dụng dịch vụ.
D. Client và server chỉ giao tiếp trong mạng cục bộ (LAN).
3. Thao tác nào sau đây không phải là thao tác cơ bản trên dữ liệu?
A. Đọc dữ liệu
B. Ghi dữ liệu
C. Xóa dữ liệu
D. Sao chép chương trình
4. Ngôn ngữ lập trình nào thường được sử dụng để thêm tính tương tác và động cho trang web ở phía người dùng (client-side)?
A. HTML
B. CSS
C. JavaScript
D. SQL
5. Khái niệm `IDE` (Integrated Development Environment) dùng để chỉ cái gì?
A. Một ngôn ngữ lập trình bậc cao.
B. Môi trường phát triển tích hợp, cung cấp các công cụ hỗ trợ lập trình viên.
C. Một loại cơ sở dữ liệu.
D. Một giao thức mạng.
6. Đâu là một ví dụ về `hệ điều hành`?
A. Microsoft Word
B. Google Chrome
C. Windows 10
D. Python
7. Biên dịch (compilation) là quá trình chuyển đổi mã nguồn sang dạng nào?
A. Mã giả (Pseudocode)
B. Mã máy (Machine code)
C. Ngôn ngữ tự nhiên
D. Lưu đồ thuật toán
8. Cơ sở dữ liệu (database) được sử dụng để làm gì trong lập trình?
A. Thiết kế giao diện người dùng.
B. Lưu trữ, quản lý và truy xuất dữ liệu có cấu trúc.
C. Biên dịch mã nguồn chương trình.
D. Kiểm thử phần mềm.
9. Loại lỗi lập trình nào thường xảy ra khi bạn cố gắng truy cập một phần tử mảng vượt quá kích thước của mảng?
A. Lỗi cú pháp (Syntax error)
B. Lỗi logic (Logic error)
C. Lỗi thời gian chạy (Runtime error) - Lỗi biên giới mảng (Array out of bounds)
D. Lỗi biên dịch (Compilation error)
10. Trong lập trình web, ngôn ngữ nào thường được sử dụng để tạo cấu trúc và nội dung của trang web?
A. JavaScript
B. HTML
C. CSS
D. Python
11. Hàm (function) trong lập trình có vai trò gì?
A. Lưu trữ dữ liệu tạm thời.
B. Tổ chức mã nguồn thành các khối có thể tái sử dụng.
C. Tăng tốc độ thực thi chương trình.
D. Kiểm soát truy cập bộ nhớ.
12. Phép toán `==` trong hầu hết các ngôn ngữ lập trình có ý nghĩa gì?
A. Gán giá trị
B. So sánh bằng
C. Phép cộng
D. Phép trừ
13. Kiểu dữ liệu `Boolean` có thể nhận giá trị nào?
A. Số nguyên dương và số nguyên âm.
B. Số thực.
C. Chỉ có hai giá trị: `true` (đúng) và `false` (sai).
D. Ký tự chữ và số.
14. Đâu là ngôn ngữ lập trình bậc cao?
A. Assembly
B. Machine Code
C. C++
D. Binary Code
15. Vòng lặp `for` thường được sử dụng khi nào?
A. Khi cần lặp lại một khối lệnh với số lần không xác định trước.
B. Khi cần lặp lại một khối lệnh với số lần đã biết trước.
C. Khi cần kiểm tra một điều kiện và thực hiện lệnh một lần.
D. Khi muốn tạo một biến cục bộ.
16. Khái niệm `kế thừa` (inheritance) trong OOP có nghĩa là gì?
A. Khả năng một đối tượng chứa nhiều đối tượng khác.
B. Khả năng một class tạo ra nhiều đối tượng.
C. Khả năng một class con kế thừa các thuộc tính và phương thức từ class cha.
D. Khả năng các đối tượng giao tiếp với nhau.
17. API (Application Programming Interface) là gì?
A. Giao diện người dùng đồ họa.
B. Một tập hợp các quy tắc và giao thức cho phép các ứng dụng phần mềm giao tiếp với nhau.
C. Một loại ngôn ngữ lập trình mới.
D. Một công cụ để kiểm thử phần mềm tự động.
18. Thuật ngữ `debug` trong lập trình có nghĩa là gì?
A. Viết tài liệu hướng dẫn sử dụng chương trình.
B. Tìm và sửa lỗi trong mã nguồn.
C. Tối ưu hóa hiệu suất chương trình.
D. Biên dịch mã nguồn thành mã máy.
19. Mục đích của việc sử dụng `chú thích` (comment) trong mã nguồn là gì?
A. Tăng tốc độ biên dịch chương trình.
B. Giúp mã nguồn dễ đọc và dễ hiểu hơn cho con người.
C. Thay đổi cách chương trình thực thi.
D. Bảo vệ mã nguồn khỏi bị sao chép.
20. Trong lập trình, biến (variable) được sử dụng để làm gì?
A. Lưu trữ và đại diện cho dữ liệu có thể thay đổi trong quá trình thực thi chương trình.
B. Thực hiện các phép toán số học phức tạp.
C. Điều khiển luồng thực thi của chương trình.
D. Định nghĩa cấu trúc dữ liệu tĩnh.
21. Đâu là lợi ích chính của việc sử dụng `mảng` (array) trong lập trình?
A. Tăng tốc độ truy cập dữ liệu trên ổ cứng.
B. Lưu trữ một tập hợp các phần tử cùng kiểu dữ liệu dưới một tên duy nhất.
C. Giảm dung lượng bộ nhớ sử dụng.
D. Đơn giản hóa việc thiết kế giao diện người dùng.
22. SQL là viết tắt của cụm từ nào và dùng để làm gì?
A. Structured Query Language, dùng để truy vấn và quản lý cơ sở dữ liệu.
B. Simple Question Language, dùng để đặt câu hỏi cho người dùng.
C. Systematic Quality Logic, dùng để kiểm tra chất lượng mã.
D. Standardized Control Language, dùng để điều khiển phần cứng.
23. Trong lập trình, `thuật toán` (algorithm) là gì?
A. Một ngôn ngữ lập trình cụ thể.
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 biến đặc biệt.
D. Một công cụ để kiểm thử chương trình.
24. Bộ nhớ máy tính được tổ chức như thế nào để lưu trữ dữ liệu cho chương trình đang chạy?
A. Dưới dạng các tập tin và thư mục.
B. Dưới dạng các ô nhớ có địa chỉ, có thể truy cập ngẫu nhiên.
C. Dưới dạng các dải băng từ tính tuần tự.
D. Dưới dạng các sóng điện từ.
25. Trong biểu thức `x = y + 5;`, phép gán giá trị nào được thực hiện?
A. Giá trị của `x` được gán cho `y + 5`.
B. Giá trị của `y + 5` được gán cho `x`.
C. `x` và `y` được cộng với 5.
D. `x` và `y` được so sánh bằng 5.
26. Tham số (parameter) của một hàm là gì?
A. Giá trị trả về của hàm sau khi thực thi.
B. Biến cục bộ bên trong hàm.
C. Dữ liệu đầu vào mà hàm nhận để xử lý.
D. Tên của hàm.
27. Kiểu dữ liệu nào sau đây thường được sử dụng để biểu diễn văn bản trong lập trình?
A. Integer
B. Float
C. String
D. Boolean
28. 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. Chọn một khối lệnh để thực thi dựa trên điều kiện.
C. Định nghĩa một hàm mới.
D. Khai báo một biến toàn cục.
29. Điều gì xảy ra khi một biến được khai báo nhưng không được khởi tạo giá trị ban đầu trong một số ngôn ngữ lập trình?
A. Chương trình sẽ báo lỗi biên dịch.
B. Biến sẽ tự động được gán giá trị mặc định (ví dụ: 0, null).
C. Chương trình sẽ chạy nhưng có thể cho kết quả không xác định do biến chứa `giá trị rác`.
D. Biến sẽ không được tạo ra trong bộ nhớ.
30. Trong lập trình hướng đối tượng (OOP), `class` là gì?
A. Một thể hiện cụ thể của đố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 biến toàn cục.
D. Một hàm đặc biệt để khởi tạo đối tượng.