1. 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 và có thứ tự để giải quyết một vấn đề.
C. Một công cụ để kiểm thử chương trình.
D. Một phương pháp tối ưu hóa mã nguồn.
2. Phép toán `==` (so sánh bằng) khác với phép gán `=` ở điểm nào?
A. Phép `==` thay đổi giá trị của biến, phép `=` thì không.
B. Phép `=` so sánh hai giá trị, phép `==` gán giá trị.
C. Phép `==` so sánh hai giá trị và trả về giá trị boolean (true/false), phép `=` gán giá trị bên phải cho biến bên trái.
D. Phép `==` chỉ dùng cho số, phép `=` dùng cho mọi kiểu dữ liệu.
3. Tính đa hình (polymorphism) trong lập trình hướng đối tượng nghĩa là gì?
A. Khả năng một lớp có nhiều thuộc tính.
B. Khả năng một đối tượng thuộc nhiều lớp.
C. Khả năng một đối tượng hoặc phương thức có thể có nhiều hình thức hoặc hành vi khác nhau trong các tình huống khác nhau.
D. Khả năng tạo ra các lớp trừu tượng.
4. 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úp người đọc hiểu mã nguồn dễ dàng hơn.
C. Bảo vệ mã nguồn khỏi bị sao chép.
D. Giảm dung lượng file mã nguồn.
5. 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 điều kiện đúng hoặc sai.
C. Định nghĩa một hàm mới.
D. Khai báo một biến.
6. Trong lập trình hướng đối tượng, `đố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), chứa dữ liệu và phương thức.
C. Một hàm đặc biệt.
D. Một biến toàn cục.
7. Gỡ lỗi (debugging) là quá trình làm gì trong lập trình?
A. Viết mã nguồn chương trình.
B. Biên dịch mã nguồn thành mã máy.
C. Tìm và sửa các lỗi (bugs) trong chương trình.
D. Tối ưu hóa hiệu suất chương trình.
8. Lỗi cú pháp (syntax error) xảy ra khi nào?
A. Khi chương trình chạy quá chậm.
B. Khi chương trình cố gắng truy cập vào vùng nhớ không hợp lệ.
C. Khi mã nguồn vi phạm các quy tắc ngữ pháp của ngôn ngữ lập trình.
D. Khi thuật toán của chương trình bị sai.
9. Trình biên dịch (compiler) và trình thông dịch (interpreter) khác nhau cơ bản ở điểm nào?
A. Trình biên dịch chạy nhanh hơn trình thông dịch.
B. Trình biên dịch dịch toàn bộ mã nguồn thành mã máy trước khi thực thi, trình thông dịch dịch và thực thi mã nguồn từng dòng một.
C. Trình biên dịch dễ sử dụng hơn trình thông dịch.
D. Trình biên dịch chỉ dùng cho ngôn ngữ cấp cao, trình thông dịch chỉ dùng cho ngôn ngữ cấp thấp.
10. Mảng (array) là gì trong lập trình?
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 các lệnh.
D. Một cách để định nghĩa hàm.
11. Tính đóng gói (encapsulation) trong lập trình hướng đối tượng có nghĩa là gì?
A. Khả năng một đối tượng có nhiều hình dạng khác nhau.
B. Che giấu thông tin và hành vi bên trong của đối tượng, chỉ cho phép truy cập thông qua giao diện công khai.
C. Khả năng kế thừa thuộc tính và phương thức từ lớp cha.
D. Khả năng tái sử dụng mã nguồn.
12. Kiểm thử đơn vị (unit testing) là loại kiểm thử nào?
A. Kiểm thử toàn bộ hệ thống phần mềm.
B. Kiểm thử từng module hoặc thành phần nhỏ nhất của phần mềm một cách độc lập.
C. Kiểm thử giao diện người dùng.
D. Kiểm thử hiệu năng của phần mềm.
13. Độ phức tạp thời gian (time complexity) của thuật toán dùng để đánh giá điều gì?
A. Lượng bộ nhớ mà thuật toán sử dụng.
B. Thời gian thực thi của thuật toán tăng lên như thế nào khi kích thước đầu vào tăng.
C. Độ khó của việc lập trình thuật toán.
D. Tính dễ đọc của mã nguồn thuật toán.
14. Giá trị trả về (return value) của hàm là gì?
A. Tên của hàm.
B. Kiểu dữ liệu của hàm.
C. Kết quả mà hàm tính toán và trả về sau khi thực thi.
D. Địa chỉ bộ nhớ của hàm.
15. Biến hằng số (constant) khác với biến thông thường như thế nào?
A. Biến hằng số có thể thay đổi giá trị trong quá trình chạy chương trình.
B. Biến hằng số không thể thay đổi giá trị sau khi đã được khởi tạo.
C. Biến hằng số chỉ được sử dụng trong hàm, biến thông thường được sử dụng ngoài hàm.
D. Biến hằng số có phạm vi sử dụng hẹp hơn biến thông thường.
16. Khái niệm `lớp` (class) trong lập trình hướng đối tượng dùng để làm gì?
A. Lưu trữ dữ liệu.
B. Định nghĩa kiểu dữ liệu cơ bản.
C. Định nghĩa khuôn mẫu cho các đối tượng, bao gồm thuộc tính và phương thức.
D. Điều khiển luồng chương trình.
17. Toán tử logic `AND` thường được ký hiệu là gì trong nhiều ngôn ngữ lập trình?
18. Trong lập trình, `IDE` là viết tắt của cụm từ nào?
A. Integrated Data Environment.
B. Interactive Development Engine.
C. Integrated Development Environment.
D. Intelligent Design Editor.
19. 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 nhanh hơn biến cục bộ.
B. Biến toàn cục chỉ được sử dụng trong hàm, biến cục bộ được sử dụng ngoài hàm.
C. Biến toàn cục được khai báo bên ngoài hàm và có thể truy cập từ mọi nơi trong chương trình, biến cục bộ chỉ được khai báo và sử dụng trong phạm vi một hàm hoặc khối lệnh.
D. Biến toàn cục không thể thay đổi giá trị, biến cục bộ có thể thay đổi.
20. Hàm (function) trong lập trình có vai trò chính là gì?
A. Thay thế cho biến.
B. Tổ chức mã nguồn thành các khối nhỏ, tái sử dụng được.
C. Tăng tốc độ thực thi chương trình.
D. Quản lý bộ nhớ.
21. Vòng lặp `for` thường được sử dụng khi nào?
A. Khi số lần lặp không xác định trước.
B. Khi cần lặp vô hạn.
C. Khi số lần lặp đã biết trước hoặc có thể xác định.
D. Khi cần kiểm tra một điều kiện trước mỗi lần lặp.
22. Tham số (parameter) của hàm được sử dụng để làm gì?
A. Lưu trữ kết quả trả về của hàm.
B. Truyền dữ liệu vào hàm để hàm xử lý.
C. Xác định kiểu dữ liệu trả về của hàm.
D. Định nghĩa tên hàm.
23. Thao tác nào sau đây không phải là một phép toán số học cơ bản?
A. Cộng (+)
B. Gán (=)
C. Nhân (*)
D. Chia (/)
24. 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 ký tự.
D. Giá trị logic đúng (true) hoặc sai (false).
25. Quy trình phát triển phần mềm (Software Development Life Cycle - SDLC) là gì?
A. Một ngôn ngữ lập trình mới.
B. Một phương pháp kiểm thử phần mềm.
C. Một khung quy trình để xây dựng, triển khai và bảo trì phần mềm.
D. Một loại lỗi phần mềm.
26. 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. Điều khiển luồng thực thi của chương trình.
C. Định nghĩa các hàm và thủ tục.
D. Tối ưu hóa hiệu suất của chương trình.
27. 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 trang web?
A. JavaScript
B. Python
C. HTML
D. CSS
28. Ngôn ngữ lập trình bậc cao (high-level programming language) có ưu điểm gì so với ngôn ngữ lập trình bậc thấp?
A. Chạy nhanh hơn.
B. Gần gũi với phần cứng hơn.
C. Dễ học, dễ đọc, dễ viết và bảo trì hơn.
D. Kiểm soát bộ nhớ tốt hơn.
29. 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
30. Tính kế thừa (inheritance) trong lập trình hướng đối tượng cho phép điều gì?
A. Tạo ra các đối tượng độc lập.
B. Một lớp con (subclass) kế thừa các thuộc tính và phương thức của lớp cha (superclass).
C. Đóng gói dữ liệu và phương thức vào trong một đối tượng.
D. Thực hiện nhiều hành động khác nhau dựa trên kiểu đối tượng.