Skip to content
Tài Liệu Trọn Đời - Thư viện tài liệu học tập - 5

Blog Cá Nhân | Chia Sẻ Tài Liệu Học Tập Miễn Phí

  • Trang chủ
    • Về chúng tôi
    • Quy định sử dụng
    • Miễn trừ trách nhiệm
    • Bản quyền & Khiếu nại
  • Đáp án
  • Góc học tập
  • Trắc nghiệm
  • Công cụ học tập
  • Liên hệ
  • Sitemap
  • Trang chủ
    • Về chúng tôi
    • Quy định sử dụng
    • Miễn trừ trách nhiệm
    • Bản quyền & Khiếu nại
  • Đáp án
  • Góc học tập
  • Trắc nghiệm
  • Công cụ học tập
  • Liên hệ
  • Sitemap
Tài Liệu Trọn Đời - Thư viện tài liệu học tập - 5

Blog Cá Nhân | Chia Sẻ Tài Liệu Học Tập Miễn Phí

Trang chủ » Trắc nghiệm Đại học » 150+ câu hỏi trắc nghiệm cấu trúc dữ liệu và giải thuật online có đáp án

Trắc nghiệm Đại học

150+ câu hỏi 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: 07/03/2026

⚠️ Đọc lưu ý và miễn trừ trách nhiệm trước khi bắt đầu: Các câu hỏi và đáp án trong bộ trắc nghiệm này chỉ mang tính chất tham khảo, hỗ trợ học tập và ôn luyện. Đây KHÔNG PHẢI là đề thi chính thức, không đại diện cho bất kỳ tài liệu chuẩn hóa hay kiểm tra chứng chỉ nào từ các cơ quan giáo dục hay tổ chức cấp chứng chỉ chuyên môn. Website không chịu bất kỳ trách nhiệm nào liên quan đến độ chính xác của nội dung hoặc các quyết định được đưa ra dựa trên kết quả làm bài trắc nghiệm.

Bạn đã sẵn sàng bắt đầu với bộ 150+ câu hỏi trắc nghiệm cấu trúc dữ liệu và giải thuật online có đáp án. Bộ câu hỏi này được xây dựng để giúp bạn ôn luyện kiến thức một cách chủ động và hiệu quả. Hãy chọn một bộ câu hỏi bên dưới để bắt đầu ngay. Chúc bạn làm bài hiệu quả và tích lũy thêm nhiều kiến thức!

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

1. Trong ngữ cảnh của cấu trúc dữ liệu đồ thị, thuật ngữ ‘bậc của một đỉnh’ (degree of a vertex) đề cập đến điều gì?

A. Số lượng đỉnh trong đồ thị.
B. Số lượng cạnh trong đồ thị.
C. Số lượng cạnh kết nối với đỉnh đó.
D. Độ dài đường đi ngắn nhất từ đỉnh đó đến một đỉnh khác.

2. 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. Sắp xếp nổi bọt (Bubble Sort)
B. Sắp xếp chèn (Insertion Sort)
C. Sắp xếp chọn (Selection Sort)
D. Sắp xếp nhanh (Quick Sort)

3. Độ 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?

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

4. Độ 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?

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

5. Cấu trúc dữ liệu nào phù hợp nhất để biểu diễn mối quan hệ ‘cha-con’ trong một hệ thống phân cấp?

A. Mảng (Array)
B. Hàng đợi (Queue)
C. Cây (Tree)
D. Danh sách liên kết (Linked List)

6. Phương pháp tiếp cận lập trình nào thường được sử dụng để giải quyết các bài toán tối ưu hóa, bằng cách chia bài toán thành các bài toán con và lưu trữ kết quả của các bài toán con này để tránh tính toán lại?

A. Tham lam (Greedy)
B. Chia để trị (Divide and Conquer)
C. Quy hoạch động (Dynamic Programming)
D. Backtracking

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

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)

8. Cấu trúc dữ liệu nào 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 tìm kiếm nhị phân (Binary Search Tree)

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

A. Tìm kiếm theo chiều sâu (Depth-First Search)
B. Tìm kiếm theo chiều rộng (Breadth-First Search)
C. Thuật toán Dijkstra
D. Sắp xếp tô pô (Topological Sort)

10. Kiểu dữ liệu trừu tượng (Abstract Data Type – ADT) nào sau đây tuân theo nguyên tắc ‘First In, First Out’ (FIFO)?

A. Stack
B. Tree
C. Queue
D. Graph

11. Cấu trúc dữ liệu nào sử dụng con trỏ để liên kết các phần tử?

A. Mảng (Array)
B. Hàng đợi (Queue)
C. Danh sách liên kết (Linked List)
D. Cây (Tree)

12. Phương pháp nào sau đây thường được sử dụng để tìm kiếm một mẫu (pattern) trong một chuỗi văn bản lớn?

A. Thuật toán sắp xếp nổi bọt (Bubble Sort).
B. Thuật toán tìm kiếm nhị phân (Binary Search).
C. Thuật toán KMP (Knuth-Morris-Pratt).
D. Thuật toán sắp xếp chèn (Insertion Sort).

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

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

14. 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 (Heap)
D. Linked List

15. Sắp xếp tô pô (Topological Sort) được sử dụng cho loại đồ thị nào?

A. Đồ thị có hướng không chu trình (Directed Acyclic Graph – DAG)
B. Đồ thị có hướng có chu trình (Directed Cyclic Graph)
C. Đồ thị vô hướng (Undirected Graph)
D. Đồ thị đầy đủ (Complete Graph)

16. Độ 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 (balanced binary search tree) là bao nhiêu?

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

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

18. Thuật toán nào sau đây được sử dụng để nén dữ liệu mà không làm mất thông tin?

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

19. Kỹ thuật nào sau đây được sử dụng để giải quyết xung đột trong bảng băm (hash table)?

A. Sắp xếp (Sorting)
B. Tìm kiếm (Searching)
C. Địa chỉ mở (Open Addressing)
D. Đệ quy (Recursion)

20. Trong một đồ thị, một chu trình Euler là gì?

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

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

22. Cấu trúc dữ liệu nào 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. Mảng (Array)
D. Ngăn xếp (Stack)

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

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

24. Thuật toán duyệt đồ thị nào sử dụng hàng đợi (queue) để lưu trữ các đỉnh cần thăm?

A. Tìm kiếm theo chiều sâu (Depth-First Search)
B. Tìm kiếm theo chiều rộng (Breadth-First Search)
C. Tìm kiếm A* (A* Search)
D. Thuật toán Dijkstra

25. Độ phức tạp thời gian trung bình của thuật toán sắp xếp nhanh (Quick Sort) là bao nhiêu?

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

26. Trong một cây tìm kiếm nhị phân (Binary Search Tree), thuộc tính nào sau đây luôn đúng?

A. Tất cả các nút bên trái lớn hơn nút gốc.
B. Tất cả các nút bên phải nhỏ hơn nút gốc.
C. 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.
D. Tất cả các nút đều có giá trị bằng nhau.

27. Trong cây tìm kiếm nhị phân tự cân bằng (self-balancing binary search tree) như cây AVL hoặc cây đỏ-đen, mục đích của việc cân bằng cây là gì?

A. Để giảm độ phức tạp không gian của cây.
B. Để đảm bảo rằng tất cả các nút đều có cùng số lượng nút con.
C. Để đảm bảo độ phức tạp thời gian O(log n) cho các thao tác tìm kiếm, chèn và xóa.
D. Để tăng tốc độ duyệt cây theo thứ tự trước (pre-order traversal).

28. Cấu trúc dữ liệu nào sau đây là một dạng của cây, trong đó mỗi nút có thể có nhiều hơn hai nút con?

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

29. 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 như đã được sắp xếp?

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

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

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

31. Giải thuật nào sau đây là một thuật toán chia để trị?

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

32. Cấu trúc dữ liệu nào được sử dụng để triển khai thuật toán Breadth-First Search (BFS)?

A. Stack
B. Queue
C. Tree
D. Graph

33. Trong thuật toán Dijkstra, tập hợp nào được sử dụng để theo dõi các đỉnh đã được xử lý?

A. Stack
B. Queue
C. Set (Tập hợp)
D. Linked List

34. 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ị?

A. Dijkstra’s Algorithm
B. Bellman-Ford Algorithm
C. Prim’s Algorithm
D. Depth-First Search

35. Ưu điểm chính của việc sử dụng cây tìm kiếm B (B-tree) là gì?

A. Hiệu suất tốt cho dữ liệu lưu trữ trên đĩa
B. Dễ dàng triển khai
C. Tìm kiếm nhanh chóng trong bộ nhớ
D. Sử dụng ít bộ nhớ

36. Khi nào thì nên sử dụng bảng băm (hash table) thay vì cây tìm kiếm?

A. Khi cần duy trì thứ tự các phần tử
B. Khi cần tìm phần tử nhỏ nhất
C. Khi cần tìm kiếm, chèn và xóa nhanh chóng
D. Khi cần duyệt tất cả các phần tử theo thứ tự

37. Trong ngữ cảnh của đồ thị, thuật toán nào đượ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?

A. Prim’s Algorithm
B. Kruskal’s Algorithm
C. Dijkstra’s Algorithm
D. Breadth-First Search

38. Độ 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 đã sắp xếp sử dụng tìm kiếm nhị phân là gì?

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

39. Trong thuật toán Bellman-Ford, mục đích chính của việc thực hiện V-1 lần lặp (V là số đỉnh) là gì?

A. Tìm đường đi ngắn nhất trong đồ thị không có chu trình âm
B. Tìm đường đi ngắn nhất trong đồ thị có chu trình dương
C. Phát hiện chu trình âm
D. Tìm cây khung nhỏ nhất

40. Ưu điểm của việc sử dụng hàng đợi ưu tiên (priority queue) là gì?

A. Truy cập ngẫu nhiên nhanh chóng
B. Loại bỏ phần tử có độ ưu tiên cao nhất một cách hiệu quả
C. Sắp xếp các phần tử theo thứ tự thêm vào
D. Lưu trữ dữ liệu theo nguyên tắc FIFO

41. Trong thuật toán sắp xếp nhanh (Quick Sort), kỹ thuật nào được sử dụng để chọn phần tử chốt?

A. Chọn phần tử đầu tiên
B. Chọn phần tử cuối cùng
C. Chọn phần tử ngẫu nhiên
D. Tất cả các phương án trên

42. Trong thuật toán Kruskal, cấu trúc dữ liệu nào được sử dụng để kiểm tra xem hai đỉnh có thuộc cùng một thành phần liên thông hay không?

A. Stack
B. Queue
C. Union-Find (Disjoint Set)
D. Linked List

43. Độ 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ụ: AVL tree, Red-Black tree) là gì?

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

44. Cấu trúc dữ liệu nào cho phép chèn và xóa các phần tử ở cả đầu và cuối với độ phức tạp thời gian O(1)?

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

45. Khi nào thì nên sử dụng thuật toán tham lam (Greedy Algorithm)?

A. Khi cần tìm nghiệm tối ưu toàn cục
B. Khi bài toán có cấu trúc con tối ưu
C. Khi cần duyệt tất cả các khả năng
D. Khi không gian tìm kiếm rất lớn

46. Thuật toán sắp xếp nào có độ phức tạp thời gian tồi tệ nhất là O(n^2) nhưng thường hoạt động tốt trong thực tế?

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

47. Khi nào thì 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 không gian tìm kiếm rất sâu
B. Khi cần tìm đường đi ngắn nhất
C. Khi cần duyệt toàn bộ đồ thị
D. Khi đồ thị có chu trình

48. Độ 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 là bao nhiêu?

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

49. Cấu trúc dữ liệu nào 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

50. 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à thường được sử dụng trong thực tế?

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

51. Cấu trúc dữ liệu nào phù hợp nhất để biểu diễn mối quan hệ phân cấp?

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

52. Trong thuật toán Heap Sort, cấu trúc dữ liệu nào được sử dụng?

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

53. Thuật toán nào sau đây thường được sử dụng để nén dữ liệu?

A. Dijkstra’s Algorithm
B. Huffman Coding
C. Merge Sort
D. Binary Search

54. Khi nào thì 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)?

A. Khi mảng đã được sắp xếp
B. Khi mảng có kích thước rất lớn
C. Khi mảng chưa được sắp xếp
D. Khi cần tìm phần tử lớn nhất

55. Cấu trúc dữ liệu nào cho phép truy cập phần tử đầu và cuối với độ phức tạp thời gian O(1)?

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

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

A. Stack
B. Queue
C. Tree
D. Graph

57. Ư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 biết trước kích thước
C. Dễ dàng chèn và xóa các phần tử
D. Tìm kiếm nhanh hơn

58. Trong một bảng băm (hash table), điều gì xảy ra khi hai khóa khác nhau băm đến cùng một vị trí?

A. Xảy ra lỗi
B. Ghi đè giá trị cũ
C. Xử lý xung đột (collision)
D. Bảng băm tự động tăng kích thước

59. Cấu trúc dữ liệu nào phù hợp nhất để kiểm tra xem một dấu ngoặc có hợp lệ không (ví dụ: ‘(){}[]’)?

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

60. Trong lập trình động (Dynamic Programming), kỹ thuật nào được sử dụng để tránh tính toán lại các bài toán con đã giải?

A. Divide and Conquer
B. Greedy Approach
C. Memoization
D. Backtracking

61. 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. Stack
C. Linked List
D. Tree

62. Ư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 ít bộ nhớ 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

63. 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
B. Quick Sort
C. Heap Sort
D. Radix Sort

64. Hàm băm (hash function) tốt cần có thuộc tính 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. Luôn tạo ra các giá trị băm khác nhau cho cùng một khóa
D. Có độ phức tạp tính toán cao

65. Thuật toán nào sau đây là một thuật toán chia để trị (divide and conquer algorithm)?

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

66. Thuật toán nào sau đây là một thuật toán tham lam (greedy algorithm) được sử dụng để tìm cây khung nhỏ nhất (minimum spanning tree) trong một đồ thị có trọng số?

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

67. Trong cây tìm kiếm nhị phân tự cân bằng (self-balancing binary search tree), mục đích của việc cân bằng cây là gì?

A. Để giảm độ phức tạp không gian
B. Để đảm bảo độ phức tạp thời gian O(1) cho tất cả các thao tác
C. Để ngăn chặn cây trở thành một danh sách liên kết suy biến, đảm bảo độ phức tạp thời gian O(log n) cho các thao tác tìm kiếm, chèn và xóa
D. Để tăng số lượng nút trong cây

68. 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, nhưng lại không ổn định (unstable)?

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

69. Cấu trúc dữ liệu nào sau đây phù hợp nhất để biểu diễn mối quan hệ nhiều-nhiều giữa các thực thể?

A. Stack
B. Queue
C. Graph
D. Tree

70. Độ 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 cân bằng (ví dụ: AVL tree, Red-Black tree) là bao nhiêu?

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

71. Thuật toán nào sau đây có thể được sử dụng để tìm chu trình trong một đồ thị có hướng?

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

72. 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ì hiệu suất tốt trong hầu hết các trường hợp?

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

73. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán A* tìm đường đi (A* pathfinding algorithm)?

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

74. Trong thuật toán duyệt đồ thị theo chiều sâu (DFS), cấu trúc dữ liệu nào sau đây thường được sử dụng để lưu trữ các đỉnh cần duyệt?

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

75. Trong bảng băm (hash table), kỹ thuật nào sau đây được sử dụng để xử lý xung đột khi hai khóa khác nhau được băm vào cùng một vị trí?

A. Sắp xếp (Sorting)
B. Tìm kiếm nhị phân (Binary Search)
C. Liên kết chuỗi (Chaining)
D. Đệ quy (Recursion)

76. Cấu trúc dữ liệu nào sau đây phù hợp nhất để triển khai một bộ nhớ cache (cache memory)?

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

77. Cấu trúc dữ liệu nào sau đây phù hợp nhất để kiểm tra xem một chuỗi ngoặc có hợp lệ hay không (ví dụ: ‘(){}[]’)?

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

78. Ưu điểm chính của việc sử dụng hàng đợi ưu tiên (priority queue) là gì?

A. Truy cập ngẫu nhiên nhanh hơn
B. Sử dụng ít bộ nhớ hơn
C. Cho phép truy cập vào phần tử có độ ưu tiên cao nhất
D. Tìm kiếm phần tử nhanh hơn

79. 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

80. 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. Tree
C. Queue
D. Linked List

81. 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 chiều rộng (Breadth-First Traversal)
B. Duyệt cây theo chiều sâu (Depth-First Traversal)
C. Tìm kiếm một phần tử
D. Sắp xếp các phần tử trong cây

82. Cấu trúc dữ liệu nào sau đây phù hợp nhất để biểu diễn quan hệ ‘cha-con’ trong một tổ chức?

A. Queue
B. Stack
C. Graph
D. Tree

83. Độ phức tạp thời gian của thao tác xóa một phần tử khỏi một danh sách liên kết đơn (singly linked list) là bao nhiêu, nếu chúng ta đã có con trỏ đến phần tử đó?

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

84. Cấu trúc dữ liệu nào sau đây cho phép truy cập các phần tử theo chỉ số (index) với độ phức tạp thời gian O(1)?

A. Linked List
B. Tree
C. Array
D. Graph

85. Độ 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 log n)
B. O(n^2)
C. O(n)
D. O(log n)

86. Cấu trúc dữ liệu nào sau đây sử dụng con trỏ để liên kết các phần tử?

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

87. Trong cấu trúc dữ liệu đồ thị (graph), 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?

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

88. Độ phức tạp thời gian của thao tác chèn vào một heap (min-heap hoặc max-heap) là bao nhiêu?

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

89. 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 để thuật toán hoạt động chính xác?

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 cố định

90. Khi nào nên sử dụng cấu trúc dữ liệu Trie?

A. Khi cần lưu trữ dữ liệu số nguyên lớn
B. Khi cần tìm kiếm các chuỗi có chung tiền tố một cách hiệu quả
C. Khi cần sắp xếp dữ liệu nhanh chóng
D. Khi cần biểu diễn mối quan hệ giữa các đối tượng

91. Thuật toán sắp xếp nào có hiệu suất tốt nhất trong trường hợp dữ liệu gần như đã được sắp xếp?

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

92. Cấu trúc dữ liệu nào phù hợp nhất để triển khai chức năng ‘undo’ trong một trình soạn thảo văn bản?

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)

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

A. Thuật toán Dijkstra
B. Tìm kiếm nhị phân (Binary Search)
C. Sắp xếp trộn (Merge Sort)
D. Lập trình động (Dynamic Programming)

94. Cấu trúc dữ liệu nào 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)

95. Cấu trúc dữ liệu nào được sử dụng để biểu diễn mối quan hệ ‘cha-con’ phân cấp?

A. Mảng (Array)
B. Danh sách liên kết (Linked List)
C. Cây (Tree)
D. Đồ thị (Graph)

96. Trong một đồ thị có hướng (directed graph), điều gì tạo nên một thành phần liên thông mạnh (strongly connected component)?

A. Một tập hợp các đỉnh mà không có đường đi giữa chúng.
B. Một tập hợp các đỉnh mà có một đường đi từ bất kỳ đỉnh nào đến bất kỳ đỉnh nào khác trong tập hợp.
C. Một tập hợp các đỉnh mà tất cả đều có bậc vào bằng 0.
D. Một tập hợp các đỉnh mà tất cả đều có bậc ra bằng 0.

97. Trong đồ thị, một chu trình (cycle) là gì?

A. Một đường đi không chứa cạ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.

98. Độ phức tạp không gian của thuật toán sắp xếp trộn (merge sort) là gì?

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

99. Cây đỏ-đen (red-black tree) là một loại cấu trúc dữ liệu nào?

A. Cây nhị phân tìm kiếm không cân bằng.
B. Cây nhị phân tìm kiếm tự cân bằng.
C. Heap
D. Đồ thị

100. Trong một cây quyết định (decision tree), mục đích của việc cắt tỉa (pruning) là gì?

A. Tăng độ phức tạp của cây.
B. Giảm hiện tượng quá khớp (overfitting).
C. Tăng độ chính xác trên dữ liệu huấn luyện.
D. Làm cho cây dễ diễn giải hơn.

101. Cấu trúc dữ liệu nào tuân theo nguyên tắc LIFO (Last In, First Out)?

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)

102. 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ị?

A. Tìm kiếm theo chiều sâu (DFS)
B. Tìm kiếm theo chiều rộng (BFS)
C. Thuật toán Dijkstra
D. Thuật toán Kruskal

103. Độ phức tạp thời gian xấu nhất của thuật toán sắp xếp nhanh (quick sort) là gì?

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

104. Cấu trúc dữ liệu nào là một tập hợp các nút, mỗi nút trỏ đến các nút khác?

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

105. Mục đích chính của việc sử dụng cấu trúc dữ liệu là gì?

A. Để làm cho code trông phức tạp hơn.
B. Để lưu trữ và tổ chức dữ liệu một cách hiệu quả để sử dụng.
C. Để giảm kích thước của chương trình.
D. Để tăng tốc độ biên dịch.

106. Độ phức tạp thời gian tốt nhất của thuật toán tìm kiếm nhị phân là gì?

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

107. Trong lập trình động (dynamic programming), kỹ thuật ghi nhớ (memoization) là gì?

A. Tối ưu hóa việc sử dụng bộ nhớ.
B. Lưu trữ kết quả của các tính toán tốn kém và trả về kết quả đã lưu khi đầu vào tương tự xảy ra lại.
C. Chia nhỏ vấn đề thành các bài toán con nhỏ hơn.
D. Sử dụng đệ quy để giải quyết vấn đề.

108. Trong một hàm đệ quy, điều gì xảy ra nếu không có trường hợp cơ bản (base case)?

A. Hàm sẽ trả về một giá trị ngẫu nhiên.
B. Hàm sẽ thực hiện một lần duy nhất.
C. Hàm sẽ gây ra lỗi tràn bộ nhớ ngăn xếp (stack overflow).
D. Hàm sẽ không thực hiện gì cả.

109. Sự khác biệt chính giữa mảng (array) và danh sách liên kết (linked list) là gì?

A. Mảng có kích thước cố định, danh sách liên kết có kích thước động.
B. Mảng lưu trữ các phần tử không liên tục, danh sách liên kết lưu trữ các phần tử liên tục.
C. Mảng chỉ có thể lưu trữ các số nguyên, danh sách liên kết có thể lưu trữ bất kỳ kiểu dữ liệu nào.
D. Mảng nhanh hơn để chèn và xóa các phần tử.

110. 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. Tìm kiếm tuyến tính (Linear Search)
B. Sắp xếp chèn (Insertion Sort)
C. Sắp xếp nổi bọt (Bubble Sort)
D. Sắp xếp nhanh (Quick Sort)

111. Trong ngữ cảnh của bảng băm (hash table), ‘collision’ xảy ra khi nào?

A. Khi bảng băm đầy.
B. Khi hai khóa khác nhau được băm vào cùng một vị trí.
C. Khi một khóa không tìm thấy trong bảng băm.
D. Khi bảng băm cần thay đổi kích thước.

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

A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Deque (Double-ended queue)
D. Danh sách liên kết đơn (Singly Linked List)

113. Cây nào sau đây đảm bảo rằng chiều cao của cây luôn là O(log n), trong đó n là số lượng nút?

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

114. Trong cây nhị phân tìm kiếm (BST), nút gốc (root node) có đặc điểm gì?

A. Nó luôn là nút lá.
B. Nó không có nút con.
C. Nó là nút cao nhất trong cây.
D. Nó là nút duy nhất không có nút cha.

115. 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 nút trong một đồ thị có trọng số dương?

A. Tìm kiếm theo chiều sâu (DFS)
B. Tìm kiếm theo chiều rộng (BFS)
C. Thuật toán Dijkstra
D. Thuật toán Kruskal

116. Độ phức tạp thời gian trung bình của thao tác tìm kiếm trong bảng băm (hash table) là gì?

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

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

A. Sắp xếp nổi bọt (Bubble Sort)
B. Sắp xếp chèn (Insertion Sort)
C. Sắp xếp chọn (Selection Sort)
D. Tìm kiếm tuyến tính (Linear Search)

118. Thuật toán tìm kiếm theo chiều rộng (BFS) thường được sử dụng để giải quyết vấn đề nào?

A. Tìm đường đi ngắn nhất trong đồ thị không trọng số.
B. Tìm đường đi ngắn nhất trong đồ thị có trọng số.
C. Tìm cây khung nhỏ nhất.
D. Tìm tất cả các đường đi có thể giữa hai đỉnh.

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

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

120. Thuật toán nào sau đây thường được sử dụng để nén dữ liệu?

A. Thuật toán Dijkstra
B. Thuật toán Kruskal
C. Thuật toán Huffman
D. Tìm kiếm nhị phân (Binary Search)

121. Thuật toán Prim đượ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) trong đồ thị
C. Sắp xếp các đỉnh của đồ thị
D. Tìm kiếm một đỉnh cụ thể trong đồ thị

122. Trong cấu trúc dữ liệu cây (Tree), nút nào không có nút con được gọi là gì?

A. Nút gốc (Root)
B. Nút lá (Leaf)
C. Nút cha (Parent)
D. Nút con (Child)

123. 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)

124. 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. Ngăn xếp (Stack)
B. Hàng đợi (Queue)
C. Cây (Tree)
D. Đồ thị (Graph)

125. Độ phức tạp thời gian của thuật toán sắp xếp chèn (Insertion Sort) trong trường hợp xấu nhất là gì?

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

126. Chức năng của hàm băm (Hash Function) là gì?

A. Sắp xếp dữ liệu
B. Chuyển đổi khóa thành chỉ số trong bảng băm
C. Tìm kiếm dữ liệu
D. Xóa dữ liệu

127. Khi nào nên sử dụng thuật toán sắp xếp nhanh (Quick Sort) thay vì sắp xếp trộn (Merge Sort)?

A. Khi cần đảm bảo độ phức tạp thời gian O(n log n) trong mọi trường hợp
B. Khi không gian bộ nhớ là một yếu tố quan trọng
C. Khi dữ liệu đã gần như được sắp xếp
D. Khi cần sắp xếp dữ liệu trên đĩa

128. Sự khác biệt chính giữa hàng đợi (Queue) và ngăn xếp (Stack) là gì?

A. Hàng đợi sử dụng bộ nhớ nhiều hơn ngăn xếp
B. Hàng đợi hoạt động theo nguyên tắc FIFO (First In, First Out), trong khi ngăn xếp hoạt động theo nguyên tắc LIFO (Last In, First Out)
C. Ngăn xếp chỉ có thể lưu trữ số nguyên, trong khi hàng đợi có thể lưu trữ bất kỳ loại dữ liệu nào
D. Ngăn xếp nhanh hơn hàng đợi

129. Độ 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 tốt nhất là gì?

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

130. Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (Linear Search) là gì?

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

131. Thuật toán Kruskal được sử dụng để làm gì?

A. Tìm đường đi ngắn nhất giữa hai đỉnh trong đồ thị.
B. Tìm cây khung nhỏ nhất (Minimum Spanning Tree) cho một đồ thị liên thông có trọng số.
C. Sắp xếp các đỉnh của một đồ thị theo thứ tự tăng dần của trọng số.
D. Kiểm tra xem một đồ thị có phải là đồ thị hai phía (bipartite) hay không.

132. 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 nhị phân tìm kiếm (Binary Search Tree)
B. Cây AVL
C. Cây B
D. Heap

133. Heap (cấu trúc dữ liệu) là gì?

A. Một mảng đã được sắp xếp.
B. Một cây nhị phân hoàn chỉnh, trong đó giá trị của mỗi nút cha lớn hơn hoặc bằng (hoặc nhỏ hơn hoặc bằng) giá trị của các nút con của nó.
C. Một danh sách liên kết đôi.
D. Một đồ thị không có chu trình.

134. Chức năng nào sau đây KHÔNG phải là một hoạt động cơ bản trên cấu trúc dữ liệu ngăn xếp (Stack)?

A. Push
B. Pop
C. Peek
D. Search

135. 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. Sắp xếp nổi bọt (Bubble Sort)
B. Sắp xếp chèn (Insertion Sort)
C. Sắp xếp chọn (Selection Sort)
D. Sắp xếp nhanh (Quick Sort)

136. Kỹ thuật ‘memoization’ thường được sử dụng để tối ưu hóa thuật toán nào?

A. Thuật toán tham lam (Greedy algorithms).
B. Thuật toán chia để trị (Divide and conquer algorithms).
C. Thuật toán quy hoạch động (Dynamic programming algorithms).
D. Thuật toán duyệt đồ thị (Graph traversal algorithms).

137. Cấu trúc dữ liệu nào sau đây là phi tuyến tính?

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

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

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)

139. Giải thuật Dijkstra được sử dụng để giải quyết vấn đề gì?

A. Tìm kiếm một phần tử trong mảng
B. Tìm đường đi ngắn nhất giữa các đỉnh trong đồ thị
C. Sắp xếp một mảng các số
D. Tìm kiếm một chuỗi con trong một chuỗi

140. Điều gì xảy ra nếu bạn cố gắng ‘pop’ một phần tử từ một ngăn xếp (Stack) trống?

A. Trả về null
B. Gây ra lỗi tràn ngăn xếp (Stack Overflow)
C. Gây ra lỗi tràn bộ nhớ (Memory Overflow)
D. Gây ra lỗi tràn dưới (Stack Underflow)

141. Độ phức tạp không gian của thuật toán sắp xếp trộn (Merge Sort) là gì?

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

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

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

143. Độ phức tạp thời gian tốt nhất của thuật toán tìm kiếm nhị phân là gì?

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

144. Khi nào nên sử dụng danh sách liên kết đơn thay vì danh sách liên kết đôi?

A. Khi cần duyệt danh sách theo cả hai hướng
B. Khi cần chèn hoặc xóa 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 một nút cụ thể nhanh chóng

145. Trong cây nhị phân hoàn chỉnh (Complete Binary Tree), số lượng nút ở mức ‘l’ là bao nhiêu?

A. l
B. 2^l
C. 2^(l-1)
D. l^2

146. Cây tìm kiếm nhị phân (Binary Search Tree) có đặc điểm gì?

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

147. Ưu điểm chính của việc sử dụng bảng băm (hash table) so với cây tìm kiếm là gì?

A. Bảng băm đảm bảo thời gian truy cập O(log n) trong trường hợp xấu nhất.
B. Bảng băm luôn sử dụng ít bộ nhớ hơn cây tìm kiếm.
C. Bảng băm thường có thời gian truy cập trung bình nhanh hơn, O(1).
D. Bảng băm có thể dễ dàng sắp xếp các phần tử theo thứ tự.

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

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

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

A. Sắp xếp chèn (Insertion Sort)
B. Địa chỉ mở (Open Addressing)
C. Tìm kiếm nhị phân (Binary Search)
D. Duyệt theo chiều rộng (Breadth-First Search)

150. Ư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 xác định trước
C. Tìm kiếm phần tử nhanh hơn
D. Sắp xếp dễ dàng hơn

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

Về Tài Liệu Trọn Đời

Tài Liệu Trọn Đời - Blog cá nhân, tài liệu học tập, khoa học, công nghệ, thủ thuật, chia sẻ mọi kiến thức, lĩnh vực khác nhau đến với bạn đọc.

Gmail: info.tailieutrondoi@gmail.com

Địa chỉ: Hồ Chí Minh, Việt Nam

Giờ làm việc: T2-CN: 09:00 – 17:00

Chịu Trách Nhiệm Nội Dung

Mọi vấn đề liên quan đến bản quyền nội dung vui lòng liên hệ qua Gmail: info.tailieutrondoi@gmail.com

Miễn Trừ Trách Nhiệm

Tài Liệu Trọn Đời - Blog được xây dựng nhằm mục đích thử nghiệm, tham khảo, hỗ trợ học tập và nghiên cứu.

Tài Liệu Trọn Đời không chịu trách nhiệm dưới bất kỳ hình thức nào đối với thiệt hại trực tiếp hoặc gián tiếp phát sinh từ việc sử dụng hoặc áp dụng các nội dung trên trang web.

Các câu hỏi và đáp án trong danh mục "Trắc nghiệm" được biên soạn nhằm mục đích hỗ trợ học tập và tra cứu thông tin. Đây KHÔNG phải là tài liệu chính thức hay đề thi do bất kỳ cơ sở giáo dục hoặc tổ chức cấp chứng chỉ chuyên ngành nào ban hành.

Website không chịu trách nhiệm về độ chính xác tuyệt đối của nội dung cũng như mọi quyết định được đưa ra từ việc sử dụng kết quả trắc nghiệm hoặc các thông tin trong bài viết trên Website.

Social

  • X
  • LinkedIn
  • Flickr
  • YouTube
  • Pinterest
Copyright © 2026 Tài Liệu Trọn Đời
Back to Top

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é.