1. Syntax (cú pháp) của một ngôn ngữ lập trình đề cập đến:
A. Ý nghĩa của các câu lệnh trong chương trình.
B. Quy tắc viết mã hợp lệ mà trình biên dịch∕thông dịch có thể hiểu.
C. Hiệu suất của chương trình khi thực thi.
D. Cấu trúc dữ liệu được sử dụng trong chương trình.
2. IDE (Integrated Development Environment) là gì?
A. Một loại ngôn ngữ lập trình.
B. Một công cụ hỗ trợ lập trình viên viết, biên dịch, gỡ lỗi và quản lý dự án phần mềm.
C. Một hệ điều hành.
D. Một loại trình duyệt web.
3. Đệ quy (recursion) trong lập trình là gì?
A. Một loại vòng lặp vô hạn.
B. Một hàm gọi chính nó.
C. Một cách đặt tên biến.
D. Một kỹ thuật tối ưu hóa bộ nhớ.
4. Phép toán 'modulo′ (%) trong lập trình dùng để làm gì?
A. Tính thương của phép chia.
B. Tính tích của hai số.
C. Tính phần dư của phép chia.
D. Tính lũy thừa của một số.
5. Cấu trúc dữ liệu 'stack′ (ngăn xếp) 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. Sắp xếp theo thứ tự giá trị.
D. Truy cập ngẫu nhiên.
6. Bộ nhớ máy tính (memory) được sử dụng để làm gì trong quá trình chạy chương trình?
A. Lưu trữ mã nguồn chương trình.
B. Lưu trữ dữ liệu và mã chương trình đang thực thi.
C. Thực hiện các phép toán logic.
D. Hiển thị kết quả ra màn hình.
7. 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.
D. Khi muốn thoát khỏi vòng lặp ngay lập tức.
8. Cơ sở dữ liệu (database) được sử dụng để làm gì?
A. Thực thi mã chương trình.
B. Lưu trữ, quản lý và truy xuất dữ liệu có cấu trúc.
C. Thiết kế giao diện người dùng.
D. Kiểm thử phần mềm.
9. Giải thuật (algorithm) là gì?
A. Một ngôn ngữ lập trình cụ thể.
B. Một chương trình máy tính hoàn chỉnh.
C. 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 đề.
D. Một lỗi cú pháp trong chương trình.
10. Kiểm thử phần mềm (software testing) nhằm mục đích chính là gì?
A. Tăng tốc độ chương trình.
B. Tìm và giảm thiểu số lượng lỗi trong phần mềm trước khi phát hành.
C. Làm cho giao diện người dùng đẹp hơn.
D. Giảm chi phí phát triển phần mềm.
11. 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.
D. Khai báo biến.
12. Ngôn ngữ lập trình bậc cao (high-level programming language) có đặc điểm gì?
A. Khó học và sử dụng.
B. Gần gũi với ngôn ngữ máy tính.
C. Dễ đọc, dễ viết và trừu tượng hóa khỏi phần cứng máy tính.
D. Chạy nhanh hơn ngôn ngữ bậc thấp.
13. Thao tác với file (file handling) trong lập trình cho phép chương trình làm gì?
A. Kết nối mạng.
B. Tương tác với cơ sở dữ liệu.
C. Đọc và ghi dữ liệu vào file trên hệ thống.
D. Tạo giao diện người dùng.
14. 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. Xác định cấu trúc chương trình.
C. Thực hiện các phép toán số học.
D. Điều khiển luồng thực thi của chương trình.
15. Tại sao chú thích (comments) lại quan trọng trong mã nguồn?
A. Để tăng tốc độ biên dịch chương trình.
B. Để làm cho chương trình chạy đúng.
C. Để giải thích mã nguồn, giúp người khác (và chính bạn sau này) hiểu code dễ hơn.
D. Để giảm dung lượng file mã nguồn.
16. Sự khác biệt cơ bản giữa lập trình hướng thủ tục (procedural programming) và lập trình hướng đối tượng (OOP) là gì?
A. OOP nhanh hơn procedural programming.
B. Procedural tập trung vào dữ liệu, OOP tập trung vào thủ tục.
C. Procedural tập trung vào thủ tục∕hàm, OOP tập trung vào đối tượng và lớp.
D. OOP dễ học hơn procedural programming.
17. Gỡ lỗi (debugging) trong lập trình là quá trình:
A. Viết mã chương trình.
B. Biên dịch mã nguồn.
C. Tìm và sửa lỗi trong chương trình.
D. Tối ưu hóa hiệu suất chương trình.
18. Bảo mật phần mềm (software security) là gì?
A. Làm cho chương trình chạy nhanh hơn.
B. Đảm bảo phần mềm an toàn trước các mối đe dọa, truy cập trái phép, và lỗ hổng bảo mật.
C. Làm cho giao diện người dùng thân thiện hơn.
D. Giảm chi phí phát triển phần mềm.
19. Trong lập trình, 'tham số' (parameter) và 'đối số' (argument) khác nhau như thế nào?
A. Không có sự khác biệt, hai thuật ngữ này đồng nghĩa.
B. Tham số được truyền vào hàm khi gọi, đối số được định nghĩa trong khai báo hàm.
C. Tham số được định nghĩa trong khai báo hàm, đối số là giá trị thực tế truyền vào khi gọi hàm.
D. Đối số chỉ dùng cho hàm, tham số dùng cho biến.
20. Kiểu dữ liệu 'boolean′ thường được sử dụng để biểu diễn loại thông tin nào?
A. Số nguyên.
B. Số thực.
C. Chuỗi ký tự.
D. Giá trị logic đúng hoặc sai.
21. Độ phức tạp thuật toán (algorithm complexity) dùng để đánh giá điều gì?
A. Độ dài mã nguồn của thuật toán.
B. Thời gian chạy và bộ nhớ cần thiết của thuật toán khi kích thước đầu vào tăng lên.
C. Độ dễ hiểu của thuật toán.
D. Số lượng lỗi trong thuật toán.
22. Mảng (array) là gì?
A. Một kiểu dữ liệu cơ bản.
B. Một tập hợp các biến có kiểu dữ liệu khác nhau.
C. Một cấu trúc dữ liệu lưu trữ một tập hợp các phần tử cùng kiểu.
D. Một loại toán tử trong lập trình.
23. Trong lập trình hướng đối tượng (OOP), 'class′ là gì?
A. Một đối tượng cụ thể.
B. Một bản thiết kế hoặc khuôn mẫu để tạo ra các đối tượng.
C. Một hàm đặc biệt trong chương trình.
D. Một biến toàn cục.
24. Độ dễ đọc của mã nguồn (code readability) có ý nghĩa gì?
A. Chương trình chạy nhanh hơn.
B. Mã nguồn dễ hiểu, dễ bảo trì và hợp tác.
C. Chương trình ít lỗi hơn.
D. Giảm dung lượng bộ nhớ sử dụng.
25. 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. Giảm dung lượng bộ nhớ sử dụng.
C. Tổ chức mã nguồn thành các khối logic, tái sử dụng được.
D. Bảo mật dữ liệu chương trình.
26. Kiểm soát phiên bản (version control) như Git được sử dụng để làm gì?
A. Tăng tốc độ biên dịch code.
B. Quản lý và theo dõi các thay đổi của mã nguồn theo thời gian, hỗ trợ làm việc nhóm.
C. Tự động sửa lỗi code.
D. Tối ưu hóa hiệu suất chương trình.
27. Hoạt động Input∕Output (I∕O) trong lập trình liên quan đến:
A. Tính toán số học.
B. Xử lý dữ liệu trong bộ nhớ.
C. Tương tác với thế giới bên ngoài (ví dụ: đọc dữ liệu từ bàn phím, ghi ra màn hình).
D. Điều khiển luồng thực thi chương trình.
28. Vòng đời phát triển phần mềm (SDLC - Software Development Life Cycle) là gì?
A. Thời gian tồn tại của một phần mềm.
B. Quy trình các bước để tạo ra và duy trì một phần mềm.
C. Số lượng lỗi trong một phần mềm.
D. Hiệu suất của một phần mềm.
29. Sự khác biệt chính giữa ngôn ngữ biên dịch (compiled) và ngôn ngữ thông dịch (interpreted) là gì?
A. Ngôn ngữ biên dịch chạy nhanh 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 thực thi từng dòng lệnh.
C. Ngôn ngữ thông dịch dễ học hơn ngôn ngữ biên dịch.
D. Ngôn ngữ biên dịch có thể chạy trên nhiều nền tảng hơn.
30. Mạng máy tính (computer network) có vai trò gì trong lập trình?
A. Tăng tốc độ CPU.
B. Cho phép các chương trình giao tiếp và trao đổi dữ liệu giữa các máy tính.
C. Quản lý bộ nhớ hiệu quả hơn.
D. Bảo vệ chương trình khỏi virus.