1. Hệ điều hành (Operating System - OS) có chức năng chính là gì?
A. Biên dịch mã nguồn chương trình.
B. Kết nối internet.
C. Quản lý tài nguyên phần cứng và phần mềm của máy tính, cung cấp môi trường để chạy ứng dụng.
D. Thiết kế giao diện người dùng.
2. Trong lập trình web, ngôn ngữ nào thường được sử dụng cho phần 'frontend′ (giao diện người dùng)?
A. SQL.
B. Python.
C. JavaScript.
D. Java.
3. 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 nhỏ, tái sử dụng được.
C. Tăng tốc độ thực thi chương trình.
D. Kiểm soát truy cập bộ nhớ.
4. Trong ngữ cảnh lập trình, 'thuật toán′ (algorithm) là gì?
A. Một loại ngôn ngữ lập trình.
B. Một tập hợp các bước hữu hạn và rõ ràng để giải quyết một vấn đề cụ thể.
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.
5. Trong lập trình hướng đối tượng, 'đối tượng′ (object) là gì?
A. Một kiểu dữ liệu nguyên thủy.
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ùng để khởi tạo biến.
D. Một cấu trúc điều khiển vòng lặp.
6. 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 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).
C. Ẩn giấu thông tin bên trong đối tượng.
D. Đóng gói dữ liệu và phương thức vào trong một đơn vị.
7. Tính 'đa hình′ (polymorphism) trong lập trình hướng đối tượng 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ể kế thừa từ nhiều lớp khác nhau.
D. Các đối tượng được tạo ra một cách ngẫu nhiên.
8. Thủ tục (procedure) khác với hàm (function) ở điểm nào chính?
A. Thủ tục có thể trả về giá trị, hàm thì không.
B. Hàm có thể nhận tham số, thủ tục thì không.
C. Thủ tục thường không trả về giá trị trực tiếp, trong khi hàm thường trả về một giá trị.
D. Hàm được sử dụng cho các tác vụ đơn giản, thủ tục cho tác vụ phức tạp.
9. Ngôn ngữ lập trình nào thường được dùng cho phần 'backend′ (phía máy chủ) trong phát triển web?
A. HTML.
B. CSS.
C. JavaScript (chỉ frontend).
D. Python, Java, PHP, Node.js (JavaScript backend).
10. API (Application Programming Interface) là gì?
A. Một loại hệ điều hành.
B. Một giao diện 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 ngôn ngữ lập trình mới.
D. Một công cụ để thiết kế giao diện người dùng.
11. Quá trình 'debug′ (gỡ lỗi) trong lập trình 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 các lỗi trong mã nguồn chương trình.
C. Biên dịch mã nguồn thành mã máy.
D. Tối ưu hóa hiệu suất chương trình.
12. Phép toán 'modulo′ (%) trong lập trình thực hiện chức năng gì?
A. Tính thương của phép chia.
B. Tính tích của hai số.
C. Tính lũy thừa của một số.
D. Tính phần dư của phép chia.
13. 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 hoặc sai).
14. Mảng (array) là cấu trúc dữ liệu dùng để lưu trữ:
A. Các dữ liệu có kiểu khác nhau.
B. Một tập hợp các phần tử có cùng kiểu dữ liệu, được sắp xếp liên tục trong bộ nhớ.
C. Dữ liệu dạng cây phân cấp.
D. Các cặp key-value.
15. Thuật ngữ 'compile′ (biên dịch) trong lập trình có nghĩa là gì?
A. Chạy trực tiếp mã nguồn.
B. Chuyển đổi mã nguồn từ ngôn ngữ lập trình sang mã máy (machine code) để máy tính hiểu và thực thi.
C. Gỡ lỗi chương trình.
D. Tối ưu hóa mã nguồn.
16. SQL là ngôn ngữ truy vấn cơ sở dữ liệu, viết tắt của cụm từ nào?
A. Structured Question Language.
B. Simple Query Language.
C. Structured Query Language.
D. Systematic Query Language.
17. Độ phức tạp thời gian 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 lên.
C. Sự phức tạp của mã nguồn thuật toán.
D. Số lượng dòng code trong thuật toán.
18. Trong lập trình, biến (variable) được hiểu là gì?
A. Một giá trị không đổi được gán cho tên.
B. Một vùng nhớ trong máy tính được đặt tên, dùng để lưu trữ dữ liệu có thể thay đổi.
C. Một lệnh để thực hiện phép toán số học.
D. Một loại dữ liệu đặc biệt chỉ chứa văn bản.
19. 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 điều kiện đúng hoặc sai.
C. Khai báo biến và kiểu dữ liệu.
D. Định nghĩa một hàm (function).
20. Biến toàn cục (global variable) khác biến cục bộ (local variable) như thế nào?
A. Biến toàn cục chỉ dùng trong hàm, biến cục bộ dùng ngoài hàm.
B. 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ỉ dùng trong phạm vi hàm khai báo.
C. Biến toàn cục lưu trữ số, biến cục bộ lưu trữ chuỗi.
D. Biến toàn cục không thể thay đổi giá trị, biến cục bộ có thể thay đổi.
21. Quy trình phát triển phần mềm 'Agile′ chú trọng điều gì?
A. Lập kế hoạch chi tiết từ đầu đến cuối và tuân thủ nghiêm ngặt kế hoạch đó.
B. Linh hoạt, thích ứng với thay đổi, phát triển phần mềm theo từng giai đoạn ngắn và có sự tương tác liên tục với khách hàng.
C. Tập trung vào tài liệu hóa chi tiết mọi khía cạnh của phần mềm.
D. Phát triển phần mềm một lần duy nhất và không thay đổi sau khi hoàn thành.
22. Version control system (VCS) như Git được sử dụng để làm gì trong phát triển phần mềm?
A. Biên dịch mã nguồn.
B. Quản lý và theo dõi sự thay đổi của mã nguồn theo thời gian, hợp tác nhóm.
C. Kiểm thử phần mềm.
D. Triển khai ứng dụng lên server.
23. 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 lại hoặc có thể xác định số lần lặp.
C. Khi muốn thực hiện một khối lệnh chỉ một lần duy nhất.
D. Khi điều kiện lặp phụ thuộc vào giá trị nhập từ người dùng.
24. Cơ sở dữ liệu quan hệ (relational database) hoạt động dựa trên mô hình dữ liệu nào?
A. Mô hình cây.
B. Mô hình mạng.
C. Mô hình quan hệ (dữ liệu được tổ chức thành các bảng).
D. Mô hình hướng đối tượng.
25. RAM (Random Access Memory) đóng vai trò gì trong hệ thống máy tính khi chạy chương trình?
A. Lưu trữ dữ liệu lâu dài sau khi tắt máy.
B. Lưu trữ tạm thời dữ liệu và lệnh đang được CPU xử lý.
C. Thực hiện các phép tính số học và logic.
D. Quản lý các thiết bị ngoại vi.
26. Mục đích chính của việc sử dụng 'comment′ (chú thích) trong mã nguồn là gì?
A. Tăng tốc độ thực thi chương trình.
B. Giúp người đọc hiểu rõ hơn về mã nguồn, giải thích logic hoặc mục đích của đoạn code.
C. Ẩn mã nguồn khỏi người khác.
D. Tạo ra lỗi trong chương trình để kiểm thử.
27. 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 tạm thời.
B. Định nghĩa khuôn mẫu cho các đối tượng, mô tả thuộc tính và phương thức chung.
C. Quản lý bộ nhớ.
D. Tối ưu hóa tốc độ chương trình.
28. Kiểu dữ liệu 'integer′ thường được sử dụng để biểu diễn loại dữ liệu nào trong lập trình?
A. Số thực (số thập phân).
B. Chuỗi ký tự (văn bản).
C. Số nguyên (số không có phần thập phân).
D. Giá trị logic (đúng∕sai).
29. Điểm khác biệt chính giữa ngôn ngữ biên dịch (compiled language) và ngôn ngữ thông dịch (interpreted language) là gì?
A. Ngôn ngữ biên dịch chạy chậm hơn ngôn ngữ thông dịch.
B. Ngôn ngữ biên dịch cần biên dịch trước khi chạy, ngôn ngữ thông dịch chạy trực tiếp từng dòng code.
C. Ngôn ngữ biên dịch dễ học hơn ngôn ngữ thông dịch.
D. Ngôn ngữ thông dịch tạo ra file thực thi, ngôn ngữ biên dịch thì không.
30. Lỗi 'syntax error′ (lỗi cú pháp) xảy ra khi nào?
A. Chương trình chạy quá chậm.
B. Có lỗi logic trong thuật toán.
C. Vi phạm quy tắc ngữ pháp của ngôn ngữ lập trình.
D. Thiếu bộ nhớ để chạy chương trình.