1. Trong cây nhị phân tìm kiếm (binary search tree), thao tác nào sau đây có độ phức tạp thời gian trung bình là O(log n)?
A. Duyệt cây theo thứ tự trước (preorder traversal)
B. Duyệt cây theo thứ tự sau (postorder traversal)
C. Tìm kiếm một phần tử
D. Duyệt cây theo thứ tự giữa (inorder traversal)
2. Thuật toán nào sau đây được sử dụng để tìm tất cả các thành phần liên thông (connected components) trong một đồ thị?
A. Dijkstra`s Algorithm
B. Prim`s Algorithm
C. Depth-First Search (DFS)
D. Binary Search
3. Thuật toán nào sau đây được sử dụng để tìm cây khung nhỏ nhất (minimum spanning tree) của một đồ thị?
A. Dijkstra`s Algorithm
B. Prim`s Algorithm
C. Depth-First Search (DFS)
D. Breadth-First Search (BFS)
4. Trong một đồ thị vô hướng, số cạnh tối đa có thể có trong một đồ thị có n đỉnh là bao nhiêu?
A. n - 1
B. n
C. n(n - 1) / 2
D. n^2
5. Độ phức tạp thời gian của thuật toán Insertion Sort trong trường hợp tốt nhất là bao nhiêu?
A. O(1)
B. O(log n)
C. O(n)
D. O(n^2)
6. Trong lập trình động (dynamic programming), kỹ thuật nào sau đây được sử dụng để tránh tính toán lại các bài toán con đã được giải?
A. Recursion
B. Memoization
C. Greedy Approach
D. Divide and Conquer
7. Độ phức tạp thời gian của thuật toán Heap Sort là bao nhiêu?
A. O(n)
B. O(n^2)
C. O(n log n)
D. O(log n)
8. Cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc LIFO (Last In, First Out)?
A. Queue
B. Linked List
C. Stack
D. Tree
9. Độ phức tạp thời gian của thuật toán Bubble Sort trong trường hợp xấu nhất là bao nhiêu?
A. O(n)
B. O(log n)
C. O(n log n)
D. O(n^2)
10. Thuật toán nào sau đây là một thuật toán tham lam (greedy algorithm)?
A. Dijkstra`s algorithm
B. Breadth-First Search (BFS)
C. Depth-First Search (DFS)
D. Binary Search
11. Trong cây nhị phân tìm kiếm (binary search tree), thao tác nào sau đây luôn có độ phức tạp thời gian là O(h), với h là chiều cao của cây?
A. Duyệt cây theo thứ tự trước (preorder traversal)
B. Duyệt cây theo thứ tự sau (postorder traversal)
C. Tìm kiếm một phần tử
D. Duyệt cây theo thứ tự giữa (inorder traversal)
12. Trong cây nhị phân hoàn chỉnh (complete binary tree), chiều cao tối thiểu của cây với n nút là bao nhiêu?
A. log₂n
B. n
C. n/2
D. log₂(n+1) - 1
13. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán duyệt đồ thị theo chiều rộng (Breadth-First Search)?
A. Stack
B. Queue
C. Linked List
D. Tree
14. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian ổn định (stable sorting algorithm)?
A. Quick Sort
B. Heap Sort
C. Selection Sort
D. Insertion Sort
15. Độ phức tạp không gian của thuật toán Merge Sort là bao nhiêu?
A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)
16. Cấu trúc dữ liệu nào sau đây cho phép chèn và xóa các phần tử ở cả hai đầu?
A. Stack
B. Queue
C. Deque (Double-Ended Queue)
D. Linked List
17. Cấu trúc dữ liệu nào sau đây sử dụng hai con trỏ (next và prev) để liên kết các phần tử?
A. Singly Linked List
B. Doubly Linked List
C. Circular Linked List
D. Array
18. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai bảng băm (hash table)?
A. Linked List
B. Array
C. Tree
D. Graph
19. Thuật toán nào sau đây được sử dụng để tìm kiếm một phần tử trong một mảng đã được sắp xếp?
A. Linear Search
B. Binary Search
C. Depth-First Search (DFS)
D. Breadth-First Search (BFS)
20. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình là O(n log n)?
A. Bubble Sort
B. Insertion Sort
C. Selection Sort
D. Merge Sort
21. Trong cây, thuật ngữ nào sau đây dùng để chỉ một nút không có nút con?
A. Root
B. Parent
C. Child
D. Leaf
22. Cấu trúc dữ liệu nào sau đây cho phép truy cập ngẫu nhiên (random access) đến các phần tử?
A. Linked List
B. Queue
C. Stack
D. Array
23. Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (linear search) trong trường hợp xấu nhất là bao nhiêu?
A. O(1)
B. O(log n)
C. O(n)
D. O(n^2)
24. Trong đồ thị, thuật toán nào sau đây được sử dụng để tìm đường đi ngắn nhất giữa hai đỉnh?
A. Depth-First Search (DFS)
B. Breadth-First Search (BFS)
C. Dijkstra`s Algorithm
D. Prim`s Algorithm
25. Thuật toán sắp xếp nào sau đây thường được sử dụng để sắp xếp các mảng lớn vì tính hiệu quả của nó?
A. Bubble Sort
B. Insertion Sort
C. Quick Sort
D. Selection Sort
26. Cấu trúc dữ liệu nào sau đây phù hợp nhất để kiểm tra xem một biểu thức toán học có cân bằng dấu ngoặc hay không?
A. Queue
B. Linked List
C. Stack
D. Tree
27. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai hàng đợi ưu tiên (priority queue)?
A. Linked List
B. Stack
C. Heap
D. Binary Search Tree
28. Độ phức tạp thời gian của thuật toán tìm kiếm nhị phân (binary search) trong trường hợp tốt nhất là bao nhiêu?
A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)
29. Kỹ thuật lập trình nào sau đây sử dụng hàm tự gọi lại chính nó?
A. Iteration
B. Recursion
C. Dynamic Programming
D. Greedy Algorithm
30. Cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc FIFO (First In, First Out)?
A. Stack
B. Queue
C. Linked List
D. Tree