1. Trong lập trình, khái niệm vòng lặp vô hạn (infinite loop) xảy ra khi nào?
A. Khi điều kiện thoát của vòng lặp luôn đúng.
B. Khi vòng lặp thực hiện đủ số lần lặp.
C. Khi điều kiện thoát của vòng lặp không bao giờ đạt tới.
D. Khi vòng lặp chỉ chạy một lần duy nhất.
2. Khi lập trình, một biến (variable) là gì?
A. Một hàm thực thi một tác vụ cụ thể.
B. Một giá trị cố định không thay đổi trong quá trình chạy chương trình.
C. Một tên đại diện cho một vùng nhớ có thể lưu trữ dữ liệu và giá trị của nó có thể thay đổi.
D. Một tập hợp các câu lệnh được thực thi theo trình tự.
3. Trong lập trình, khi thực hiện một thuật toán tìm kiếm tuần tự trên một mảng chưa được sắp xếp, độ phức tạp thời gian trung bình của thuật toán này là bao nhiêu?
A. O(log n)
B. O(1)
C. O(n^2)
D. O(n)
4. Khi sử dụng vòng lặp for trong lập trình để duyệt qua một danh sách (list) có N phần tử, nếu vòng lặp được thiết kế để truy cập từng phần tử một cách tuần tự, độ phức tạp thời gian ước tính là bao nhiêu?
A. O(N^2)
B. O(log N)
C. O(N)
D. O(1)
5. Trong lập trình, khái niệm kiểu dữ liệu trừu tượng (Abstract Data Type - ADT) tập trung vào điều gì?
A. Chi tiết về cách dữ liệu được lưu trữ và thao tác.
B. Chỉ cách dữ liệu được hiển thị cho người dùng.
C. Định nghĩa về các thao tác có thể thực hiện trên dữ liệu và logic của chúng, không quan tâm đến cách triển khai.
D. Tốc độ xử lý của các thao tác dữ liệu.
6. Trong lập trình hướng đối tượng, khái niệm tính đóng gói (encapsulation) đề cập đến việc gì?
A. Cho phép một lớp kế thừa các thuộc tính và phương thức từ lớp cha.
B. Cho phép một đối tượng có thể có nhiều hình thái khác nhau.
C. Gói gọn dữ liệu (thuộc tính) và các phương thức xử lý dữ liệu đó vào trong một đơn vị duy nhất (lớp).
D. Cho phép các lớp khác truy cập trực tiếp vào các thuộc tính riêng tư của một lớp.
7. Khi thực hiện thuật toán sắp xếp nổi bọt (Bubble Sort) trên một mảng có N phần tử, trong trường hợp xấu nhất, độ phức tạp thời gian của thuật toán là bao nhiêu?
A. O(N)
B. O(log N)
C. O(N log N)
D. O(N^2)
8. Trong hệ quản trị cơ sở dữ liệu, khóa chính (Primary Key) của một bảng có vai trò quan trọng nhất là gì?
A. Đảm bảo tính toàn vẹn tham chiếu giữa các bảng.
B. Chỉ định nghĩa mối quan hệ giữa các bảng.
C. Xác định duy nhất mỗi bản ghi trong bảng.
D. Tăng tốc độ truy vấn dữ liệu.
9. Khi thiết kế một cơ sở dữ liệu quan hệ, việc chuẩn hóa (Normalization) nhằm mục đích chính là gì?
A. Tăng cường khả năng lưu trữ dữ liệu.
B. Giảm thiểu sự dư thừa dữ liệu và tránh các vấn đề về cập nhật.
C. Tăng tốc độ truy vấn dữ liệu một cách tối đa.
D. Đảm bảo tính nhất quán của dữ liệu qua các phiên bản hệ thống.
10. Trong lập trình, một mảng động (dynamic array) khác với mảng tĩnh (static array) ở điểm cơ bản nào?
A. Mảng động chỉ có thể chứa các phần tử cùng kiểu.
B. Kích thước của mảng động có thể thay đổi trong quá trình chạy chương trình.
C. Mảng động không yêu cầu cấp phát bộ nhớ.
D. Mảng động luôn có độ phức tạp truy cập O(N).
11. Trong lập trình, một mảng hai chiều (2D array) thường được sử dụng để biểu diễn cấu trúc dữ liệu dạng nào?
A. Một danh sách tuyến tính các phần tử.
B. Một cấu trúc cây phân cấp.
C. Một bảng hoặc ma trận với các hàng và cột.
D. Một tập hợp các phần tử không có thứ tự.
12. Khi thực hiện thao tác JOIN trong SQL, mục đích chính là gì?
A. Xóa bỏ các bản ghi trùng lặp khỏi bảng.
B. Ghép nối các hàng từ hai hoặc nhiều bảng dựa trên một cột liên quan.
C. Sắp xếp kết quả truy vấn theo một thứ tự nhất định.
D. Giới hạn số lượng bản ghi trả về từ truy vấn.
13. Khi phân tích thuật toán, độ phức tạp không gian (space complexity) đo lường điều gì?
A. Thời gian thực thi của thuật toán.
B. Lượng bộ nhớ mà thuật toán sử dụng.
C. Số lượng phép toán mà thuật toán thực hiện.
D. Kích thước của dữ liệu đầu vào.
14. Trong lập trình hướng đối tượng, đa hình (polymorphism) cho phép điều gì?
A. Một đối tượng có thể có nhiều hình dạng khác nhau tùy thuộc vào ngữ cảnh.
B. Một lớp có thể kế thừa thuộc tính từ nhiều lớp cha.
C. Các đối tượng của các lớp khác nhau có thể phản hồi cùng một thông điệp (lời gọi phương thức) theo cách riêng của chúng.
D. Che giấu thông tin chi tiết về việc triển khai của một lớp.
15. Khi làm việc với mảng (array) trong lập trình, việc truy cập vào phần tử thứ k (với k là chỉ số bắt đầu từ 0) của một mảng có N phần tử thường có độ phức tạp thời gian là bao nhiêu?
A. O(N)
B. O(log N)
C. O(1)
D. O(N^2)
16. Khi nói về cấu trúc dữ liệu cây nhị phân tìm kiếm (Binary Search Tree), việc chèn một phần tử mới vào cây có thể dẫn đến trường hợp nào sau đây làm giảm hiệu quả của cây?
A. Cây trở nên cân bằng hoàn hảo.
B. Cây trở thành một danh sách liên kết.
C. Số lượng nút lá tăng lên.
D. Độ cao của cây giảm xuống.
17. Trong lập trình web, CSS (Cascading Style Sheets) được sử dụng để làm gì?
A. Xử lý logic phía máy chủ và tương tác cơ sở dữ liệu.
B. Định dạng và trình bày giao diện người dùng của trang web.
C. Xây dựng cấu trúc và nội dung của trang web.
D. Thực thi các tác vụ tương tác phức tạp trên trình duyệt.
18. Khi thuật toán tìm kiếm nhị phân (Binary Search) hoạt động trên một mảng đã được sắp xếp, độ phức tạp thời gian của thuật toán này là bao nhiêu?
A. O(n)
B. O(1)
C. O(n^2)
D. O(log n)
19. Khi một lớp con kế thừa từ một lớp cha trong lập trình hướng đối tượng, mối quan hệ giữa hai lớp này được gọi là gì?
A. Quan hệ tổng hợp (Composition).
B. Quan hệ liên kết (Association).
C. Quan hệ kế thừa (Inheritance).
D. Quan hệ bao gồm (Aggregation).
20. Khi nói về các cấu trúc dữ liệu, ngăn xếp (stack) hoạt động theo nguyên tắc nào?
A. FIFO (First-In, First-Out).
B. LIFO (Last-In, First-Out).
C. FILO (First-In, Last-Out).
D. LIFO (Last-In, First-Opened).
21. Trong lĩnh vực phát triển web, JavaScript (JS) thường được sử dụng cho mục đích gì?
A. Chỉ để định dạng giao diện người dùng.
B. Tạo ra các tương tác động và xử lý logic phía máy khách (client-side).
C. Quản lý và lưu trữ dữ liệu trên máy chủ.
D. Thiết kế cơ sở dữ liệu quan hệ.
22. Trong lập trình, một hàm (function) hay phương thức (method) có mục đích chính là gì?
A. Lưu trữ dữ liệu lâu dài trên ổ đĩa.
B. Đóng gói một khối mã có thể tái sử dụng để thực hiện một tác vụ cụ thể.
C. Định nghĩa cấu trúc của một đối tượng.
D. Quản lý kết nối mạng giữa các máy tính.
23. Ngôn ngữ SQL (Structured Query Language) được sử dụng chủ yếu cho mục đích gì trong lĩnh vực cơ sở dữ liệu?
A. Thiết kế giao diện người dùng cho ứng dụng web.
B. Quản lý và thao tác dữ liệu trong cơ sở dữ liệu quan hệ.
C. Lập trình phát triển các ứng dụng di động.
D. Phân tích dữ liệu lớn (Big Data) theo thời gian thực.
24. Ngôn ngữ lập trình Python nổi tiếng với đặc điểm nào sau đây, giúp nó trở nên phổ biến trong nhiều lĩnh vực?
A. Yêu cầu khai báo kiểu dữ liệu tường minh cho mọi biến.
B. Cú pháp phức tạp và nhiều quy tắc chặt chẽ.
C. Cú pháp dễ đọc, dễ học và cú pháp gọn gàng.
D. Chỉ phù hợp cho việc phát triển ứng dụng di động.
25. Trong các kiểu dữ liệu cơ bản của lập trình, kiểu dữ liệu boolean thường dùng để biểu diễn giá trị nào?
A. Một dãy các ký tự.
B. Một số nguyên.
C. Một giá trị đúng hoặc sai.
D. Một số thực có dấu phẩy động.