Trắc nghiệm Cấu trúc dữ liệu và giải thuật
Trắc nghiệm Cấu trúc dữ liệu và giải thuật chương 3
Lưu ý và Miễn trừ trách nhiệm:Các câu hỏi và đáp án trong bộ trắc nghiệm này được xây dựng với mục đích hỗ trợ ôn luyện kiến thức và tham khảo. Nội dung này không phản ánh tài liệu chính thức, đề thi chuẩn hay bài kiểm tra chứng chỉ từ bất kỳ tổ chức giáo dục hoặc cơ quan cấp chứng chỉ chuyên ngành nào. Admin không chịu trách nhiệm về độ chính xác tuyệt đối của thông tin cũng như mọi quyết định bạn đưa ra dựa trên kết quả của các bài trắc nghiệm.
Chào bạn, hãy cùng bắt đầu với bộ Trắc nghiệm Cấu trúc dữ liệu và giải thuật chương 3. Bạn sẽ được thử sức với nhiều câu hỏi chọn lọc, phù hợp cho việc ôn luyện. Hãy lựa chọn phần trắc nghiệm phù hợp bên dưới để bắt đầu hành trình học tập của bạn. Chúc bạn có trải nghiệm làm bài thú vị và đạt kết quả như mong đợi!
1. Thao tác nào sau đây không phải là thao tác cơ bản trên cây?
2. Trong cấu trúc dữ liệu ngăn xếp (stack), thao tác nào sau đây tuân theo nguyên tắc LIFO (Last-In, First-Out)?
3. Độ phức tạp thời gian tốt nhất của thuật toán Bubble Sort là bao nhiêu?
4. Cho một mảng các số nguyên chưa được sắp xếp. Bạn muốn tìm phần tử lớn thứ k trong mảng. Cấu trúc dữ liệu và thuật toán nào sau đây phù hợp nhất?
5. Cây nào sau đây đảm bảo thời gian tìm kiếm, chèn và xóa là O(log n) trong trường hợp xấu nhất?
6. Thuật toán sắp xếp nào sau đây hoạt động bằng cách chia mảng thành các mảng con, sắp xếp chúng, sau đó hợp nhất lại?
7. Cho đoạn code sau (giả sử đã khai báo và khởi tạo): `int arr[5] = {5, 2, 8, 1, 9};`
Sau khi thực hiện đoạn code sau: `for (int i = 0; i < 4; i++) { for (int j = 0; j arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }`
Mảng `arr` sẽ có giá trị như thế nào?
8. Ưu điểm chính của việc sử dụng danh sách liên kết so với mảng là gì?
9. Ưu điểm chính của việc sử dụng cây so với danh sách liên kết là gì?
10. Độ phức tạp thời gian trung bình để tìm kiếm một phần tử trong cây tìm kiếm nhị phân cân bằng là bao nhiêu?
11. Trong cấu trúc dữ liệu bảng băm (hash table), điều gì xảy ra khi hai khóa khác nhau băm (hash) đến cùng một vị trí?
12. Trong thuật toán sắp xếp nào sau đây, độ phức tạp thời gian trung bình là O(n log n)?
13. Phương pháp nào sau đây không phải là một phương pháp giải quyết xung đột trong bảng băm?
14. Độ 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?
15. Ứng dụng nào sau đây không phải là ứng dụng phổ biến của đồ thị?
16. Độ phức tạp thời gian trung bình để tìm kiếm một phần tử trong bảng băm (hash table) với phương pháp separate chaining là bao nhiêu, giả sử số lượng phần tử trong mỗi bucket là nhỏ?
17. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu hàng đợi (queue)?
18. Bạn cần triển khai một hệ thống undo/redo trong một trình soạn thảo văn bản. Cấu trúc dữ liệu nào sau đây phù hợp nhất?
19. Điều gì xảy ra nếu bạn cố gắng lấy một phần tử từ một ngăn xếp (stack) trống?
20. Trong thuật toán tìm kiếm theo chiều sâu (DFS), cấu trúc dữ liệu nào thường được sử dụng để theo dõi các nút đã thăm?
21. Bạn cần 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 (ví dụ: (a + b) * (c – d)). Cấu trúc dữ liệu nào sau đây phù hợp nhất?
22. Trong một hệ thống quản lý bộ nhớ, bạn cần theo dõi các khối bộ nhớ đã được cấp phát và giải phóng. Cấu trúc dữ liệu nào sau đây phù hợp nhất?
23. Trong thuật toán tìm kiếm nhị phân, điều kiện tiên quyết nào phải được đáp ứng?
24. Trong cấu trúc dữ liệu danh sách liên kết đơn, thao tác nào sau đây có độ phức tạp thời gian O(1)?
25. Trong thuật toán Quick Sort, việc chọn phần tử chốt (pivot) ảnh hưởng đến hiệu suất như thế nào?
26. Cho một cây tìm kiếm nhị phân (BST) với các nút có giá trị: 5, 3, 7, 2, 4, 6, 8. Nếu duyệt cây theo thứ tự inorder, thứ tự các nút sẽ là gì?
27. Thuật toán nào sau đây tìm cây khung nhỏ nhất (minimum spanning tree) cho một đồ thị liên thông có trọng số?
28. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán tìm kiếm theo chiều rộng (BFS)?
29. Thuật toán nào sau đây tìm đường đi ngắn nhất từ một đỉnh nguồn đến tất cả các đỉnh khác trong một đồ thị có trọng số không âm?
30. Cho một đồ thị có các cạnh sau: A-B, A-C, B-D, C-E. Nếu bắt đầu từ đỉnh A và thực hiện tìm kiếm theo chiều rộng (BFS), thứ tự các đỉnh được thăm sẽ là gì?
31. 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?
32. Trong cấu trúc dữ liệu hàng đợi (Queue), thao tác nào thêm một phần tử vào cuối hàng đợi?
33. Thuật toán nào sau đây được sử dụng để tìm cây khung nhỏ nhất (Minimum Spanning Tree) trong một đồ thị?
34. Độ phức tạp thời gian trung bình để tìm kiếm một phần tử trong cây tìm kiếm nhị phân (BST) là bao nhiêu?
35. Ứng dụng thực tế nào sau đây sử dụng cấu trúc dữ liệu cây?
36. Cấu trúc dữ liệu nào sau đây phù hợp nhất để kiểm tra xem một dấu ngoặc đơn trong một biểu thức toán học có cân bằng hay không?
37. Trong thuật toán sắp xếp nhanh (Quick Sort), kỹ thuật nào được sử dụng để phân vùng mảng?
38. Trong đồ thị, 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)?
39. Cấu trúc dữ liệu nào sau đây tuân theo nguyên tắc LIFO (Last In, First Out)?
40. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán tìm kiếm theo chiều rộng (BFS)?
41. Trong cây tìm kiếm nhị phân, thứ tự duyệt nào sau đây sẽ cho ra các nút theo thứ tự tăng dần?
42. Cấu trúc dữ liệu nào sau đây cho phép truy cập ngẫu nhiên các phần tử?
43. Cho một mảng đã được sắp xếp, thuật toán tìm kiếm nào hiệu quả nhất?
44. Trong cây, nút nào không có nút con được gọi là gì?
45. Cấu trúc dữ liệu nào sau đây được sử dụng để triển khai thuật toán LFU (Least Frequently Used) trong bộ nhớ cache?
46. Khi nào nên sử dụng thuật toán sắp xếp trộn (Merge Sort) thay vì sắp xếp nhanh (Quick Sort)?
47. Trong cây tìm kiếm nhị phân cân bằng (ví dụ: AVL tree, Red-Black tree), chiều cao của cây được giới hạn bởi yếu tố nào?
48. Độ phức tạp thời gian xấu nhất của thuật toán sắp xếp chèn (Insertion Sort) là bao nhiêu?
49. Cho một mảng các số nguyên chưa được sắp xếp, thuật toán nào sau đây có thể tìm phần tử lớn thứ k trong thời gian trung bình O(n)?
50. Trong cấu trúc dữ liệu đồ thị, thuật toán nào sau đây được sử dụng để tìm đường đi ngắn nhất từ một đỉnh nguồn đến tất cả các đỉnh khác?
51. Độ phức tạp thời gian để tìm kiếm một phần tử trong bảng băm (hash table) trong trường hợp tốt nhất là bao nhiêu?
52. Phương pháp nào sau đây là hiệu quả nhất để đảo ngược một chuỗi?
53. Độ phức tạp thời gian của thao tác tìm kiếm trong danh sách liên kết đơn (singly linked list) là bao nhiêu?
54. Cho một cây tìm kiếm nhị phân không cân bằng, thao tác nào sau đây có thể cải thiện hiệu suất tìm kiếm?
55. Độ phức tạp thời gian của thao tác chèn vào một heap là bao nhiêu?
56. Thuật toán nào sau đây có thể được sử dụng để phát hiện chu trình trong một đồ thị có hướng?
57. Trong biểu diễn đồ thị bằng danh sách kề (adjacency list), độ phức tạp không gian là bao nhiêu?
58. Ưu điểm chính của việc sử dụng danh sách liên kết so với mảng là gì?
59. Kiểu dữ liệu trừu tượng (ADT) nào sau đây mô tả một tập hợp các đối tượng mà việc thêm và xóa các đối tượng chỉ có thể được thực hiện ở một đầu?
60. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian tốt nhất là O(n log n)?
61. Trong cấu trúc dữ liệu cây tìm kiếm nhị phân, thao tác nào sau đây có thể được sử dụng để tìm phần tử nhỏ nhất trong cây?
62. Trong thuật toán tìm kiếm theo chiều sâu (depth-first search), cấu trúc dữ liệu nào sau đây được sử dụng để theo dõi các đỉnh đã được thăm?
63. Trong các thuật toán sắp xếp, thuật toán nào thường được sử dụng để sắp xếp các mảng lớn vì hiệu suất trung bình tốt và khả năng sắp xếp tại chỗ (in-place)?
64. Độ phức tạp thời gian của thao tác tìm kiếm trong bảng băm (hash table) trong trường hợp xấu nhất là bao nhiêu?
65. Trong cấu trúc dữ liệu đồ thị, sự khác biệt chính giữa đồ thị có hướng (directed graph) và đồ thị vô hướng (undirected graph) là gì?
66. Trong cấu trúc dữ liệu cây, độ cao của một nút được định nghĩa như thế nào?
67. Trong cấu trúc dữ liệu đồ thị (graph), cách biểu diễn nào sau đây sử dụng nhiều bộ nhớ nhất khi đồ thị có ít cạnh (sparse graph)?
68. Ưu điểm chính của việc sử dụng danh sách liên kết (linked list) so với mảng (array) là gì?
69. Trong thuật toán tìm kiếm theo chiều rộng (breadth-first search), cấu trúc dữ liệu nào sau đây được sử dụng để lưu trữ các đỉnh sẽ được duyệt?
70. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu ngăn xếp (stack)?
71. Cấu trúc dữ liệu nào sau đây thường được sử dụng để biểu diễn mối quan hệ cha-con trong một hệ thống phân cấp, ví dụ như cấu trúc thư mục trong hệ điều hành?
72. Cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc LIFO (Last-In, First-Out)?
73. Trong cây tìm kiếm nhị phân (binary search tree), thao tác nào sau đây cho phép duyệt các nút theo thứ tự tăng dần?
74. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian tốt nhất là O(n)?
75. Trong cấu trúc dữ liệu đồ thị, thuật toán Dijkstra được sử dụng để làm gì?
76. Trong cấu trúc dữ liệu hàng đợi (queue), thao tác nào sau đây thực hiện việc loại bỏ một phần tử khỏi hàng đợi?
77. Trong cấu trúc dữ liệu đồ thị, thuật toán nào sau đây được sử dụng để tìm cây khung nhỏ nhất (minimum spanning tree)?
78. Độ phức tạp thời gian để chèn một phần tử vào đầu danh sách liên kết đơn (singly linked list) là bao nhiêu?
79. Trong cấu trúc dữ liệu đồ thị, một chu trình Euler là gì?
80. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu hàng đợi (queue)?
81. Trong cấu trúc dữ liệu cây, nút nào không có nút con được gọi là gì?
82. Trong các thuật toán sắp xếp, thuật toán nào có tính ổn định (stable), nghĩa là các phần tử bằng nhau giữ nguyên thứ tự ban đầu sau khi sắp xếp?
83. Khi nào nên sử dụng bảng băm (hash table) thay vì cây tìm kiếm nhị phân (binary search tree)?
84. Khi nào nên sử dụng thuật toán Merge Sort thay vì Quick Sort?
85. Khi nào nên sử dụng thuật toán tìm kiếm tuyến tính (linear search) thay vì tìm kiếm nhị phân (binary search)?
86. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán undo/redo trong các ứng dụng chỉnh sửa văn bản?
87. Độ phức tạp thời gian tốt nhất để tìm kiếm một phần tử trong một cây tìm kiếm nhị phân cân bằng (balanced binary search tree) là bao nhiêu?
88. Trong thuật toán tìm kiếm nhị phân (binary search), điều kiện tiên quyết nào sau đây phải được đáp ứng?
89. 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)?
90. Ưu điểm của việc sử dụng danh sách liên kết đôi (doubly linked list) so với danh sách liên kết đơn (singly linked list) là gì?
91. Trong các cấu trúc dữ liệu sau, cấu trúc nào cho phép truy cập ngẫu nhiên đến các phần tử?
92. Để đảo ngược một danh sách liên kết đơn (singly linked list) tại chỗ (in-place), bạn cần sử dụng bao nhiêu bộ nhớ phụ trợ (không tính bộ nhớ của chính danh sách)?
93. Độ phức tạp thời gian để tìm kiếm một phần tử trong một danh sách liên kết đơn (singly linked list) chưa được sắp xếp là bao nhiêu trong trường hợp xấu nhất?
94. Ưu điểm của danh sách liên kết đôi (doubly linked list) so với danh sách liên kết đơn (singly linked list) là gì?
95. Cho một danh sách liên kết đã được sắp xếp, thuật toán nào hiệu quả nhất để tìm kiếm một phần tử?
96. Trong cài đặt hàng đợi bằng danh sách liên kết, độ phức tạp thời gian để thêm một phần tử vào cuối hàng đợi (enqueue) là bao nhiêu?
97. Khi nào nên sử dụng danh sách liên kết vòng (circular linked list)?
98. Thuật toán nào sau đây có thể được sử dụng để kiểm tra xem một chuỗi có phải là palindrome (đọc xuôi ngược như nhau) hay không?
99. Trong các cấu trúc dữ liệu sau, cấu trúc nào thường được sử dụng để cài đặt hàng đợi (queue)?
100. Ưu điểm chính của việc sử dụng danh sách liên kết (linked list) so với mảng (array) là gì?
101. Trong một ứng dụng quản lý công việc, bạn cần ưu tiên thực hiện các công việc quan trọng trước. Cấu trúc dữ liệu nào phù hợp nhất để cài đặt hệ thống này?
102. Thao tác nào sau đây có thể gây ra lỗi ‘stack overflow’?
103. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu hàng đợi (queue)?
104. Thao tác nào sau đây không thể thực hiện trực tiếp (trong O(1)) trên một ngăn xếp (stack) được cài đặt bằng mảng?
105. Ứng dụng nào sau đây không phù hợp với cấu trúc dữ liệu ngăn xếp (stack)?
106. Để chèn một nút vào giữa một danh sách liên kết đơn (singly linked list), bạn cần thay đổi bao nhiêu con trỏ?
107. Trong cài đặt ngăn xếp (stack) bằng mảng, khi nào cần thay đổi kích thước mảng?
108. Khi nào nên sử dụng danh sách liên kết thay vì mảng?
109. Giả sử bạn có một ngăn xếp (stack) chứa các số nguyên. Bạn muốn tìm giá trị lớn nhất trong ngăn xếp. Bạn có thể thực hiện điều này bằng cách nào?
110. Đâu là nhược điểm của việc sử dụng mảng (array) để cài đặt hàng đợi (queue)?
111. Cho một danh sách liên kết đơn (singly linked list) đã được sắp xếp tăng dần. Bạn muốn chèn một phần tử mới vào danh sách sao cho danh sách vẫn được sắp xếp. Độ phức tạp thời gian tốt nhất để thực hiện thao tác này là bao nhiêu?
112. Trong cài đặt hàng đợi bằng mảng vòng (circular array), làm thế nào để phân biệt giữa hàng đợi đầy và hàng đợi rỗng?
113. Trong một danh sách liên kết đôi (doubly linked list), mỗi nút chứa bao nhiêu con trỏ?
114. Để xóa một nút khỏi danh sách liên kết đôi (doubly linked list), bạn cần cập nhật bao nhiêu con trỏ?
115. Trong các thao tác sau trên hàng đợi (queue), thao tác nào có độ phức tạp thời gian O(1)?
116. Cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc LIFO (Last-In, First-Out)?
117. Cho một danh sách liên kết đơn (singly linked list), làm thế nào để kiểm tra xem danh sách có chứa vòng lặp hay không?
118. Thao tác nào sau đây không được hỗ trợ trực tiếp bởi cấu trúc dữ liệu ngăn xếp (stack)?
119. Độ phức tạp thời gian để chèn một phần tử vào đầu một danh sách liên kết đơn (singly linked list) là bao nhiêu?
120. Thuật toán nào sau đây sử dụng cấu trúc dữ liệu ngăn xếp (stack) một cách hiệu quả?
121. Kiểu dữ liệu trừu tượng (ADT) nào sau đây tuân theo nguyên tắc FIFO (First In, First Out)?
122. Ưu điểm chính của việc sử dụng danh sách liên kết (linked list) so với mảng (array) là gì?
123. Độ phức tạp không gian của thuật toán sắp xếp trộn (merge sort) là bao nhiêu?
124. Sự khác biệt chính giữa cấu trúc dữ liệu ‘mảng’ và ‘danh sách liên kết’ là gì?
125. Khi nào nên sử dụng thuật toán sắp xếp đếm (counting sort)?
126. Khi nào nên sử dụng thuật toán sắp xếp chèn (insertion sort) thay vì thuật toán sắp xếp nhanh (quick sort)?
127. Cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc LIFO (Last In, First Out)?
128. Trong cây nhị phân cân bằng (ví dụ: AVL tree), thao tác nào sau đây có thể được yêu cầu để duy trì tính cân bằng sau khi chèn hoặc xóa một nút?
129. Thuật toán tìm kiếm nào sau đây có thể được sử dụng trên dữ liệu chưa được sắp xếp?
130. Để duyệt một cây theo thứ tự rộng (breadth-first), cấu trúc dữ liệu nào sau đây thường được sử dụng?
131. Trong ngữ cảnh của cấu trúc dữ liệu, ‘độ phức tạp không gian’ đề cập đến điều gì?
132. Trong một cây tìm kiếm nhị phân (binary search tree), thao tác nào sau đây luôn duy trì tính chất của cây?
133. Trong cây nhị phân tìm kiếm, thao tác nào sau đây có độ phức tạp trung bình là O(log n), với n là số lượng nút trong cây?
134. Trong một bảng băm (hash table), điều gì xảy ra khi hai khóa khác nhau được băm (hashed) vào cùng một vị trí?
135. Cấu trúc dữ liệu nào sau đây phù hợp nhất để triển khai một bộ nhớ cache?
136. Khi nào nên sử dụng danh sách liên kết vòng (circular linked list)?
137. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình tốt nhất khi dữ liệu đã gần như được sắp xếp?
138. Trong thuật toán Kruskal tìm cây khung nhỏ nhất (minimum spanning tree), tiêu chí nào được sử dụng để chọn cạnh tiếp theo để thêm vào cây?
139. Trong thuật toán sắp xếp trộn (merge sort), quá trình ‘merge’ có vai trò gì?
140. Cấu trúc dữ liệu nào sau đây cho phép truy cập phần tử đầu tiên và phần tử cuối cùng trong thời gian O(1)?
141. Thuật toán sắp xếp nào sau đây có hiệu suất tốt nhất trong trường hợp dữ liệu đã được sắp xếp theo thứ tự ngược lại?
142. Cấu trúc dữ liệu nào sau đây phù hợp nhất để kiểm tra xem một chuỗi có phải là palindrome hay không?
143. Để kiểm tra xem một đồ thị có chu trình hay không, thuật toán nào sau đây thường được sử dụng?
144. Cấu trúc dữ liệu nào sau đây phù hợp nhất để triển khai một hàng đợi ưu tiên (priority queue)?
145. 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^2)?
146. Trong thuật toán Prim tìm cây khung nhỏ nhất (minimum spanning tree), đỉnh nào được chọn để thêm vào cây ở mỗi bước?
147. Độ phức tạp thời gian tốt nhất của thuật toán tìm kiếm nhị phân (binary search) là bao nhiêu?
148. Cấu trúc dữ liệu nào sau đây phù hợp nhất để biểu diễn mối quan hệ ‘cha-con’ trong một tổ chức?
149. Trong thuật toán Dijkstra tìm đường đi ngắn nhất trên đồ thị có trọng số không âm, cấu trúc dữ liệu nào thường được sử dụng để lưu trữ khoảng cách từ đỉnh nguồn đến các đỉnh khác?
150. Trong một đồ thị có hướng (directed graph), thuật toán nào sau đây được sử dụng để tìm thứ tự tô pô (topological order)?
