1. Sự khác biệt chính giữa vòng lặp 'while′ và 'do-while′ là gì?
A. Vòng 'while′ luôn thực hiện ít nhất một lần, còn 'do-while′ thì không.
B. Vòng 'do-while′ kiểm tra điều kiện lặp trước khi thực hiện thân vòng lặp, còn 'while′ thì kiểm tra sau.
C. Vòng 'while′ kiểm tra điều kiện lặp trước khi thực hiện thân vòng lặp, còn 'do-while′ thì kiểm tra sau khi thực hiện thân vòng lặp.
D. Không có sự khác biệt, chúng hoàn toàn giống nhau.
2. Phương pháp lập trình 'chia để trị' (divide and conquer) hoạt động như thế nào?
A. Giải quyết vấn đề bằng cách lặp đi lặp lại một thao tác đơn giản.
B. Chia bài toán lớn thành các bài toán con nhỏ hơn, giải quyết từng bài toán con, sau đó kết hợp kết quả để giải bài toán lớn.
C. Giải quyết vấn đề bằng cách thử tất cả các khả năng.
D. Giải quyết vấn đề từ kết quả mong muốn ngược trở lại đầu vào.
3. Kiểu dữ liệu 'Boolean′ trong lập trình 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).
4. Ưu điểm chính của việc sử dụng hàm đệ quy (recursive function) là gì?
A. Luôn chạy nhanh hơn vòng lặp.
B. Có thể giải quyết các bài toán phức tạp một cách ngắn gọn và dễ hiểu hơn trong một số trường hợp.
C. Tiết kiệm bộ nhớ hơn so với hàm thông thường.
D. Dễ gỡ lỗi hơn.
5. Phương pháp gỡ lỗi (debugging) 'in giá trị biến′ (print debugging) được sử dụng để làm gì?
A. Tối ưu hóa hiệu suất chương trình.
B. Tìm và sửa lỗi bằng cách theo dõi giá trị của biến tại các điểm khác nhau trong chương trình.
C. Tự động sửa lỗi chương trình.
D. Biên dịch mã nguồn thành mã máy.
6. Trong lập trình, biến (variable) được hiểu là:
A. Một giá trị không đổi trong suốt quá trình thực thi chương trình.
B. 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.
C. Một loại dữ liệu đặc biệt chỉ dùng để lưu trữ số nguyên.
D. Một lệnh điều khiển luồng chương trình.
7. Trong biểu thức điều kiện, toán tử '==' dùng để làm gì?
A. Gán giá trị.
B. So sánh bằng.
C. Phép cộng.
D. Phép trừ.
8. Mục đích chính của việc sử dụng mảng (array) trong lập trình là gì?
A. Lưu trữ dữ liệu có kiểu khác nhau.
B. Lưu trữ một tập hợp các phần tử có cùng kiểu dữ liệu dưới một tên biến.
C. Thay thế cho cấu trúc điều khiển.
D. Tạo giao diện người dùng.
9. Hàm (function) trong lập trình có vai trò chính là gì?
A. Thay thế cho biến toàn cục.
B. Tổ chức mã nguồn thành các khối lệnh có thể tái sử dụng.
C. Tăng tốc độ thực thi chương trình.
D. Giảm thiểu sử dụng bộ nhớ.
10. 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. Khó học và khó sử dụng.
B. Gần gũi với ngôn ngữ máy, khó hiểu với con người.
C. Dễ đọc, dễ viết và gần gũi với ngôn ngữ tự nhiên của con người.
D. Chỉ chạy được trên một loại hệ điều hành cụ thể.
11. Lỗi 'ngoại lệ' (exception) xảy ra khi nào trong chương trình?
A. Khi mã nguồn viết đúng cú pháp.
B. Khi chương trình gặp phải tình huống bất thường hoặc lỗi trong quá trình thực thi (ví dụ: chia cho 0).
C. Khi chương trình chạy quá nhanh.
D. Khi chương trình không sử dụng đủ bộ nhớ.
12. Trong lập trình, 'interface′ (giao diện) thường được sử dụng để làm gì?
A. Tạo ra các đối tượng cụ thể.
B. Định nghĩa một tập hợp các phương thức mà một lớp phải thực hiện, đảm bảo tính nhất quán về hành vi.
C. Ẩn giấu dữ liệu bên trong đối tượng.
D. Quản lý bộ nhớ.
13. Cấu trúc điều khiển 'if-else′ được sử dụng để làm gì trong lập trình?
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 đúng hoặc sai.
C. Định nghĩa một hàm mới.
D. Khai báo một biến toàn cục.
14. Trong lập trình hướng đối tượng (OOP), khái niệm 'đối tượng′ (object) đại diện cho điều 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 toán học.
D. Một biến toàn cục.
15. Kiểu dữ liệu 'float′ thường được sử dụng để lưu trữ loại số nào?
A. Số nguyên.
B. Số thực (số thập phân).
C. Chuỗi ký tự.
D. Giá trị logic.
16. Toán tử logic 'AND′ trả về giá trị 'true′ khi nào?
A. Khi ít nhất một trong các toán hạng là 'true′.
B. Khi tất cả các toán hạng là 'true′.
C. Khi tất cả các toán hạng là 'false′.
D. Khi chỉ một trong các toán hạng là 'false′.
17. Phép toán số học (%) trong lập trình thường được gọi là phép toán gì?
A. Phép chia
B. Phép nhân
C. Phép chia lấy phần dư
D. Phép lũy thừa
18. 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 biết trước số lần lặp cần thực hiện.
D. Khi cần kiểm tra một điều kiện trước khi lặp.
19. Trong lập trình, 'tham số' (parameter) và 'đối số' (argument) khác nhau như thế nào?
A. Chúng là hai tên gọi khác nhau cho cùng một khái niệm.
B. Tham số là biến được khai báo trong định nghĩa hàm, còn đối số là giá trị thực tế được truyền vào hàm khi gọi.
C. Đối số là biến được khai báo trong định nghĩa hàm, còn tham số là giá trị thực tế được truyền vào hàm khi gọi.
D. Tham số chỉ dùng cho hàm số học, đối số dùng cho hàm logic.
20. Kiểu dữ liệu nào sau đây thường được sử dụng để lưu trữ văn bản trong lập trình?
A. Integer
B. Float
C. String
D. Boolean
21. Nguyên tắc 'DRY′ (Don′t Repeat Yourself) trong lập trình khuyến khích điều gì?
A. Lặp lại mã nguồn nhiều lần để tăng tính rõ ràng.
B. Tránh lặp lại mã nguồn, tái sử dụng code khi có thể để giảm thiểu lỗi và dễ bảo trì hơn.
C. Viết mã nguồn càng dài càng tốt.
D. Không sử dụng hàm hoặc module.
22. Trong quản lý bộ nhớ, 'rò rỉ bộ nhớ' (memory leak) xảy ra khi nào?
A. Bộ nhớ được cấp phát và sử dụng hiệu quả.
B. Chương trình giải phóng bộ nhớ sau khi sử dụng xong.
C. Bộ nhớ được cấp phát nhưng không được giải phóng sau khi không còn cần thiết, dẫn đến lãng phí bộ nhớ.
D. Bộ nhớ bị virus tấn công.
23. Trong lập trình, 'biên dịch′ (compilation) là quá trình:
A. Chạy trực tiếp mã nguồn.
B. Chuyển đổi mã nguồn thành mã máy để máy tính có thể hiểu và thực thi.
C. Gỡ lỗi chương trình.
D. Viết mã nguồn.
24. 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ải thích mã nguồn cho người đọc, giúp mã nguồn dễ hiểu và dễ bảo trì hơn.
C. Thay thế cho mã lệnh thực thi.
D. Giảm kích thước file chương trình.
25. Khái niệm 'đa hình′ (polymorphism) trong OOP nghĩa là gì?
A. Một đối tượng có nhiều thuộc tính.
B. Một phương thức có thể được định nghĩa lại ở các lớp con khác nhau để thực hiện các hành vi khác nhau.
C. Một lớp có thể có nhiều lớp cha.
D. Các đối tượng có thể tự thay đổi kiểu dữ liệu.
26. 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 lỗi thường gặp trong lập trình.
D. Một công cụ để biên dịch mã nguồn.
27. Phương pháp kiểm thử 'hộp đen′ (black box testing) tập trung vào điều gì?
A. Kiểm tra cấu trúc mã nguồn bên trong chương trình.
B. Kiểm tra chức năng của chương trình dựa trên đầu vào và đầu ra, mà không cần biết cấu trúc bên trong.
C. Kiểm tra hiệu suất của chương trình.
D. Kiểm tra tính bảo mật của chương trình.
28. Lỗi 'cú pháp′ (syntax error) xảy ra khi nào?
A. Khi chương trình chạy sai logic.
B. Khi mã nguồn vi phạm các quy tắc ngữ pháp của ngôn ngữ lập trình.
C. Khi chương trình sử dụng quá nhiều bộ nhớ.
D. Khi kết nối mạng bị gián đoạn.
29. Trong lập trình hướng đối tượng, 'kế thừa′ (inheritance) 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 con (subclass) kế thừa các thuộc tính và phương thức của lớp cha (superclass), tái sử dụng và mở rộng chức năng.
C. Giấu thông tin bên trong đối tượng.
D. Tạo ra các hàm đệ quy.
30. 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. Java
C. JavaScript
D. Python