1. Khái niệm Tư duy tính toán (Computational Thinking) bao gồm những yếu tố cốt lõi nào?
A. Phân tích, tìm kiếm và lập trình.
B. Phân rã, nhận dạng mẫu, trừu tượng hóa và thiết kế thuật toán.
C. Biên dịch, gỡ lỗi và tối ưu hóa.
D. Phân tích dữ liệu, học máy và trí tuệ nhân tạo.
2. Phát biểu nào sau đây mô tả chính xác nhất khái niệm thuật toán trong khoa học máy tính?
A. Một chuỗi các chỉ dẫn máy tính có thể hiểu trực tiếp.
B. Một bộ hữu hạn các bước rõ ràng, xác định để giải quyết một vấn đề hoặc thực hiện một tác vụ.
C. Một chương trình máy tính đã được biên dịch.
D. Một bộ sưu tập các biến và hàm.
3. Mô hình OSI (Open Systems Interconnection) chia các chức năng mạng thành bao nhiêu lớp?
A. 5 lớp
B. 4 lớp
C. 7 lớp
D. 3 lớp
4. Khái niệm API (Application Programming Interface) cho phép gì giữa các phần mềm?
A. Ẩn hoàn toàn mã nguồn của ứng dụng.
B. Cung cấp một bộ quy tắc và định nghĩa để các ứng dụng phần mềm có thể giao tiếp với nhau.
C. Tự động hóa quá trình biên dịch mã.
D. Phân tích lỗi trong quá trình chạy.
5. Nguyên tắc Đa hình (Polymorphism) trong OOP cho phép gì?
A. Tạo ra các bản sao của đối tượng.
B. Cho phép các đối tượng thuộc các lớp khác nhau nhưng có cùng một giao diện (interface) hoặc lớp cha chung phản ứng khác nhau với cùng một lời gọi phương thức.
C. Giảm thiểu việc sử dụng bộ nhớ.
D. Tự động hóa việc kiểm tra lỗi.
6. Trong lập trình Python, cấu trúc if-elif-else được sử dụng cho mục đích gì?
A. Lặp lại một khối mã nhiều lần.
B. Thực hiện các khối mã khác nhau dựa trên các điều kiện khác nhau.
C. Định nghĩa các hàm.
D. Tạo các biến.
7. Nguyên tắc DRY (Dont Repeat Yourself) trong lập trình nhấn mạnh điều gì?
A. Tránh sử dụng các vòng lặp.
B. Mỗi phần kiến thức chỉ nên có một biểu diễn duy nhất, không lặp lại.
C. Luôn sử dụng các hàm con.
D. Tránh ghi comment trong mã nguồn.
8. Khái niệm Big O notation (ký hiệu O lớn) trong phân tích thuật toán dùng để biểu diễn điều gì?
A. Độ chính xác tuyệt đối của kết quả thuật toán.
B. Giới hạn trên của độ phức tạp thời gian hoặc không gian của thuật toán khi kích thước đầu vào tăng lên.
C. Số lượng dòng mã nguồn của thuật toán.
D. Tốc độ thực thi trung bình của thuật toán trên một cấu hình phần cứng cụ thể.
9. Khái niệm tệp tin (file) trong hệ điều hành là gì?
A. Một chương trình đang chạy.
B. Một tập hợp các lệnh được lưu trữ trên bộ nhớ ngoài, có tên và cấu trúc nhất định.
C. Một kết nối mạng giữa hai máy tính.
D. Một bộ phận của phần cứng máy tính.
10. Trong hệ điều hành, tiến trình (process) là gì?
A. Một tệp tin chương trình trên đĩa cứng.
B. Một chương trình đang được thực thi, bao gồm mã lệnh, dữ liệu và trạng thái hiện tại.
C. Một chuỗi các lệnh được viết bởi lập trình viên.
D. Một bộ nhớ đệm (cache) của CPU.
11. Khi nói về lập trình hướng đối tượng (Object-Oriented Programming - OOP), khái niệm tính kế thừa (inheritance) cho phép gì?
A. Che giấu thông tin chi tiết của đối tượng.
B. Cho phép một lớp mới (lớp con) kế thừa các thuộc tính và phương thức từ một lớp đã có (lớp cha).
C. Tạo ra nhiều thể hiện (instance) của cùng một lớp.
D. Cho phép đối tượng tương tác với nhau thông qua các thông điệp.
12. Nguyên lý Đóng gói (Encapsulation) trong OOP có ý nghĩa quan trọng nhất là gì?
A. Tạo ra các lớp độc lập hoàn toàn.
B. Kết hợp dữ liệu (thuộc tính) và các phương thức thao tác trên dữ liệu đó vào một đơn vị duy nhất (đối tượng) và kiểm soát truy cập.
C. Cho phép các đối tượng khác nhau có cùng tên phương thức.
D. Giảm thiểu số lượng lớp trong chương trình.
13. Khi một chương trình gặp lỗi segmentation fault (lỗi phân đoạn), điều này thường chỉ ra vấn đề gì?
A. Lỗi cú pháp trong mã nguồn.
B. Chương trình cố gắng truy cập vào một vùng bộ nhớ không hợp lệ hoặc không được phép.
C. Thiếu biến trong chương trình.
D. Vòng lặp vô hạn.
14. Phân tích độ phức tạp thời gian của thuật toán (time complexity) nhằm mục đích gì?
A. Đo lường dung lượng bộ nhớ mà thuật toán sử dụng.
B. Ước lượng số lượng phép toán cơ bản mà thuật toán thực hiện theo hàm của kích thước đầu vào.
C. Xác định ngôn ngữ lập trình phù hợp nhất cho thuật toán.
D. Kiểm tra tính đúng đắn của thuật toán.
15. Trong kỹ thuật lập trình, debug là quá trình gì?
A. Viết mã nguồn mới.
B. Tối ưu hóa hiệu suất của chương trình.
C. Tìm kiếm, xác định và sửa lỗi trong mã nguồn.
D. Tạo tài liệu kỹ thuật cho chương trình.
16. Độ phức tạp không gian (space complexity) của thuật toán đo lường điều gì?
A. Thời gian thực thi của thuật toán.
B. Số lượng bộ nhớ (RAM, đĩa cứng) mà thuật toán yêu cầu để chạy.
C. Số lượng dòng mã nguồn.
D. Độ sâu của cây quyết định.
17. Trong ngôn ngữ SQL (Structured Query Language), câu lệnh `SELECT` dùng để làm gì?
A. Thêm dữ liệu mới vào bảng.
B. Xóa dữ liệu khỏi bảng.
C. Truy xuất (lấy) dữ liệu từ một hoặc nhiều bảng.
D. Cập nhật dữ liệu hiện có trong bảng.
18. Trong mạng máy tính, địa chỉ IP (Internet Protocol) có vai trò gì?
A. Xác định tên miền của trang web.
B. Định danh duy nhất cho mỗi thiết bị trên mạng để định tuyến dữ liệu.
C. Mã hóa dữ liệu truyền đi.
D. Quản lý băng thông mạng.
19. Trong ngôn ngữ lập trình, một vòng lặp for thường được sử dụng khi nào?
A. Khi số lần lặp không được biết trước.
B. Khi cần thực hiện một hành động cho mỗi phần tử trong một tập hợp hoặc một số lần xác định trước.
C. Khi cần thoát khỏi vòng lặp ngay lập tức.
D. Khi cần kiểm tra một điều kiện phức tạp.
20. Phát biểu nào sau đây mô tả đúng về biến (variable) trong lập trình?
A. Một giá trị cố định không bao giờ thay đổi.
B. Một đại diện cho một vị trí trong bộ nhớ có thể lưu trữ dữ liệu và giá trị của nó có thể thay đổi.
C. Một từ khóa dành riêng của ngôn ngữ lập trình.
D. Một toán tử thực hiện phép tính.
21. Trong lập trình Python, hàm `print()` được sử dụng để làm gì?
A. Nhận dữ liệu đầu vào từ người dùng.
B. Thực hiện các phép tính toán học.
C. In (hiển thị) thông tin ra màn hình console.
D. Định nghĩa một hàm mới.
22. Trong các cấu trúc dữ liệu, hàng đợi (queue) tuân theo nguyên tắc hoạt động nào?
A. LIFO (Last-In, First-Out)
B. FIFO (First-In, First-Out)
C. FILO (First-In, Last-Out)
D. LIFO (Last-In, First-Out) và FIFO (First-In, First-Out) đều đúng.
23. Trong lập trình Python, cấu trúc dữ liệu nào cho phép lưu trữ một tập hợp các phần tử có thể thay đổi thứ tự và cho phép trùng lặp?
A. Tuple
B. Set
C. List
D. Dictionary
24. Trong lập trình, mảng (array) là một cấu trúc dữ liệu có đặc điểm chính là gì?
A. Các phần tử có thể có kiểu dữ liệu khác nhau và không có thứ tự.
B. Các phần tử có cùng kiểu dữ liệu, được lưu trữ liên tiếp trong bộ nhớ và có thể truy cập bằng chỉ số (index).
C. Các phần tử được lưu trữ theo dạng cây.
D. Các phần tử được lưu trữ dưới dạng cặp khóa-giá trị.
25. Trong cơ sở dữ liệu quan hệ, khóa chính (primary key) có chức năng gì?
A. Liên kết hai bảng với nhau.
B. Đảm bảo tính duy nhất và toàn vẹn của mỗi bản ghi trong một bảng.
C. Lưu trữ các dữ liệu không quan trọng.
D. Xác định quyền truy cập của người dùng.