1. Trong mạng máy tính, giao thức nào chịu trách nhiệm truyền tải dữ liệu giữa các máy chủ và trình duyệt web?
A. FTP (File Transfer Protocol)
B. SMTP (Simple Mail Transfer Protocol)
C. HTTP (Hypertext Transfer Protocol)
D. DNS (Domain Name System)
2. Đâu là một ví dụ về "lỗi cú pháp" (syntax error) trong lập trình?
A. Chương trình chạy chậm hơn dự kiến.
B. Chương trình không cho ra kết quả mong muốn do logic sai.
C. Thiếu dấu ngoặc kép khi khai báo một chuỗi ký tự.
D. Chương trình bị treo hoặc crash trong quá trình chạy.
3. Trong lập trình Python, khi làm việc với các đối tượng file, phương thức nào được sử dụng để đọc toàn bộ nội dung của file thành một chuỗi duy nhất?
A. readline()
B. readlines()
C. read()
D. write()
4. Đâu là một ví dụ về "Big Data" khi xem xét các đặc điểm "Volume", "Velocity", "Variety", "Veracity" và "Value"?
A. Danh sách các giao dịch ngân hàng trong một ngày.
B. Dữ liệu từ các cảm biến của một thành phố thông minh hoạt động liên tục.
C. Một tập tin văn bản chứa thông tin liên hệ của 1000 khách hàng.
D. Nhật ký hoạt động của một người dùng trên mạng xã hội.
5. Khi xử lý dữ liệu lớn bằng Python, thư viện nào thường được sử dụng để thao tác hiệu quả với các mảng đa chiều và thực hiện các phép tính toán số học phức tạp?
A. Pandas
B. NumPy
C. Matplotlib
D. SciPy
6. Trong lập trình, khi bạn cần lưu trữ một tập hợp các cặp khóa-giá trị, cấu trúc dữ liệu nào là phù hợp nhất?
A. List
B. Tuple
C. Set
D. Dictionary (hoặc Hash Map)
7. 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ứ tự, không thay đổi và có thể chứa các kiểu dữ liệu khác nhau?
A. List
B. Dictionary
C. Tuple
D. Set
8. Nguyên lý "polymorphism" (đa hình) trong OOP cho phép:
A. Một lớp có thể có nhiều constructor.
B. Một đối tượng có thể được truy cập dưới nhiều hình thức khác nhau.
C. Một lớp có thể kế thừa từ nhiều lớp cha.
D. Dữ liệu được bảo vệ khỏi truy cập trái phép.
9. Khi nói về thuật toán sắp xếp, "stable sort" (sắp xếp ổn định) có nghĩa là gì?
A. Thuật toán luôn có độ phức tạp O(n log n).
B. Thứ tự tương đối của các phần tử bằng nhau được bảo toàn sau khi sắp xếp.
C. Thuật toán chỉ hoạt động trên mảng đã được sắp xếp một phần.
D. Thuật toán sử dụng ít bộ nhớ phụ trợ nhất.
10. Trong lập trình Python, hàm `print()` dùng để làm gì?
A. Đọc dữ liệu từ bàn phím.
B. Hiển thị thông tin ra màn hình console.
C. Thực hiện phép tính toán học.
D. Kiểm tra điều kiện logic.
11. Đâu là một ví dụ về "thuật toán đệ quy" điển hình?
A. Tìm kiếm nhị phân (Binary Search).
B. Sắp xếp nổi bọt (Bubble Sort).
C. Tính giai thừa (Factorial).
D. Tìm phần tử lớn nhất trong mảng.
12. Trong lĩnh vực Trí tuệ nhân tạo (AI), "Machine Learning" (Học máy) tập trung vào việc gì?
A. Thiết kế các hệ thống có thể suy luận logic như con người.
B. Cho phép máy tính học hỏi từ dữ liệu mà không cần được lập trình tường minh.
C. Xây dựng các mô hình ngôn ngữ tự nhiên phức tạp.
D. Tạo ra các robot có khả năng tương tác vật lý với môi trường.
13. Một trang web được xây dựng bằng HTML, CSS và JavaScript thuộc loại ứng dụng nào?
A. Ứng dụng di động (Mobile App)
B. Ứng dụng máy tính để bàn (Desktop App)
C. Ứng dụng web (Web App)
D. Ứng dụng nhúng (Embedded App)
14. Trong một vòng lặp `for` của Python, từ khóa `break` được sử dụng để làm gì?
A. Bỏ qua lần lặp hiện tại và tiếp tục với lần lặp tiếp theo.
B. Chấm dứt hoàn toàn vòng lặp.
C. Kiểm tra một điều kiện trước khi tiếp tục vòng lặp.
D. Thực hiện một khối lệnh khi điều kiện vòng lặp sai.
15. Trong SQL, câu lệnh nào được sử dụng để lấy dữ liệu từ một hoặc nhiều bảng?
A. INSERT
B. UPDATE
C. DELETE
D. SELECT
16. Đâu là đặc điểm chính của thuật toán sắp xếp nổi bọt (bubble sort) khi so sánh với thuật toán sắp xếp chọn (selection sort)?
A. Bubble sort thực hiện ít phép hoán vị hơn.
B. Selection sort thực hiện ít phép so sánh hơn.
C. Bubble sort có độ phức tạp thời gian tốt hơn trong mọi trường hợp.
D. Selection sort luôn có độ phức tạp thời gian là O(n^2).
17. Một thuật toán đệ quy (recursive algorithm) là thuật toán mà trong quá trình thực thi:
A. Sử dụng vòng lặp để lặp lại một khối lệnh nhiều lần.
B. Gọi lại chính nó để giải quyết các bài toán con.
C. Phân rã bài toán thành các bài toán nhỏ hơn và giải quyết song song.
D. Sử dụng cấu trúc dữ liệu ngăn xếp (stack) để lưu trữ trạng thái.
18. Đâu là một ví dụ về cấu trúc dữ liệu cây (tree) trong khoa học máy tính?
A. Danh sách liên kết đôi (Doubly Linked List).
B. Hàng đợi ưu tiên (Priority Queue).
C. Cây tìm kiếm nhị phân (Binary Search Tree).
D. Ngăn xếp (Stack).
19. Độ phức tạp thời gian của thuật toán sắp xếp Quick Sort trung bình là bao nhiêu?
A. O(n)
B. O(n log n)
C. O(n^2)
D. O(log n)
20. Khi thiết kế thuật toán, "greedy approach" (tiếp cận tham lam) là phương pháp chọn:
A. Giải pháp tối ưu toàn cục bằng cách xem xét tất cả các khả năng.
B. Các lựa chọn mang lại lợi ích cục bộ tốt nhất tại mỗi bước.
C. Giải pháp tối ưu bằng cách chia nhỏ bài toán và kết hợp kết quả.
D. Giải pháp dựa trên các quy tắc logic được định sẵn.
21. Khái niệm "API" (Application Programming Interface) trong phát triển phần mềm đề cập đến:
A. Một giao diện người dùng đồ họa cho phép tương tác trực quan.
B. Một tập hợp các quy tắc và định nghĩa cho phép các ứng dụng phần mềm giao tiếp với nhau.
C. Một phương thức để mã hóa dữ liệu nhạy cảm.
D. Một loại máy chủ lưu trữ dữ liệu cho các ứng dụng.
22. Khi thiết kế một cơ sở dữ liệu quan hệ, khóa chính (primary key) có vai trò gì?
A. Liên kết hai bảng với nhau.
B. Đảm bảo tính duy nhất và xác định mỗi bản ghi trong một bảng.
C. Cho phép truy cập dữ liệu nhanh chóng hơn.
D. Xác định mối quan hệ giữa các thuộc tính.
23. Trong lập trình Python, để khai báo một biến là hằng số (không thay đổi giá trị sau khi gán), theo quy ước, chúng ta thường đặt tên biến như thế nào?
A. Tất cả các chữ thường.
B. Chữ cái đầu viết hoa, các chữ còn lại viết thường.
C. Tất cả các chữ viết hoa.
D. Sử dụng tiền tố `const_`.
24. Trong lập trình hướng đối tượng, khái niệm "encapsulation" (đóng gói) đề cập đến điều gì?
A. Khả năng một đối tượng có thể có nhiều dạng biểu hiện.
B. Khả năng che giấu dữ liệu và chỉ cho phép truy cập thông qua các phương thức của lớp.
C. Khả năng một lớp kế thừa các thuộc tính và phương thức từ một lớp khác.
D. Khả năng tạo ra một giao diện chung cho nhiều lớp khác nhau.
25. Một thuật toán tìm kiếm tuyến tính (linear search) trên một mảng chưa sắp xếp có độ phức tạp thời gian là bao nhiêu trong trường hợp xấu nhất?
A. O(log n)
B. O(n log n)
C. O(n)
D. O(1)