1. Mảng (array) trong lập trình là gì?
A. Một kiểu dữ liệu để lưu trữ văn bản.
B. Một tập hợp các phần tử có cùng kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ.
C. Một cấu trúc điều khiển để lặp lại khối lệnh.
D. Một cách để định nghĩa hàm.
2. Phương thức (method) của một đối tượng trong OOP là gì?
A. Kiểu dữ liệu của đối tượng.
B. Hành động mà đối tượng có thể thực hiện.
C. Tên gọi của đối tượng.
D. Kích thước bộ nhớ của đối tượng.
3. Ngăn xếp (stack) là một cấu trúc dữ liệu hoạt động theo nguyên tắc nào?
A. FIFO (First In, First Out - Vào trước, ra trước).
B. LIFO (Last In, First Out - Vào sau, ra trước).
C. Ngẫu nhiên.
D. Theo thứ tự ưu tiên.
4. Tham số (parameter) của hàm là gì?
A. Biến cục bộ bên trong hàm.
B. Giá trị trả về của hàm.
C. Dữ liệu đầu vào mà hàm nhận để xử lý.
D. Tên gọi khác của hàm.
5. Tính kế thừa (inheritance) trong OOP cho phép làm gì?
A. Tạo ra các đối tượng độc lập hoàn toàn.
B. Một lớp có thể kế thừa thuộc tính và phương thức từ lớp cha.
C. Thay đổi hành vi của đối tượng trong thời gian chạy.
D. Phân chia chương trình thành các module nhỏ hơn.
6. Tính đa hình (polymorphism) trong OOP có nghĩa là gì?
A. Một đối tượng có thể thuộc nhiều lớp khác nhau.
B. Một hành động có thể được thực hiện theo nhiều cách khác nhau tùy thuộc vào đối tượng thực hiện hành động đó.
C. Các lớp có thể chứa nhiều đối tượng.
D. Đối tượng có thể thay đổi lớp của nó trong quá trình chạy.
7. Giá trị trả về (return value) của một hàm là gì?
A. Địa chỉ bộ nhớ của hàm.
B. Kết quả mà hàm tính toán và trả lại cho nơi gọi hàm.
C. Số lượng tham số mà hàm nhận.
D. Thời gian thực thi của hàm.
8. Chỉ số (index) trong mảng được sử dụng để làm gì?
A. Xác định kiểu dữ liệu của mảng.
B. Truy cập đến một phần tử cụ thể trong mảng.
C. Tính tổng các phần tử trong mảng.
D. Sắp xếp các phần tử trong mảng.
9. Hàm (function) trong lập trình có vai trò chính là gì?
A. Tăng tốc độ thực thi chương trình.
B. Tổ chức mã nguồn thành các khối lệnh có thể tái sử dụng.
C. Tối ưu hóa bộ nhớ sử dụng.
D. Bảo vệ chương trình khỏi virus.
10. Lỗi logic (logic error) trong lập trình là gì?
A. Lỗi do viết sai cú pháp ngôn ngữ.
B. Lỗi do thuật toán hoặc cách giải quyết vấn đề không đúng.
C. Lỗi do trình biên dịch không hoạt động.
D. Lỗi do hệ điều hành không tương thích.
11. Trình gỡ lỗi (debugger) được sử dụng để làm gì?
A. Biên dịch mã nguồn.
B. Thông dịch mã nguồn.
C. Tìm và sửa lỗi (bugs) trong chương trình.
D. Tối ưu hóa mã nguồn.
12. Biến toàn cục (global variable) khác biến cục bộ (local variable) ở điểm nào?
A. Biến toàn cục chỉ có thể được sử dụng trong một hàm duy nhất.
B. Biến toàn cục được khai báo bên ngoài hàm và có thể được truy cập từ bất kỳ đâu trong chương trình.
C. Biến cục bộ có tốc độ truy cập nhanh hơn biến toàn cục.
D. Biến cục bộ được lưu trữ trong bộ nhớ ngoài, còn biến toàn cục trong bộ nhớ chính.
13. Lớp (class) trong OOP được sử dụng để làm gì?
A. Tạo ra các biến toàn cục.
B. Định nghĩa khuôn mẫu cho các đối tượng.
C. Thực hiện các phép toán số học phức tạp.
D. Quản lý bộ nhớ chương trình.
14. Kiểu dữ liệu nào sau đây thường được sử dụng để biểu diễn số nguyên?
A. float
B. string
C. int
D. boolean
15. Sơ đồ khối (flowchart) thường được sử dụng để làm gì?
A. Viết mã chương trình trực tiếp.
B. Biểu diễn thuật toán một cách trực quan bằng hình ảnh.
C. Biên dịch mã nguồn.
D. Kiểm tra lỗi cú pháp.
16. Trong lập trình, biến (variable) được sử dụng để làm gì?
A. Lưu trữ dữ liệu có thể thay đổi trong quá trình thực thi chương trình.
B. Xác định các hàm và thủ tục trong chương trình.
C. Điều khiển luồng thực thi của chương trình.
D. Chú thích mã nguồn để dễ đọc hơn.
17. Thông dịch (interpretation) khác biên dịch ở điểm nào?
A. Chương trình thông dịch chạy nhanh hơn chương trình biên dịch.
B. Thông dịch thực hiện chương trình từng dòng lệnh một, trong khi biên dịch chuyển đổi toàn bộ mã nguồn trước khi thực thi.
C. Chỉ có ngôn ngữ biên dịch mới hỗ trợ lập trình hướng đối tượng.
D. Ngôn ngữ thông dịch an toàn hơn ngôn ngữ biên dịch.
18. Lỗi cú pháp (syntax error) trong lập trình là gì?
A. Lỗi do logic chương trình sai.
B. Lỗi do vi phạm quy tắc ngữ pháp của ngôn ngữ lập trình.
C. Lỗi xảy ra khi chương trình chạy và sử dụng quá nhiều bộ nhớ.
D. Lỗi do phần cứng máy tính gây ra.
19. 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.
C. Định nghĩa một hàm mới.
D. Xử lý ngoại lệ trong chương trình.
20. Thuật toán (algorithm) trong lập trình 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 công cụ để gỡ lỗi chương trình.
D. Một phương pháp để tối ưu hóa mã nguồn.
21. Kiểu dữ liệu `boolean` được sử dụng để biểu diễn giá trị nào?
A. Số nguyên.
B. Số thực.
C. Giá trị logic đúng hoặc sai (true/false).
D. Chuỗi văn bản.
22. Thuộc tính (attribute) của một đối tượng trong OOP là gì?
A. Hành động mà đối tượng có thể thực hiện.
B. Đặc điểm hoặc trạng thái của đối tượng.
C. Mối quan hệ giữa các đối tượng.
D. Quy tắc để tạo ra đối tượng.
23. Đệ quy (recursion) trong lập trình là gì?
A. Một kỹ thuật để sắp xếp dữ liệu.
B. Một hàm tự gọi chính nó để giải quyết vấn đề.
C. Một phương pháp để ẩn thông tin trong chương trình.
D. Một cách để tối ưu hóa bộ nhớ sử dụng.
24. Tính đóng gói (encapsulation) trong OOP có nghĩa là gì?
A. Khả năng một lớp kế thừa thuộc tính và phương thức từ lớp khác.
B. Che giấu thông tin chi tiết bên trong của đối tượng và chỉ cho phép truy cập thông qua giao diện công khai.
C. Khả năng một đối tượng có nhiều hình thức khác nhau.
D. Tự động giải phóng bộ nhớ khi đối tượng không còn được sử dụng.
25. Phép toán nào sau đây KHÔNG phải là phép toán số học cơ bản?
A. + (Cộng)
B. - (Trừ)
C. * (Nhân)
D. = (Gán)
26. Mục đích chính 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ải thích mã nguồn cho người đọc, giúp mã dễ hiểu và bảo trì hơn.
C. Giảm kích thước file chương trình.
D. Bảo vệ mã nguồn khỏi bị sao chép.
27. Hàng đợi (queue) là một cấu trúc dữ liệu hoạt động theo nguyên tắc nào?
A. LIFO (Last In, First Out - Vào sau, ra trước).
B. FIFO (First In, First Out - Vào trước, ra trước).
C. Theo thứ tự giảm dần.
D. Theo thứ tự tăng dần.
28. Biên dịch (compilation) là quá trình gì trong lập trình?
A. Chuyển đổi mã nguồn thành mã máy để máy tính có thể hiểu và thực thi.
B. Tìm và sửa lỗi trong mã nguồn.
C. Tối ưu hóa hiệu suất của chương trình.
D. Kiểm thử chương trình để đảm bảo tính đúng đắn.
29. Vòng lặp `for` thường được sử dụng khi nào?
A. Khi muốn lặp lại một khối lệnh vô hạn lần.
B. Khi biết trước số lần lặp cần thiết.
C. Khi muốn kiểm tra một điều kiện trước mỗi lần lặp.
D. Khi muốn thực hiện một khối lệnh ít nhất một lần.
30. Trong lập trình hướng đối tượng (OOP), đối tượng (object) là gì?
A. Một kiểu dữ liệu cơ bản.
B. Một thể hiện cụ thể của một lớp (class).
C. Một hàm đặc biệt trong chương trình.
D. Một cấu trúc điều khiển phức tạp.