Chuyển đến nội dung

Trắc nghiệm Cấu trúc dữ liệu và giải thuật online có đáp án

Trắc Nghiệm Kỹ Thuật & Công Nghệ

Trắc nghiệm Cấu trúc dữ liệu và giải thuật online có đáp án

Ngày cập nhật: Tháng 2 6, 2026

Lưu ý và Miễn trừ trách nhiệm:Toàn bộ nội dung câu hỏi, đáp án và thông tin được cung cấp trên website này được xây dựng nhằm mục đích tham khảo, hỗ trợ ôn tập và củng cố kiến thức. Chúng tôi không cam kết về tính chính xác tuyệt đối, tính cập nhật hay độ tin cậy hoàn toàn của các dữ liệu này. Nội dung tại đây KHÔNG PHẢI LÀ ĐỀ THI CHÍNH THỨC của bất kỳ tổ chức giáo dục, trường đại học hay cơ quan cấp chứng chỉ nào. Người sử dụng tự chịu trách nhiệm khi sử dụng các thông tin này vào mục đích học tập, nghiên cứu hoặc áp dụng vào thực tiễn. Chúng tôi không chịu trách nhiệm pháp lý đối với bất kỳ sai sót, thiệt hại hoặc hậu quả nào phát sinh từ việc sử dụng thông tin trên website này.

Hãy cùng khám phá bộ Trắc nghiệm Cấu trúc dữ liệu và giải thuật online có đáp án. Nội dung câu hỏi được xây dựng nhằm hỗ trợ bạn ôn tập và ghi nhớ hiệu quả. Chỉ cần bấm vào phần trắc nghiệm bạn quan tâm để làm bài ngay. Hy vọng bạn có trải nghiệm học tập hiệu quả và thú vị

★★★★★
★★★★★
4.5/5 (205 đánh giá)

1. Độ phức tạp thời gian của thao tác tìm kiếm trong một cây tìm kiếm nhị phân cân bằng (ví dụ: cây AVL, cây đỏ-đen) là bao nhiêu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)

2. Thuật toán tìm kiếm nào sau đây yêu cầu dữ liệu phải được sắp xếp trước?

A. Linear Search (Tìm kiếm tuyến tính)
B. Depth-First Search (Tìm kiếm theo chiều sâu)
C. Breadth-First Search (Tìm kiếm theo chiều rộng)
D. Binary Search (Tìm kiếm nhị phân)

3. Độ phức tạp thời gian trung bình của thuật toán Quick Sort là O(n log n), nhưng trong trường hợp xấu nhất, độ phức tạp là bao nhiêu?

A. O(log n)
B. O(n)
C. O(n log n)
D. O(n^2)

4. Trong cấu trúc dữ liệu đồ thị (graph), điều gì mô tả mối quan hệ ‘kề nhau’ giữa hai đỉnh?

A. Hai đỉnh có cùng bậc.
B. Hai đỉnh được kết nối trực tiếp bằng một cạnh.
C. Hai đỉnh nằm trên cùng một đường đi.
D. Hai đỉnh có cùng màu (trong bài toán tô màu đồ thị).

5. Trong một cây quyết định (decision tree), điều gì đại diện cho một nút lá?

A. Một thuộc tính được sử dụng để phân chia dữ liệu.
B. Một quyết định hoặc kết quả cuối cùng.
C. Một đường đi từ gốc đến nút.
D. Một tập hợp các thuộc tính.

6. Ư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ì?

A. Truy cập ngẫu nhiên nhanh hơn.
B. Sử dụng bộ nhớ hiệu quả hơn khi kích thước dữ liệu đã biết trước.
C. Dễ dàng chèn và xóa các phần tử.
D. Tìm kiếm các phần tử nhanh hơn.

7. Thuật toán Dijkstra được sử dụng để giải quyết vấn đề gì?

A. Tìm kiếm một phần tử trong một mảng.
B. Sắp xếp một danh sách các số.
C. Tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh khác trong một đồ thị có trọng số không âm.
D. Tìm kiếm đường đi dài nhất trong đồ thị.

8. 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?

A. Graph (Đồ thị)
B. Linked List (Danh sách liên kết)
C. Tree (Cây)
D. Queue (Hàng đợi)

9. Cấu trúc dữ liệu nào sau đây phù hợp nhất để triển khai thuật toán Breadth-First Search (BFS)?

A. Stack (Ngăn xếp)
B. Linked List (Danh sách liên kết)
C. Queue (Hàng đợi)
D. Tree (Cây)

10. Phương pháp lập trình động (dynamic programming) thường được sử dụng để giải quyết các bài toán nào?

A. Các bài toán có thể chia nhỏ thành các bài toán con độc lập.
B. Các bài toán có cấu trúc chồng chéo và tính chất con tối ưu.
C. Các bài toán yêu cầu tìm kiếm tất cả các giải pháp có thể.
D. Các bài toán yêu cầu sắp xếp dữ liệu.

11. Độ 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)

12. Thuật toán nào sau đây là một ví dụ của thuật toán chia để trị (divide and conquer)?

A. Insertion Sort (Sắp xếp chèn)
B. Selection Sort (Sắp xếp chọn)
C. Bubble Sort (Sắp xếp nổi bọt)
D. Quick Sort (Sắp xếp nhanh)

13. Điều gì là quan trọng nhất khi chọn một cấu trúc dữ liệu cho một ứng dụng cụ thể?

A. Độ phức tạp thời gian và không gian của các thao tác.
B. Sự quen thuộc của lập trình viên với cấu trúc dữ liệu đó.
C. Tính phổ biến của cấu trúc dữ liệu đó.
D. Kích thước của dữ liệu đầu vào.

14. Cấu trúc dữ liệu nào sau đây là một ví dụ của cấu trúc dữ liệu tuyến tính (linear data structure)?

A. Graph (Đồ thị)
B. Tree (Cây)
C. Array (Mảng)
D. Heap (Đống)

15. Phương pháp nào sau đây được sử dụng để giải quyết xung đột (collision) trong bảng băm (hash table)?

A. Sắp xếp nổi bọt (Bubble Sort)
B. Tìm kiếm nhị phân (Binary Search)
C. Xâu chuỗi (Chaining) và Địa chỉ mở (Open Addressing)
D. Duyệt cây (Tree Traversal)

16. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai undo/redo functionality trong các ứng dụng?

A. Queue (Hàng đợi)
B. Linked List (Danh sách liên kết)
C. Stack (Ngăn xếp)
D. Tree (Cây)

17. 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. Stack (Ngăn xếp)
B. Linked List (Danh sách liên kết)
C. Heap (Đống)
D. Queue (Hàng đợi)

18. Độ phức tạp thời gian tốt nhất của thuật toán Insertion Sort là bao nhiêu?

A. O(n^2)
B. O(log n)
C. O(n log n)
D. O(n)

19. Khái niệm ‘backtracking’ thường được sử dụng trong thuật toán nào?

A. Sắp xếp mảng
B. Tìm kiếm đường đi trong đồ thị
C. Giải các bài toán tối ưu
D. Tất cả các đáp án trên

20. Trong một bảng băm, ‘hàm băm’ (hash function) có vai trò gì?

A. Sắp xếp các phần tử trong bảng.
B. Tìm kiếm một phần tử cụ thể.
C. Chuyển đổi khóa (key) thành một chỉ số (index) trong bảng.
D. Giải quyết xung đột (collision).

21. 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 (parentheses) có được cân bằng đúng cách hay không?

A. Queue (Hàng đợi)
B. Linked List (Danh sách liên kết)
C. Stack (Ngăn xếp)
D. Tree (Cây)

22. Thuật toán nào sau đây có độ phức tạp thời gian tốt nhất là O(1)?

A. Tìm kiếm tuyến tính trong mảng không sắp xếp.
B. Truy cập một phần tử trong mảng bằng chỉ số của nó.
C. Sắp xếp một mảng sử dụng Bubble Sort.
D. Tìm kiếm nhị phân trong mảng đã sắp xếp.

23. Điều gì xảy ra khi bạn cố gắng lấy một phần tử từ một stack rỗng?

A. Trả về giá trị null.
B. Trả về phần tử cuối cùng đã được thêm vào.
C. Gây ra lỗi underflow.
D. Tạo một stack mới.

24. Cấu trúc dữ liệu nào sau đây cho phép truy cập ngẫu nhiên đến các phần tử?

A. Linked List (Danh sách liên kết)
B. Queue (Hàng đợi)
C. Array (Mảng)
D. Stack (Ngăn xếp)

25. Thuật toán Kruskal được sử dụng để giải quyết vấn đề gì?

A. Tìm đường đi ngắn nhất trong đồ thị.
B. Tìm cây khung nhỏ nhất (minimum spanning tree) của một đồ thị liên thông có trọng số.
C. Sắp xếp một danh sách các số.
D. Tìm kiếm một phần tử trong một mảng.

26. 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?

A. Cây tìm kiếm nhị phân không cân bằng.
B. Cây tìm kiếm nhị phân hoàn chỉnh.
C. Cây AVL.
D. Cây phân đoạn.

27. 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 (Sắp xếp nổi bọt)
B. Insertion Sort (Sắp xếp chèn)
C. Selection Sort (Sắp xếp chọn)
D. Merge Sort (Sắp xếp trộn)

28. Trong lý thuyết đồ thị, chu trình Euler là gì?

A. Một đường đi đi qua tất cả các đỉnh của đồ thị một lần.
B. Một đường đi đi qua tất cả các cạnh của đồ thị một lần.
C. Một đường đi ngắn nhất giữa hai đỉnh.
D. Một đường đi dài nhất trong đồ thị.

29. 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 (Hàng đợi)
B. Linked List (Danh sách liên kết)
C. Stack (Ngăn xếp)
D. Tree (Cây)

30. Trong một cây tìm kiếm nhị phân (BST), điều kiện nào sau đây luôn đúng?

A. Giá trị của nút gốc lớn hơn tất cả các giá trị trong cây con bên trái và nhỏ hơn tất cả các giá trị trong cây con bên phải.
B. Giá trị của nút gốc nhỏ hơn tất cả các giá trị trong cây con bên trái và lớn hơn tất cả các giá trị trong cây con bên phải.
C. Tất cả các nút trong cây đều có giá trị bằng nhau.
D. Cây luôn cân bằng.

31. Khi nào nên sử dụng cấu trúc dữ liệu queue (hàng đợi) thay vì stack (ngăn xếp)?

A. Khi cần truy cập phần tử cuối cùng được thêm vào trước
B. Khi cần đảm bảo các phần tử được xử lý theo thứ tự đến trước, phục vụ trước (FIFO)
C. Khi cần thực hiện các thao tác chèn và xóa ở cả hai đầu
D. Khi cần biểu diễn mối quan hệ phân cấp

32. Cấu trúc dữ liệu nào sau đây thích hợp nhất để biểu diễn mối quan hệ phân cấp, chẳng hạn như cấu trúc thư mục trong hệ điều hành?

A. Queue
B. Stack
C. Linked List
D. Tree

33. 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)?

A. Depth-First Search (DFS)
B. Breadth-First Search (BFS)
C. Kruskal’s Algorithm
D. Linear Search

34. Độ phức tạp thời gian tốt nhất để tìm kiếm một phần tử trong một mảng đã được sắp xếp là:

A. O(n)
B. O(log n)
C. O(1)
D. O(n log n)

35. Phương pháp tiếp cận ‘chia để trị’ (divide and conquer) thường được sử dụng trong thuật toán nào sau đây?

A. Bubble Sort
B. Linear Search
C. Merge Sort
D. Insertion Sort

36. Heap (cấu trúc dữ liệu heap) thường được sử dụng để triển khai cấu trúc dữ liệu nào?

A. Queue (Hàng đợi)
B. Stack (Ngăn xếp)
C. Priority Queue (Hàng đợi ưu tiên)
D. Linked List (Danh sách liên kết)

37. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai chức năng ‘undo’ trong các ứng dụng?

A. Queue
B. Stack
C. Linked List
D. Tree

38. Thuật toán sắp xếp nào sau đây hoạt động bằng cách liên tục tìm phần tử nhỏ nhất từ phần chưa được sắp xếp và đặt nó vào đầu phần đã được sắp xếp?

A. Bubble Sort
B. Insertion Sort
C. Selection Sort
D. Merge Sort

39. Trong cấu trúc dữ liệu đồ thị, ma trận kề (adjacency matrix) phù hợp nhất cho loại đồ thị nào?

A. Đồ thị thưa (sparse graph)
B. Đồ thị dày (dense graph)
C. Đồ thị có trọng số âm
D. Đồ thị không có hướng

40. Phương pháp tiếp cận ‘tham lam’ (greedy approach) thường được sử dụng trong bài toán nào sau đây?

A. Tìm đường đi ngắn nhất trong đồ thị có trọng số âm
B. Tìm cây khung nhỏ nhất (minimum spanning tree)
C. Bài toán người du lịch (traveling salesman problem)
D. Giải phương trình bậc hai

41. Hash table (bảng băm) giải quyết vấn đề xung đột (collision) bằng cách nào?

A. Luôn tăng kích thước bảng băm
B. Sử dụng hàm băm hoàn hảo
C. Sử dụng các kỹ thuật như separate chaining hoặc open addressing
D. Loại bỏ các phần tử trùng lặp

42. Giải thuật sắp xếp nào sau đây là một giải thuật không so sánh (non-comparison sort)?

A. Merge Sort
B. Quick Sort
C. Counting Sort
D. Insertion Sort

43. Khi nào nên sử dụng thuật toán sắp xếp chèn (insertion sort) thay vì các thuật toán sắp xếp phức tạp hơn như merge sort hoặc quicksort?

A. Khi cần sắp xếp một lượng lớn dữ liệu
B. Khi dữ liệu đã gần như được sắp xếp
C. Khi cần đảm bảo độ phức tạp thời gian là O(n log n)
D. Khi cần sử dụng ít bộ nhớ nhất

44. Ư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ì?

A. Truy cập ngẫu nhiên nhanh hơn
B. Sử dụng bộ nhớ hiệu quả hơn khi kích thước không xác định trước
C. Tìm kiếm phần tử nhanh hơn
D. Sắp xếp phần tử nhanh hơn

45. 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 (Hàng đợi)
B. Stack (Ngăn xếp)
C. Linked List (Danh sách liên kết)
D. Binary Tree (Cây nhị phân)

46. Cấu trúc dữ liệu nào sau đây cho phép chèn và xóa ở cả hai đầu?

A. Stack
B. Queue
C. Deque (Double-ended queue)
D. Linked List

47. Trong thuật toán Prim, cấu trúc dữ liệu nào sau đây thường được sử dụng để chọn cạnh có trọng số nhỏ nhất để thêm vào cây khung?

A. Stack
B. Queue
C. Priority Queue (Heap)
D. Linked List

48. Cây tìm kiếm nhị phân tự cân bằng (self-balancing binary search tree) giải quyết vấn đề gì của cây tìm kiếm nhị phân thông thường?

A. Vấn đề về bộ nhớ
B. Vấn đề về độ phức tạp thời gian trong trường hợp xấu nhất
C. Vấn đề về việc duyệt cây
D. Vấn đề về việc chèn các phần tử trùng lặp

49. 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)?

A. Singly Linked List (Danh sách liên kết đơn)
B. Doubly Linked List (Danh sách liên kết đôi)
C. Stack
D. Queue

50. 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?

A. Binary Search Tree (Cây tìm kiếm nhị phân)
B. AVL Tree
C. Complete Binary Tree (Cây nhị phân hoàn chỉnh)
D. Binary Tree (Cây nhị phân)

51. Ưu điểm của việc sử dụng đồ thị (graph) thay vì cây (tree) để mô hình hóa dữ liệu là gì?

A. Đồ thị luôn có thứ tự phân cấp rõ ràng
B. Đồ thị có thể biểu diễn các mối quan hệ phức tạp hơn, không nhất thiết phải có thứ tự phân cấp
C. Đồ thị dễ dàng duyệt hơn cây
D. Đồ thị sử dụng ít bộ nhớ hơn cây

52. Độ 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à:

A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)

53. Cho một mảng đã sắp xếp, thuật toán nào có thể xác định nhanh nhất số lần một giá trị cụ thể xuất hiện?

A. Tìm kiếm tuyến tính
B. Tìm kiếm nhị phân
C. Sắp xếp trộn
D. Sắp xếp chèn

54. 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?

A. Breadth-First Search (BFS)
B. Depth-First Search (DFS)
C. Dijkstra’s Algorithm
D. Prim’s Algorithm

55. Trong cây tìm kiếm nhị phân (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 chiều rộng (breadth-first traversal)

56. Thuật toán sắp xếp nào sau đây có độ phức tạp trung bình là O(n log n)?

A. Bubble Sort (Sắp xếp nổi bọt)
B. Insertion Sort (Sắp xếp chèn)
C. Selection Sort (Sắp xếp chọn)
D. Merge Sort (Sắp xếp trộn)

57. Trong thuật toán Dijkstra, 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?

A. Stack
B. Queue
C. Priority Queue
D. Linked List

58. Giải thuật nào sau đây thường được sử dụng để tìm đường đi ngắn nhất giữa hai đỉnh trong một đồ thị có trọng số không âm?

A. Breadth-First Search (BFS)
B. Depth-First Search (DFS)
C. Dijkstra’s Algorithm
D. Prim’s Algorithm

59. Thuật toán nào sau đây được sử dụng để tìm kiếm theo chiều rộng trên đồ thị?

A. Depth-First Search (DFS)
B. Breadth-First Search (BFS)
C. Binary Search
D. Linear Search

60. Độ phức tạp thời gian của thao tác chèn vào một hash table (bảng băm) trong trường hợp trung bình là:

A. O(n)
B. O(log n)
C. O(1)
D. O(n log n)

61. Độ phức tạp thời gian để tìm kiếm một phần tử trong danh sách liên kết đơn chưa được sắp xếp là bao nhiêu?

A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)

62. 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ệ phân cấp (hierarchical relationship)?

A. Array (Mảng)
B. Linked List (Danh sách liên kết)
C. Stack (Ngăn xếp)
D. Tree (Cây)

63. Thuật toán nào sau đây được sử dụng để tìm kiếm một mẫu (pattern) trong một chuỗi (string)?

A. Binary Search (Tìm kiếm nhị phân)
B. Linear Search (Tìm kiếm tuyến tính)
C. Knuth-Morris-Pratt (KMP) Algorithm
D. Dijkstra’s Algorithm

64. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai undo/redo functionality trong các ứng dụng?

A. Queue (Hàng đợi)
B. Linked List (Danh sách liên kết)
C. Stack (Ngăn xếp)
D. Tree (Cây)

65. 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 (Sắp xếp nổi bọt)
B. Insertion Sort (Sắp xếp chèn)
C. Selection Sort (Sắp xếp chọn)
D. Merge Sort (Sắp xếp trộn)

66. 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 (Danh sách liên kết)
B. Stack (Ngăn xếp)
C. Heap (Đống)
D. Binary Search Tree (Cây nhị phân tìm kiếm)

67. Độ phức tạp thời gian của thao tác 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?

A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)

68. 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 (Danh sách liên kết)
B. Queue (Hàng đợi)
C. Array (Mảng)
D. Stack (Ngăn xếp)

69. Độ phức tạp thời gian để tìm phần tử lớn thứ k trong một mảng chưa được sắp xếp là bao nhiêu nếu sử dụng thuật toán QuickSelect?

A. O(n^2)
B. O(n log n)
C. O(n)
D. O(log n)

70. Thuật toán nào sau đây thường được sử dụng để tìm đường đi ngắn nhất giữa hai đỉnh trong một đồ thị có trọng số không âm?

A. Breadth-First Search (BFS)
B. Depth-First Search (DFS)
C. Dijkstra’s Algorithm
D. Prim’s Algorithm

71. Trong cấu trúc dữ liệu đồ thị, một chu trình (cycle) là gì?

A. Một đường đi không chứa đỉnh lặp lại
B. Một đường đi bắt đầu và kết thúc ở cùng một đỉnh
C. Một đường đi chứa tất cả các đỉnh của đồ thị
D. Một đường đi ngắn nhất giữa hai đỉnh

72. Thuật toán nào sau đây được sử dụng để tìm cây bao trùm tối thiểu (minimum spanning tree) bằng cách bắt đầu từ một đỉnh và mở rộng cây dần dần?

A. Kruskal’s Algorithm
B. Prim’s Algorithm
C. Dijkstra’s Algorithm
D. Floyd-Warshall Algorithm

73. Cấu trúc dữ liệu nào sau đây cho phép cả chèn và xóa phần tử ở cả hai đầu?

A. Stack (Ngăn xếp)
B. Queue (Hàng đợi)
C. Deque (Hàng đợi hai đầu)
D. Linked List (Danh sách liên kết)

74. Trong lập trình động (dynamic programming), kỹ thuật nào sau đây giúp tránh tính toán lại các bài toán con đã được giải?

A. Divide and Conquer (Chia để trị)
B. Greedy Algorithm (Thuật toán tham lam)
C. Memoization (Ghi nhớ)
D. Backtracking (Quay lui)

75. Trong cây nhị phân, nút nào không có nút con được gọi là gì?

A. Root (Gốc)
B. Internal Node (Nút trong)
C. Leaf (Lá)
D. Parent (Cha)

76. Thuật toán nào sau đây được sử dụng để tìm kiế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ố âm?

A. Dijkstra’s Algorithm
B. Bellman-Ford Algorithm
C. Floyd-Warshall Algorithm
D. Prim’s Algorithm

77. Thuật toán nào sau đây thường được sử dụng để nén dữ liệu không mất mát (lossless data compression)?

A. JPEG
B. MPEG
C. Huffman Coding
D. MP3

78. Phương pháp nào sau đây được sử dụng để giải quyết xung đột trong bảng băm (hash table)?

A. Binary Search (Tìm kiếm nhị phân)
B. Linear Probing (Thăm dò tuyến tính)
C. Depth-First Search (Tìm kiếm theo chiều sâu)
D. Breadth-First Search (Tìm kiếm theo chiều rộng)

79. Cấu trúc dữ liệu nào sau đây thường được sử dụng để quản lý các tiến trình (processes) trong hệ điều hành?

A. Stack (Ngăn xếp)
B. Queue (Hàng đợi)
C. Linked List (Danh sách liên kết)
D. Graph (Đồ thị)

80. 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)?

A. Stack (Ngăn xếp)
B. Queue (Hàng đợi)
C. Linked List (Danh sách liên kết)
D. Tree (Cây)

81. Trong đồ thị, thuật toán nào sau đây được sử dụng để kiểm tra xem một đồ thị có phải là đồ thị có chu trình hay không?

A. Dijkstra’s Algorithm
B. Prim’s Algorithm
C. Depth-First Search (DFS)
D. Breadth-First Search (BFS)

82. Độ phức tạp thời gian để chèn một phần tử vào một bảng băm (hash table) với giải quyết xung đột bằng chaining là bao nhiêu trong trường hợp xấu nhất?

A. O(1)
B. O(log n)
C. O(n)
D. O(n^2)

83. Độ phức tạp thời gian tốt nhất cho tìm kiếm một phần tử trong một mảng đã được sắp xếp bằng thuật toán tìm kiếm nhị phân là bao nhiêu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)

84. Độ phức tạp thời gian của thao tác xóa một phần tử ở cuối một mảng là bao nhiêu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)

85. Trong cây nhị phân tìm kiếm (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?

A. Pre-order traversal (Duyệt tiền thứ tự)
B. Post-order traversal (Duyệt hậu thứ tự)
C. In-order traversal (Duyệt trung thứ tự)
D. Level-order traversal (Duyệt theo mức)

86. 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 (Hàng đợi)
B. Linked List (Danh sách liên kết)
C. Stack (Ngăn xếp)
D. Tree (Cây)

87. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian xấu nhất là O(n^2)?

A. Merge Sort (Sắp xếp trộn)
B. Quick Sort (Sắp xếp nhanh)
C. Heap Sort (Sắp xếp vun đống)
D. Radix Sort (Sắp xếp cơ số)

88. Độ phức tạp thời gian của thao tác tìm kiếm trong một bảng băm (hash table) với giải quyết xung đột hoàn hảo (perfect hashing) là bao nhiêu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n log n)

89. 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 bao trùm tối thiểu (minimum spanning tree)?

A. Dijkstra’s Algorithm
B. Bellman-Ford Algorithm
C. Kruskal’s Algorithm
D. Floyd-Warshall Algorithm

90. Trong cây nhị phân tìm kiếm, 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 (Tree Traversal)
B. Tìm kiếm (Search)
C. Tìm nút nhỏ nhất (Find Minimum)
D. Tất cả các đáp án trên

91. Ưu điểm chính của việc sử dụng đồ thị (graph) so với cây (tree) là gì?

A. Đồ thị dễ triển khai hơn
B. Đồ thị có thể biểu diễn các mối quan hệ phức tạp hơn
C. Đồ thị yêu cầu ít bộ nhớ hơn
D. Đồ thị có độ phức tạp thời gian tìm kiếm tốt hơn

92. Khi nào nên sử dụng thuật toán Quick Sort thay vì Merge Sort?

A. Khi cần một thuật toán sắp xếp ổn định
B. Khi cần sắp xếp một lượng lớn dữ liệu và bộ nhớ là một hạn chế
C. Khi dữ liệu đã gần như được sắp xếp
D. Khi cần đảm bảo độ phức tạp thời gian là O(n log n) trong mọi trường hợp

93. Thuật toán sắp xếp nào có độ phức tạp thời gian trung bình là O(n log n) và hoạt động tốt nhất trên các tập dữ liệu lớn?

A. Bubble Sort
B. Insertion Sort
C. Merge Sort
D. Selection Sort

94. Thuật toán nào sau đây là một thuật toán tham lam (greedy algorithm)?

A. Dijkstra’s Algorithm
B. Dynamic Programming
C. Backtracking
D. Divide and Conquer

95. Cây khung nhỏ nhất (Minimum Spanning Tree) của một đồ thị liên thông có trọng số là gì?

A. Một cây chứa tất cả các đỉnh của đồ thị và có tổng trọng số cạnh lớn nhất
B. Một cây chứa tất cả các đỉnh của đồ thị và có tổng trọng số cạnh nhỏ nhất
C. Một đồ thị con của đồ thị gốc
D. Một đường đi ngắn nhất giữa hai đỉnh

96. Độ phức tạp thời gian của thao tác chèn vào đầu một danh sách liên kết đơn (singly linked list) là bao nhiêu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)

97. Cấu trúc dữ liệu nào thường được sử dụng để triển khai hàng đợi ưu tiên?

A. Stack
B. Queue
C. Heap
D. Linked List

98. Sự khác biệt chính giữa Stack và Queue là gì?

A. Stack sử dụng bộ nhớ nhiều hơn Queue
B. Stack hoạt động theo nguyên tắc LIFO, trong khi Queue hoạt động theo nguyên tắc FIFO
C. Queue nhanh hơn Stack
D. Stack chỉ có thể lưu trữ số, trong khi Queue có thể lưu trữ mọi kiểu dữ liệu

99. Cấu trúc dữ liệu nào thường được sử dụng để triển khai thuật toán duyệt đồ thị theo chiều rộng (BFS)?

A. Stack
B. Queue
C. Linked List
D. Tree

100. Kỹ thuật lập trình động (Dynamic Programming) thường được sử dụng để giải quyết loại bài toán nào?

A. Các bài toán có thể chia nhỏ thành các bài toán con độc lập
B. Các bài toán yêu cầu tìm tất cả các giải pháp khả thi
C. Các bài toán có cấu trúc con tối ưu và các bài toán con gối nhau
D. Các bài toán cần tìm đường đi ngắn nhất

101. Cấu trúc dữ liệu nào sau đây phù hợp nhất để lưu trữ các phần tử cần được xử lý theo thứ tự ưu tiên?

A. Stack
B. Queue
C. Heap
D. Linked List

102. Khi nào nên sử dụng Depth-First Search (DFS) thay vì Breadth-First Search (BFS)?

A. Khi cần tìm đường đi ngắn nhất
B. Khi không gian tìm kiếm rất lớn và có thể có các nhánh vô hạn
C. Khi cần duyệt tất cả các đỉnh của đồ thị
D. Khi cần tìm tất cả các thành phần liên thông

103. 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 có hợp lệ hay không (ví dụ: ‘(){}[]’)?

A. Queue
B. Linked List
C. Stack
D. Tree

104. Thuật toán nào sau đây được sử dụng để tìm đường đi ngắn nhất trong một đồ thị có trọng số không âm?

A. Breadth-First Search (BFS)
B. Depth-First Search (DFS)
C. Dijkstra’s Algorithm
D. Prim’s Algorithm

105. Cây tìm kiếm nhị phân (BST) có đặc điểm gì?

A. Tất cả các nút bên trái lớn hơn nút gốc và tất cả các nút bên phải nhỏ hơn nút gốc
B. Tất cả các nút bên trái nhỏ hơn nút gốc và tất cả các nút bên phải lớn hơn nút gốc
C. Tất cả các nút đều có hai con
D. Tất cả các nút đều có giá trị bằng nhau

106. Ư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ì?

A. Truy cập ngẫu nhiên nhanh hơn
B. Sử dụng bộ nhớ hiệu quả hơn khi kích thước không biết trước
C. Tìm kiếm phần tử nhanh hơn
D. Sắp xếp dễ dàng hơn

107. Cây nào sau đây đảm bảo rằng độ cao của cây là O(log n) trong mọi trường hợp?

A. Cây tìm kiếm nhị phân (BST)
B. Cây AVL
C. Cây nhị phân hoàn chỉnh
D. Cây phân đoạn

108. Độ phức tạp thời gian của thao tác xóa một phần tử khỏi một mảng là gì?

A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)

109. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai bộ nhớ cache?

A. Stack
B. Queue
C. Hash Table
D. Linked List

110. Thuật toán sắp xếp nào sau đây là ổn định (stable)?

A. Quick Sort
B. Heap Sort
C. Selection Sort
D. Insertion Sort

111. Độ phức tạp thời gian tốt nhất của thuật toán Insertion Sort là gì?

A. O(n log n)
B. O(n^2)
C. O(n)
D. O(log n)

112. Độ phức tạp thời gian của thao tác tìm kiếm trong một hash table trung bình là bao nhiêu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n log n)

113. Khi nào nên sử dụng thuật toán Bubble Sort?

A. Khi cần sắp xếp một lượng lớn dữ liệu
B. Khi dữ liệu gần như đã được sắp xếp
C. Khi cần một thuật toán sắp xếp ổn định
D. Khi yêu cầu bộ nhớ thấp là ưu tiên hàng đầu

114. Độ phức tạp không gian của thuật toán Merge Sort là gì?

A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)

115. Phương pháp nào sau đây là một cách tiếp cận chia để trị (divide and conquer)?

A. Linear Search
B. Binary Search
C. Breadth-First Search
D. Depth-First Search

116. Cấu trúc dữ liệu nào hoạt động theo nguyên tắc LIFO (Last In, First Out)?

A. Queue
B. Stack
C. Linked List
D. Tree

117. Hash table giải quyết xung đột bằng phương pháp nào sau đây?

A. Sắp xếp lại các phần tử
B. Sử dụng hàm băm khác
C. Chaining hoặc Open Addressing
D. Loại bỏ các phần tử trùng lặp

118. Độ phức tạp thời gian của thao tác tìm kiếm trong cây tìm kiếm nhị phân (BST) tốt nhất là gì?

A. O(n)
B. O(log n)
C. O(n^2)
D. O(1)

119. Ưu điểm của việc sử dụng cây B (B-tree) so với cây tìm kiếm nhị phân (BST) là gì?

A. Cây B dễ triển khai hơn
B. Cây B có độ phức tạp thời gian tìm kiếm tốt hơn trong mọi trường hợp
C. Cây B hiệu quả hơn cho việc lưu trữ trên đĩa
D. Cây B yêu cầu ít bộ nhớ hơn

120. Sự khác biệt chính giữa thuật toán Prim và thuật toán Kruskal là gì?

A. Prim bắt đầu từ một đỉnh, trong khi Kruskal bắt đầu từ một cạnh
B. Kruskal bắt đầu từ một đỉnh, trong khi Prim bắt đầu từ một cạnh
C. Prim tìm đường đi ngắn nhất, trong khi Kruskal tìm cây khung nhỏ nhất
D. Kruskal nhanh hơn Prim

121. Độ phức tạp không gian của thuật toán sắp xếp chèn (insertion sort) là bao nhiêu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n^2)

122. Trong thuật toán Dijkstra, cấu trúc dữ liệu nào sau đây thường được sử dụng để lưu trữ khoảng cách từ đỉnh nguồn đến các đỉnh khác?

A. Mảng (Array)
B. Ngăn xếp (Stack)
C. Hàng đợi (Queue)
D. Cây (Tree)

123. Cấu trúc dữ liệu nào sau đây thích hợp nhất để mô phỏng việc quản lý các tiến trình trong hệ điều hành?

A. Ngăn xếp (Stack)
B. Cây (Tree)
C. Hàng đợi (Queue)
D. Danh sách liên kết (Linked List)

124. Ư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ì?

A. Truy cập ngẫu nhiên nhanh hơn
B. Sử dụng bộ nhớ hiệu quả hơn
C. Dễ dàng chèn và xóa phần tử
D. Tìm kiếm phần tử nhanh hơn

125. Thuật toán nào sau đây thường được sử dụng để tìm cây khung nhỏ nhất (minimum spanning tree) trong một đồ thị liên thông có trọng số?

A. Dijkstra’s algorithm
B. Kruskal’s algorithm
C. Depth-First Search (DFS)
D. Breadth-First Search (BFS)

126. 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. Hàng đợi (Queue)
B. Cây (Tree)
C. Ngăn xếp (Stack)
D. Danh sách liên kết (Linked List)

127. Độ 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(n^2)
D. O(1)

128. Phương pháp tiếp cận nào sau đây thường được sử dụng để giải quyết bài toán ‘người du lịch’ (traveling salesman problem)?

A. Thuật toán tham lam (Greedy algorithm)
B. Lập trình động (Dynamic programming)
C. Thuật toán quay lui (Backtracking)
D. Tất cả các phương án trên

129. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai bộ nhớ cache?

A. Mảng (Array)
B. Danh sách liên kết (Linked List)
C. Bảng băm (Hash table)
D. Cây (Tree)

130. Thuật toán nào sau đây là một ví dụ về thuật toán ‘chia để trị’ nhưng không phải là thuật toán sắp xếp?

A. Tìm kiếm nhị phân (Binary Search)
B. Sắp xếp trộn (Merge Sort)
C. Sắp xếp nhanh (Quick Sort)
D. Sắp xếp chèn (Insertion Sort)

131. Khi nào nên sử dụng cây tìm kiếm nhị phân tự cân bằng (ví dụ: cây AVL, cây đỏ-đen) thay vì cây tìm kiếm nhị phân thông thường?

A. Khi dữ liệu được chèn vào theo thứ tự ngẫu nhiên
B. Khi dữ liệu được chèn vào theo thứ tự tăng dần hoặc giảm dần
C. Khi số lượng nút trong cây rất nhỏ
D. Khi không cần các thao tác tìm kiếm

132. Ưu điểm chính của việc sử dụng cây đỏ-đen (red-black tree) so với cây AVL là gì?

A. Cây đỏ-đen có độ cao cân bằng hơn
B. Cây đỏ-đen dễ cài đặt hơn
C. Cây đỏ-đen yêu cầu ít phép quay cây hơn
D. Cây đỏ-đen có hiệu suất tìm kiếm tốt hơn

133. 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?

A. Hàng đợi (Queue)
B. Mảng (Array)
C. Ngăn xếp (Stack)
D. Danh sách liên kết (Linked List)

134. 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 trước đó?

A. Đệ quy (Recursion)
B. Tham lam (Greedy)
C. Ghi nhớ (Memoization)
D. Quay lui (Backtracking)

135. Độ phức tạp thời gian tốt nhất của thuật toán sắp xếp nổi bọt (Bubble Sort) là bao nhiêu?

A. O(n^2)
B. O(n log n)
C. O(n)
D. O(1)

136. Thuật toán nào sau đây là một ví dụ về thuật toán tham lam (greedy algorithm)?

A. Dijkstra’s algorithm
B. Thuật toán quay lui (Backtracking)
C. Dynamic Programming
D. Branch and Bound

137. Trong bảng băm (hash table), phương pháp giải quyết xung đột nào sau đây có thể dẫn đến hiện tượng ‘clustering’?

A. Chaining
B. Double Hashing
C. Linear Probing
D. Quadratic Probing

138. Hàm băm (hash function) tốt nên có đặc điểm nào sau đây?

A. Luôn tạo ra cùng một giá trị băm cho các khóa khác nhau
B. Phân phối đều các khóa vào các ô băm
C. Tạo ra giá trị băm rất lớn
D. Luôn tạo ra giá trị băm duy nhất cho mỗi khóa

139. 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. Merge Sort
D. Selection Sort

140. Trong thuật toán tìm kiếm nhị phân, điều kiện tiên quyết để thuật toán hoạt động đúng là gì?

A. Dữ liệu phải được sắp xếp
B. Dữ liệu phải là số nguyên
C. Dữ liệu phải là duy nhất
D. Dữ liệu phải có kích thước nhỏ

141. 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. Danh sách liên kết (Linked List)
B. Hàng đợi (Queue)
C. Ngăn xếp (Stack)
D. Mảng (Array)

142. 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 đã gần được sắp xếp?

A. Quick Sort
B. Merge Sort
C. Heap Sort
D. Insertion Sort

143. 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. Mảng (Array)
B. Danh sách liên kết (Linked List)
C. Heap
D. Cây nhị phân tìm kiếm (Binary Search Tree)

144. Thuật toán nào sau đây sử dụng kỹ thuật chia để trị (divide and conquer)?

A. Bubble Sort
B. Insertion Sort
C. Quick Sort
D. Selection Sort

145. 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 (Search)
D. Duyệt cây theo thứ tự giữa (inorder traversal)

146. Khi nào nên sử dụng danh sách liên kết đơn (singly linked list) thay vì danh sách liên kết đôi (doubly linked list)?

A. Khi cần duyệt danh sách theo cả hai chiều
B. Khi cần chèn và xóa phần tử ở giữa danh sách thường xuyên
C. Khi không gian bộ nhớ là một yếu tố quan trọng
D. Khi cần tìm kiếm phần tử từ cuối danh sách

147. Cây nào sau đây đảm bảo rằng độ cao của cây luôn được giữ ở mức O(log n), trong đó n là số lượng nút?

A. Cây nhị phân (Binary Tree)
B. Cây tìm kiếm nhị phân (Binary Search Tree)
C. Cây AVL
D. Cây B

148. Khi nào nên sử dụng thuật toán tìm kiếm theo chiều rộng (BFS) thay vì tìm kiếm theo chiều sâu (DFS) trong đồ thị?

A. Khi cần tìm đường đi ngắn nhất giữa hai đỉnh
B. Khi đồ thị rất sâu
C. Khi cần duyệt tất cả các đỉnh của đồ thị
D. Khi không gian bộ nhớ bị hạn chế

149. Điểm khác biệt chính giữa hàng đợi (Queue) và hàng đợi ưu tiên (Priority Queue) là gì?

A. Hàng đợi sử dụng nguyên tắc FIFO, trong khi hàng đợi ưu tiên sử dụng nguyên tắc LIFO
B. Hàng đợi ưu tiên cho phép các phần tử có độ ưu tiên khác nhau, trong khi hàng đợi thì không
C. Hàng đợi có thể chứa các phần tử trùng lặp, trong khi hàng đợi ưu tiên thì không
D. Hàng đợi được triển khai bằng mảng, trong khi hàng đợi ưu tiên được triển khai bằng danh sách liên kết

150. Trong đồ thị, cấu trúc dữ liệu nào sau đây thường được sử dụng để biểu diễn danh sách kề (adjacency list)?

A. Mảng (Array)
B. Ngăn xếp (Stack)
C. Hàng đợi (Queue)
D. Danh sách liên kết (Linked List)

Số câu đã làm: 0/0
Thời gian còn lại: 00:00:00
  • Đã làm
  • Chưa làm
  • Cần kiểm tra lại
© 2026 Trending New 24h • Tạo ra với GeneratePress

Bạn ơi!!! Để xem được kết quả, bạn vui lòng làm nhiệm vụ nhỏ xíu này nha

HƯỚNG DẪN TÌM MẬT KHẨU

Đang tải nhiệm vụ...

Bước 1: Mở tab mới và truy cập Google.com. Sau đó tìm kiếm chính xác từ khóa sau:

Bước 2: Tìm và click vào kết quả có trang web giống như hình ảnh dưới đây:

Hướng dẫn tìm kiếm

Bước 3: Kéo xuống cuối trang đó để tìm mật khẩu như hình ảnh hướng dẫn:

Hướng dẫn lấy mật khẩu

Nếu tìm không thấy mã bạn có thể Đổi nhiệm vụ để lấy mã khác nhé.