1. Trong lập trình, thuật ngữ nào dùng để chỉ một quy trình hoặc tập hợp các bước được xác định rõ ràng để giải quyết một vấn đề cụ thể?
A. Biến
B. Hằng số
C. Thuật toán
D. Cấu trúc dữ liệu
2. Cấu trúc điều khiển nào cho phép chương trình thực hiện một khối lệnh nhiều lần cho đến khi một điều kiện cụ thể không còn đúng?
A. Câu lệnh điều kiện (if-else)
B. Câu lệnh rẽ nhánh (switch-case)
C. Vòng lặp (loop)
D. Hàm (function)
3. Lỗi `syntax error` (lỗi cú pháp) trong lập trình xảy ra khi nào?
A. Khi chương trình cố gắng truy cập vào một vùng nhớ không hợp lệ.
B. Khi có lỗi trong logic của thuật toán, dẫn đến kết quả sai.
C. Khi mã nguồn không tuân thủ các quy tắc ngữ pháp của ngôn ngữ lập trình.
D. Khi chương trình chạy quá chậm và vượt quá thời gian cho phép.
4. Trong quản lý bộ nhớ, `rò rỉ bộ nhớ` (memory leak) xảy ra khi nào?
A. Khi chương trình sử dụng quá nhiều bộ nhớ một cách cần thiết.
B. Khi bộ nhớ được cấp phát nhưng không được giải phóng sau khi không còn sử dụng, dẫn đến lãng phí bộ nhớ.
C. Khi chương trình cố gắng truy cập vào bộ nhớ chưa được cấp phát.
D. Khi bộ nhớ bị hỏng do lỗi phần cứng.
5. Mục đích của việc sử dụng `hằng số` (constant) trong lập trình là gì?
A. Để lưu trữ các giá trị có thể thay đổi trong quá trình thực thi.
B. Để lưu trữ các giá trị không đổi trong suốt quá trình thực thi, giúp mã nguồn dễ đọc và bảo trì hơn.
C. Để tăng tốc độ truy cập dữ liệu.
D. Để tạo ra các lỗi ngẫu nhiên trong chương trình.
6. Kiểu dữ liệu `Boolean` thường được sử dụng để biểu diễn giá trị nào?
A. Số nguyên và số thực.
B. Chuỗi ký tự.
C. Giá trị đúng (true) hoặc sai (false).
D. Ngày và giờ.
7. Trong lập trình, `đệ quy` (recursion) là gì?
A. Một kỹ thuật sắp xếp dữ liệu trong mảng.
B. Một phương pháp thiết kế giao diện người dùng.
C. Một kỹ thuật lập trình trong đó một hàm tự gọi chính nó.
D. Một cách để quản lý bộ nhớ động.
8. Thuật ngữ `API` (Application Programming Interface) dùng để chỉ điều gì?
A. Một loại ngôn ngữ lập trình mới.
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à tương tác với nhau.
C. Một công cụ để kiểm thử hiệu năng của ứng dụng.
D. Một hệ điều hành dành cho thiết bị di động.
9. Trong kiểm thử phần mềm, `unit testing` (kiểm thử đơn vị) là gì?
A. Kiểm thử toàn bộ hệ thống phần mềm sau khi tích hợp tất cả các thành phần.
B. Kiểm thử từng thành phần (đơn vị) nhỏ nhất của phần mềm một cách độc lập.
C. Kiểm thử hiệu năng của phần mềm dưới tải lớn.
D. Kiểm thử giao diện người dùng của phần mềm.
10. Đâu là kiểu dữ liệu cơ bản thường được sử dụng để lưu trữ các số nguyên trong hầu hết các ngôn ngữ lập trình?
A. Float
B. String
C. Boolean
D. Integer
11. Trong ngữ cảnh cấu trúc dữ liệu, `mảng` (array) là gì?
A. Một tập hợp các phần tử có kiểu dữ liệu khác nhau được sắp xếp ngẫu nhiên.
B. Một cấu trúc dữ liệu tuyến tính chứa các phần tử có cùng kiểu dữ liệu và được lưu trữ liên tiếp trong bộ nhớ.
C. Một cấu trúc dữ liệu phi tuyến tính, cho phép truy cập các phần tử theo bất kỳ thứ tự nào.
D. Một kiểu dữ liệu đặc biệt chỉ dùng để lưu trữ các chuỗi ký tự.
12. Đâu là mục đích của việc sử dụng `chú thích` (comment) trong mã nguồn?
A. Để làm cho chương trình chạy nhanh hơn.
B. Để giải thích mã nguồn cho người đọc, giúp mã dễ hiểu và dễ bảo trì hơn.
C. Để ẩn mã nguồn khỏi những người không có quyền truy cập.
D. Để tạo ra các lỗi cú pháp trong quá trình biên dịch.
13. Đâu là một ví dụ về cấu trúc dữ liệu `hàng đợi` (queue)?
A. Ngăn xếp các đĩa.
B. Danh sách các công việc cần in.
C. Cây thư mục trên máy tính.
D. Bảng băm (hash table).
14. Trong lập trình, `luồng` (thread) là gì?
A. Một chương trình hoàn chỉnh, độc lập.
B. Một đơn vị thực thi nhỏ nhất trong một tiến trình (process), cho phép thực hiện đồng thời các tác vụ.
C. Một loại biến đặc biệt dùng để lưu trữ địa chỉ bộ nhớ.
D. Một kỹ thuật mã hóa dữ liệu để bảo mật thông tin.
15. Khái niệm `kiểu dữ liệu trừu tượng` (Abstract Data Type - ADT) nhấn mạnh vào điều gì?
A. Cách dữ liệu được lưu trữ cụ thể trong bộ nhớ.
B. Các thao tác có thể thực hiện trên dữ liệu, không quan tâm đến cách dữ liệu được biểu diễn bên trong.
C. Hiệu suất thực thi của các thao tác trên dữ liệu.
D. Ngôn ngữ lập trình cụ thể được sử dụng để triển khai dữ liệu.
16. Trong lập trình hướng đối tượng, `kế thừa` (inheritance) cho phép điều gì?
A. Tạo ra các đối tượng độc lập, không liên quan đến nhau.
B. Một lớp (lớp con) kế thừa các thuộc tính và phương thức từ một lớp khác (lớp cha), giúp tái sử dụng mã và xây dựng hệ thống phân cấp lớp.
C. Ẩn thông tin chi tiết triển khai của một đối tượng.
D. Đóng gói dữ liệu và phương thức lại với nhau trong một đơn vị duy nhất.
17. Ưu điểm chính của việc sử dụng ngôn ngữ lập trình bậc cao so với ngôn ngữ lập trình bậc thấp là gì?
A. Ngôn ngữ bậc cao chạy nhanh hơn và hiệu quả hơn về bộ nhớ.
B. Ngôn ngữ bậc cao dễ đọc, dễ viết và dễ bảo trì hơn.
C. Ngôn ngữ bậc cao có thể truy cập trực tiếp vào phần cứng máy tính.
D. Ngôn ngữ bậc cao có ít tính năng hơn và đơn giản hơn.
18. 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 thử tất cả các khả năng.
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 gốc.
C. Tập trung vào việc tối ưu hóa hiệu suất của chương trình trước khi giải quyết vấn đề chính.
D. Lặp lại việc giải quyết vấn đề cho đến khi đạt được kết quả mong muốn.
19. Thao tác `é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 biến với một kiểu dữ liệu cụ thể.
D. Xóa bỏ kiểu dữ liệu của một biến.
20. Điều gì là mục đích chính của việc sử dụng hàm (function) trong lập trình?
A. Để làm cho chương trình chạy chậm hơn và tốn nhiều bộ nhớ hơn.
B. Để chia chương trình thành các khối nhỏ hơn, có thể tái sử dụng và dễ quản lý hơn.
C. Để giới hạn khả năng truy cập vào dữ liệu trong chương trình.
D. Để tăng độ phức tạp của chương trình và làm cho nó khó hiểu hơn.
21. Phép toán 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 không có toán hạng nào là `true`.
D. Khi số lượng toán hạng `true` là một số lẻ.
22. 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. Python
C. HTML
D. SQL
23. Điểm khác biệt chính giữa trình biên dịch (compiler) và trình thông dịch (interpreter) là gì?
A. Trình biên dịch chạy chương trình 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, còn trình thông dịch dịch và thực thi mã nguồn từng dòng một.
C. Trình thông dịch tạo ra mã máy, còn trình biên dịch thì không.
D. Trình biên dịch dễ sử dụng hơn trình thông dịch.
24. Phương pháp gỡ lỗi (debugging) nào thường được sử dụng để theo dõi giá trị của biến và luồng thực thi của chương trình?
A. Biên dịch toàn bộ chương trình trước khi chạy.
B. Sử dụng câu lệnh in (print) hoặc ghi log (log) để hiển thị thông tin tại các điểm khác nhau trong mã.
C. Tối ưu hóa mã nguồn để tăng tốc độ thực thi.
D. Viết tài liệu hướng dẫn sử dụng chương trình.
25. Trong ngữ cảnh lập trình mạng, `socket` được sử dụng để làm gì?
A. Để lưu trữ dữ liệu trên ổ cứng.
B. Để tạo giao diện người dùng đồ họa.
C. Để thiết lập kết nối và giao tiếp giữa các chương trình trên mạng.
D. Để biên dịch mã nguồn thành mã máy.
26. Nguyên tắc `DRY` (Don`t Repeat Yourself) trong lập trình khuyến khích điều gì?
A. Viết mã nguồn dài dòng và chi tiết để dễ hiểu.
B. Tránh lặp lại mã nguồn, thay vào đó, nên tái sử dụng mã khi có thể.
C. Tập trung vào việc viết mã nhanh chóng, không cần quan tâm đến việc tái sử dụng.
D. Sao chép và dán mã từ các nguồn khác nhau để tiết kiệm thời gian.
27. Trong lập trình hướng đối tượng (OOP), khái niệm `đối tượng` (object) thể hiện điều gì?
A. Một bản thiết kế hoặc khuôn mẫu để tạo ra các thực thể.
B. Một thực thể cụ thể của một lớp (class), có trạng thái và hành vi.
C. Một tập hợp các hàm và biến có liên quan, không thuộc về lớp cụ thể nào.
D. Một cách để ẩn thông tin chi tiết triển khai của một chương trình.
28. Khái niệm `biến toàn cục` (global variable) và `biến cục bộ` (local variable) khác nhau 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 được khai báo bên trong hàm, còn 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 truy cập rộng hơn (toàn chương trình), còn biến cục bộ chỉ có phạm vi trong khối mã mà nó được khai báo.
D. Biến cục bộ chỉ có thể lưu trữ số, còn biến toàn cục có thể lưu trữ mọi kiểu dữ liệu.
29. Trong cơ sở dữ liệu, ngôn ngữ SQL được sử dụng để làm gì?
A. Thiết kế giao diện người dùng cho ứng dụng.
B. Quản lý, truy vấn và thao tác dữ liệu trong hệ quản trị cơ sở dữ liệu quan hệ.
C. Phát triển ứng dụng web phía máy chủ.
D. Biên dịch mã nguồn thành mã máy.
30. Trong lập trình, biến (variable) được hiểu là gì?
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 giá trị.
C. Một loại toán tử dùng để thực hiện các phép tính số học.
D. Một cấu trúc điều khiển chương trình, quyết định luồng thực thi.