Skip to content
Phần mềm trọn đời

Blog Cá Nhân | Kiến Thức Công Nghệ | Thủ Thuật

  • Trang chủ
    • Về chúng tôi
    • Bản quyền & Khiếu nại
    • Miễn trừ trách nhiệm
    • Quy định sử dụng
  • Kiến thức
  • Windows
  • Office
  • Game
  • Thủ thuật công nghệ
  • Hình ảnh
  • Trắc nghiệm
    • Đáp án Quiz
    • Phát triển Phần mềm và Dữ liệu Quiz
    • Hạ tầng Mạng và Quản trị Hệ thống Quiz
  • Liên hệ
  • Sitemap
  • Or check our Popular Categories...
    01680168 đổi thành đầu số gì0x0 0x01 vạn bằng bao nhiêu km1 vạn là bao nhiêu100% Full disk14/414/4 là ngày gì14/4 là ngày gì ai tặng quà cho ai
  • Trang chủ
    • Về chúng tôi
    • Bản quyền & Khiếu nại
    • Miễn trừ trách nhiệm
    • Quy định sử dụng
  • Kiến thức
  • Windows
  • Office
  • Game
  • Thủ thuật công nghệ
  • Hình ảnh
  • Trắc nghiệm
    • Đáp án Quiz
    • Phát triển Phần mềm và Dữ liệu Quiz
    • Hạ tầng Mạng và Quản trị Hệ thống Quiz
  • Liên hệ
  • Sitemap
Phần mềm trọn đời

Blog Cá Nhân | Kiến Thức Công Nghệ | Thủ Thuật

  • Or check our Popular Categories...
    01680168 đổi thành đầu số gì0x0 0x01 vạn bằng bao nhiêu km1 vạn là bao nhiêu100% Full disk14/414/4 là ngày gì14/4 là ngày gì ai tặng quà cho ai
Trang chủ » Trắc nghiệm online » Phát triển Phần mềm và Dữ liệu Quiz » 200+ câu hỏi trắc nghiệm Cấu trúc dữ liệu và giải thuật (Có đáp án)

Phát triển Phần mềm và Dữ liệu Quiz

200+ câu hỏi trắc nghiệm Cấu trúc dữ liệu và giải thuật (Có đáp án)

Ngày cập nhật: 12/07/2025

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

Đồng hành cùng bạn trong bộ 200+ câu hỏi trắc nghiệm Cấu trúc dữ liệu và giải thuật (Có đáp án). Bạn sẽ tham gia vào chuỗi câu hỏi được chọn lọc cẩn thận, giúp bạn củng cố lại kiến thức đã học. Vui lòng nhấn vào phần câu hỏi bên dưới để khởi động quá trình ôn tập của mình. Chúc bạn trải nghiệm làm bài thật vui và học thêm được nhiều điều thú vị!.

1. Độ phức tạp thời gian của thuật toán sắp xếp Heap Sort là bao nhiêu trong mọi trường hợp?

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

2. Trong thuật toán BFS (Breadth-First Search) để duyệt đồ thị, cấu trúc dữ liệu nào được sử dụng để lưu trữ các đỉnh cần được thăm kế tiếp?

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

3. Cấu trúc dữ liệu nào được sử dụng để triển khai thuật toán Floyd-Warshall, nhằm tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh trong một đồ thị có trọng số?

A. Danh sách liên kết
B. Mảng 1 chiều
C. Ma trận kề (Adjacency Matrix)
D. Heap

4. Trong một cây nhị phân, nếu một nút có hai con, thì nút đó được gọi là gì?

A. Nút lá (Leaf Node)
B. Nút trung gian (Internal Node)
C. Nút gốc (Root Node)
D. Nút con duy nhất

5. Độ phức tạp thời gian của thuật toán sắp xếp Merge Sort là bao nhiêu trong mọi trường hợp?

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

6. Khi gặp xung đột băm (hash collision) trong bảng băm, phương pháp nào sau đây thường được sử dụng để giải quyết?

A. Sắp xếp lại bảng băm
B. Sử dụng phương pháp chuỗi (chaining) hoặc dò tìm mở (open addressing)
C. Tăng kích thước bảng băm lên gấp đôi
D. Xóa bỏ phần tử bị xung đột

7. Cấu trúc dữ liệu nào cho phép truy cập phần tử cuối cùng được thêm vào một cách hiệu quả nhất?

A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Danh sách liên kết vòng
D. Heap

8. Cây nhị phân đầy đủ (Full Binary Tree) là cây mà mỗi nút có bao nhiêu con?

A. 0 hoặc 1 con
B. 0 hoặc 2 con
C. Chỉ có 2 con
D. Chỉ có 1 con

9. Cây nhị phân hoàn chỉnh (Complete Binary Tree) là cây mà tất cả các mức đều được điền đầy, ngoại trừ có thể là mức cuối cùng, và các nút ở mức cuối cùng được điền từ trái sang phải. Điều này có ý nghĩa gì đối với việc triển khai Heap?

A. Cho phép triển khai Heap hiệu quả bằng mảng
B. Yêu cầu sử dụng danh sách liên kết
C. Không ảnh hưởng đến hiệu quả triển khai Heap
D. Chỉ phù hợp cho Heap có tối đa 2^k nút

10. Cấu trúc dữ liệu nào được sử dụng để triển khai hàm băm (hashing) nhằm mục đích lưu trữ và truy xuất dữ liệu nhanh chóng dựa trên khóa?

A. Danh sách liên kết
B. Mảng
C. Bảng băm (Hash Table)
D. Heap

11. Độ phức tạp không gian (space complexity) của thuật toán QuickSort khi sử dụng đệ quy là bao nhiêu trong trường hợp tốt nhất?

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

12. Cấu trúc dữ liệu nào được sử dụng để mô tả một chuỗi các thao tác có thể được hoàn tác (undo) hoặc thực hiện lại (redo)?

A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Hai ngăn xếp (Two Stacks)
D. Deque

13. Cấu trúc dữ liệu nào phù hợp nhất để biểu diễn mối quan hệ giữa các thực thể, nơi mỗi thực thể có thể có nhiều mối liên kết với các thực thể khác, và thứ tự các liên kết không quan trọng?

A. Ngăn xếp (Stack)
B. Hàng đợi (Queue)
C. Đồ thị (Graph)
D. Cây (Tree)

14. Độ phức tạp thời gian của thuật toán sắp xếp Bubble Sort là bao nhiêu trong trường hợp tốt nhất (dữ liệu đã sắp xếp)?

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

15. Độ phức tạp thời gian của thuật toán sắp xếp QuickSort trong trường hợp xấu nhất là bao nhiêu?

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

16. Cây nhị phân tìm kiếm có thể được cân bằng hóa bằng cách sử dụng thuật toán nào để duy trì độ phức tạp O(log n) cho các phép toán?

A. QuickSort
B. Merge Sort
C. AVL Tree hoặc Red-Black Tree
D. Heapify

17. Cây nhị phân cân bằng (balanced binary tree) như AVL tree hay Red-Black tree được sử dụng để đảm bảo điều gì cho các phép toán tìm kiếm, thêm, xóa?

A. Đảm bảo tất cả các nút có cùng một mức độ sâu
B. Đảm bảo độ phức tạp thời gian là O(n) trong mọi trường hợp
C. Đảm bảo độ phức tạp thời gian là O(log n) trong mọi trường hợp
D. Giảm thiểu số lượng nút trong cây

18. Độ phức tạp thời gian của thuật toán sắp xếp Counting Sort khi phạm vi các giá trị là K và số lượng phần tử là n là bao nhiêu?

A. O(n)
B. O(K)
C. O(n + K)
D. O(n log K)

19. Trong thuật toán DFS (Depth-First Search) để duyệt đồ thị, cấu trúc dữ liệu nào được sử dụng để lưu trữ các đỉnh cần được thăm kế tiếp?

A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Heap
D. Deque

20. Trong thuật toán sắp xếp Insertion Sort, mỗi phần tử được chèn vào vị trí đúng của nó trong phần nào của mảng?

A. Phần mảng chưa được sắp xếp
B. Phần mảng đã được sắp xếp
C. Cuối mảng
D. Đầu mảng

21. Khi duyệt cây theo thứ tự trước (pre-order traversal), thứ tự các nút được truy cập là gì?

A. Nút cha, sau đó duyệt cây con bên trái, cuối cùng duyệt cây con bên phải
B. Duyệt cây con bên trái, sau đó duyệt cây con bên phải, cuối cùng là nút cha
C. Duyệt cây con bên trái, sau đó là nút cha, cuối cùng duyệt cây con bên phải
D. Duyệt cây con bên phải, sau đó là nút cha, cuối cùng duyệt cây con bên trái

22. Cấu trúc dữ liệu nào được sử dụng để biểu diễn một chuỗi các phép tính mà mỗi phép tính phụ thuộc vào kết quả của phép tính trước đó, và kết quả cuối cùng là một giá trị duy nhất?

A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Biểu thức hậu tố (Postfix Expression) hoặc biểu thức trung tố được đánh giá bằng ngăn xếp
D. Đồ thị có hướng

23. Độ phức tạp thời gian của thuật toán sắp xếp Selection Sort là bao nhiêu trong mọi trường hợp (tốt nhất, trung bình, xấu nhất)?

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

24. Trong đồ thị, thuật toán Dijkstra được sử dụng để tìm đường đi ngắn nhất từ một nút nguồn đến tất cả các nút khác, với điều kiện gì về trọng số của các cạnh?

A. Trọng số cạnh phải là số nguyên dương
B. Trọng số cạnh phải là số thực
C. Trọng số cạnh phải không âm (non-negative)
D. Trọng số cạnh có thể âm nhưng không có chu trình âm

25. Độ phức tạp thời gian cho phép toán ‘pop’ (lấy ra phần tử) trên một ngăn xếp được triển khai bằng danh sách liên kết là bao nhiêu?

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

26. Cây tìm kiếm nhị phân (Binary Search Tree – BST) có đặc điểm gì nổi bật về thứ tự các phần tử?

A. Mọi nút con bên trái lớn hơn nút cha, mọi nút con bên phải nhỏ hơn nút cha
B. Mọi nút con bên trái nhỏ hơn nút cha, mọi nút con bên phải lớn hơn nút cha
C. Cây được cân bằng hoàn hảo, chiều cao tối thiểu
D. Các phần tử được lưu trữ theo thứ tự thêm vào

27. Độ phức tạp thời gian của thuật toán sắp xếp Radix Sort phụ thuộc vào số chữ số (D) trong số lớn nhất và số lượng phần tử (n). Độ phức tạp thường là:

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

28. Cấu trúc dữ liệu nào được sử dụng để quản lý các tiến trình đang chờ CPU theo thứ tự ưu tiên, nơi tiến trình có độ ưu tiên cao nhất sẽ được xử lý trước?

A. Hàng đợi FIFO
B. Ngăn xếp LIFO
C. Hàng đợi ưu tiên (Priority Queue)
D. Bảng băm

29. Trong duyệt cây theo thứ tự giữa (in-order traversal), thứ tự các nút được truy cập là gì đối với một cây tìm kiếm nhị phân?

A. Nút cha, cây con trái, cây con phải
B. Cây con trái, nút cha, cây con phải
C. Cây con phải, nút cha, cây con trái
D. Cây con trái, cây con phải, nút cha

30. Trong thuật toán sắp xếp Merge Sort, quá trình kết hợp (merge) hai mảng con đã sắp xếp có độ phức tạp thời gian là bao nhiêu?

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

31. Trong các cấu trúc dữ liệu sau, cấu trúc nào được sử dụng để triển khai hàng đợi ưu tiên (priority queue) hiệu quả nhất về mặt thời gian cho các phép toán thêm và xóa phần tử có độ ưu tiên cao nhất?

A. Danh sách liên kết đôi
B. Mảng tĩnh
C. Heap nhị phân (Binary Heap)
D. Cây tìm kiếm nhị phân cân bằng (Balanced Binary Search Tree)

32. Độ phức tạp thời gian của thuật toán sắp xếp Insertion Sort là bao nhiêu trong trường hợp xấu nhất?

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

33. Khi duyệt cây theo thứ tự sau (post-order traversal), thứ tự các nút được truy cập là gì?

A. Nút cha, cây con trái, cây con phải
B. Cây con trái, nút cha, cây con phải
C. Cây con trái, cây con phải, nút cha
D. Cây con phải, cây con trái, nút cha

34. Cấu trúc dữ liệu nào phù hợp nhất để lưu trữ một tập hợp các phần tử duy nhất, không có thứ tự và hỗ trợ các phép toán như thêm, xóa, kiểm tra sự tồn tại một cách hiệu quả?

A. Danh sách liên kết
B. Mảng
C. Tập hợp (Set), thường được triển khai bằng bảng băm hoặc cây cân bằng
D. Hàng đợi ưu tiên

35. Độ phức tạp thời gian của thuật toán sắp xếp Insertion Sort trong trường hợp tốt nhất (dữ liệu đã sắp xếp) là bao nhiêu?

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

36. Cấu trúc dữ liệu nào được sử dụng để lưu trữ các hàm đang chờ được thực thi theo thứ tự FIFO (First-In, First-Out)?

A. Ngăn xếp (Stack)
B. Hàng đợi (Queue)
C. Heap
D. Deque

37. Trong thuật toán tìm kiếm nhị phân (Binary Search), điều kiện tiên quyết để thuật toán hoạt động hiệu quả là gì?

A. Mảng phải được sắp xếp theo thứ tự giảm dần
B. Mảng phải được sắp xếp theo thứ tự tăng dần hoặc giảm dần
C. Mảng không cần sắp xếp
D. Mảng phải có kích thước là lũy thừa của 2

38. Độ phức tạp thời gian của thuật toán sắp xếp Shell Sort phụ thuộc vào chuỗi các bước nhảy (gap sequence) được sử dụng, nhưng nó thường hiệu quả hơn Insertion Sort và QuickSort trong một số trường hợp. Trong các trường hợp thông thường, nó có độ phức tạp gần với:

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

39. Cấu trúc dữ liệu nào là phù hợp nhất để lưu trữ các phần tử theo thứ tự, cho phép thêm và xóa phần tử ở cả hai đầu (đầu và cuối) một cách hiệu quả?

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

40. Trong một đồ thị có hướng, cạnh (u, v) có nghĩa là gì?

A. Có một liên kết từ v đến u
B. Có một liên kết từ u đến v
C. Có một liên kết hai chiều giữa u và v
D. Không có liên kết nào giữa u và v

41. Cấu trúc dữ liệu nào sau đây phù hợp để quản lý các tác vụ cần được thực thi theo thứ tự ưu tiên?

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

42. Khi xảy ra va chạm (collision) trong Hash Table, phương pháp ‘mở rộng địa chỉ’ (open addressing) có thể sử dụng kỹ thuật nào sau đây?

A. Tạo một danh sách liên kết tại mỗi ô của mảng băm.
B. Dò tuyến tính (Linear Probing).
C. Dò bình phương (Quadratic Probing).
D. Cả B và C.

43. Độ phức tạp thời gian của thao tác thêm một phần tử vào cuối một danh sách liên kết đơn (Singly Linked List) là bao nhiêu, nếu ta đã có con trỏ đến nút cuối cùng?

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

44. Khi phân tích độ phức tạp thời gian của một thuật toán, ký hiệu ‘O’ (Big O) biểu thị điều gì?

A. Độ phức tạp thời gian tốt nhất của thuật toán.
B. Độ phức tạp thời gian trung bình của thuật toán.
C. Độ phức tạp thời gian xấu nhất của thuật toán.
D. Độ phức tạp không gian của thuật toán.

45. Cấu trúc dữ liệu nào cho phép truy cập phần tử dựa trên khóa (key) mà không cần sắp xếp trước?

A. Mảng (Array).
B. Danh sách liên kết (Linked List).
C. Hash Table.
D. Heap.

46. Độ phức tạp thời gian của việc xóa một phần tử khỏi đỉnh của một ngăn xếp (Stack) là bao nhiêu?

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

47. Cây nhị phân cân bằng (Balanced Binary Tree) giúp cải thiện hiệu suất của các thao tác như tìm kiếm, chèn và xóa bằng cách nào?

A. Giảm chiều cao của cây xuống O(n).
B. Đảm bảo chiều cao của cây là O(log n).
C. Tăng số lượng nút con cho mỗi nút.
D. Sử dụng bảng băm để lưu trữ các nút.

48. Độ phức tạp thời gian của thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp là bao nhiêu?

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

49. Cấu trúc dữ liệu nào sau đây cung cấp khả năng truy cập các phần tử theo thứ tự tăng dần hoặc giảm dần một cách hiệu quả?

A. Ngăn xếp (Stack).
B. Hash Table.
C. Cây nhị phân tìm kiếm cân bằng (Balanced BST).
D. Hàng đợi (Queue).

50. Cây nhị phân tìm kiếm (Binary Search Tree – BST) có đặc điểm gì về thứ tự các nút?

A. Tất cả các nút con bên trái có giá trị lớn hơn nút cha, tất cả các nút con bên phải có giá trị nhỏ hơn nút cha.
B. Tất cả các nút con bên trái có giá trị nhỏ hơn nút cha, tất cả các nút con bên phải có giá trị lớn hơn nút cha.
C. Các nút được sắp xếp theo thứ tự thêm vào.
D. Không có quy tắc sắp xếp cố định giữa nút cha và nút con.

51. Cấu trúc dữ liệu nào là lựa chọn tốt nhất để lưu trữ một tập hợp các phần tử duy nhất, không cho phép trùng lặp?

A. Danh sách liên kết (Linked List).
B. Mảng (Array).
C. Set (Tập hợp).
D. Hàng đợi (Queue).

52. Độ phức tạp thời gian của thao tác xóa một phần tử từ một danh sách liên kết đơn (Singly Linked List), khi ta có con trỏ đến nút ngay trước nút cần xóa, là bao nhiêu?

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

53. Độ phức tạp thời gian của việc tìm kiếm một khóa trong một bảng băm (Hash Table) với phương pháp chuỗi băm (Separate Chaining) và giả định hàm băm phân phối đều các khóa là bao nhiêu?

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

54. Độ phức tạp thời gian trung bình của thao tác tìm kiếm trong một cây nhị phân tìm kiếm cân bằng (Balanced Binary Search Tree) là bao nhiêu?

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

55. Cấu trúc dữ liệu nào sau đây cho phép truy cập phần tử theo chỉ số (index) một cách hiệu quả nhất?

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

56. Độ phức tạp thời gian của việc thêm một phần tử vào đầu một danh sách liên kết đôi (Doubly Linked List) là bao nhiêu?

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

57. Độ phức tạp thời gian của thuật toán sắp xếp vun đống (Heap Sort) là bao nhiêu?

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

58. Hash collision trong Hash Table có nghĩa là gì?

A. Hai khóa khác nhau được ánh xạ tới cùng một chỉ số.
B. Hai khóa giống nhau được ánh xạ tới hai chỉ số khác nhau.
C. Mảng băm đã đầy hoàn toàn.
D. Hàm băm không hoạt động.

59. Trong thuật toán sắp xếp trộn (Merge Sort), quá trình ‘trộn’ (merge) hai mảng con đã sắp xếp hoạt động như thế nào?

A. So sánh và chèn phần tử nhỏ nhất từ hai mảng vào mảng kết quả.
B. So sánh và chèn phần tử lớn nhất từ hai mảng vào mảng kết quả.
C. Ghép hai mảng con lại mà không cần so sánh.
D. Sắp xếp lại toàn bộ mảng sau khi ghép.

60. Khi xem xét độ phức tạp thời gian của một thuật toán đệ quy, phương pháp nào thường được sử dụng để giải quyết?

A. Biểu đồ trạng thái (State Diagram).
B. Định lý Master (Master Theorem).
C. Biểu đồ Gantt (Gantt Chart).
D. Biểu đồ lớp (Class Diagram).

61. Độ 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 mảng đã được sắp xếp là bao nhiêu?

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

62. Trong thuật toán sắp xếpInserion Sort, tại sao mỗi lần lặp lại cần so sánh phần tử hiện tại với các phần tử đứng trước nó?

A. Để tìm phần tử lớn nhất.
B. Để tìm phần tử nhỏ nhất.
C. Để tìm vị trí đúng và chèn phần tử hiện tại vào đó, giữ cho phần trước đó luôn được sắp xếp.
D. Để loại bỏ các phần tử trùng lặp.

63. Hash Table (Bảng băm) sử dụng hàm băm (hash function) để làm gì?

A. Sắp xếp dữ liệu theo thứ tự tăng dần.
B. Liên kết các khóa (keys) với các chỉ số (indices) trong mảng.
C. Tạo một cấu trúc cây.
D. Quản lý thứ tự thêm vào các phần tử.

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

A. Ngăn xếp (Stack).
B. Cây nhị phân tìm kiếm (Binary Search Tree).
C. Hàng đợi (Queue).
D. Heap.

65. Cấu trúc dữ liệu nào thường được sử dụng để triển khai các thuật toán tìm kiếm trên cây, chẳng hạn như duyệt cây theo chiều sâu (DFS)?

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

66. Độ phức tạp thời gian của thuật toán sắp xếp trộn (Merge Sort) là bao nhiêu trong mọi trường hợp?

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

67. Trong thuật toán Quick Sort, việc chọn ‘chốt’ (pivot) có ảnh hưởng đến điều gì?

A. Chỉ ảnh hưởng đến độ phức tạp không gian.
B. Ảnh hưởng lớn đến hiệu suất, đặc biệt là trong trường hợp xấu nhất.
C. Không ảnh hưởng đến hiệu suất, chỉ là quy ước.
D. Chỉ ảnh hưởng đến việc phân chia mảng ban đầu.

68. 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. Ngăn xếp (Stack).
C. Cây tìm kiếm nhị phân (Binary Search Tree).
D. Heap.

69. Cấu trúc dữ liệu nào sau đây là phù hợp nhất để duyệt qua tất cả các nút của một cây theo thứ tự từ trái sang phải, bắt đầu từ gốc và thăm tất cả các nút ở một mức trước khi chuyển sang mức tiếp theo?

A. Duyệt theo chiều sâu (Depth-First Search – DFS).
B. Duyệt theo chiều rộng (Breadth-First Search – BFS).
C. Duyệt tiền thứ tự (Pre-order Traversal).
D. Duyệt hậu thứ tự (Post-order Traversal).

70. Trong thuật toán sắp xếp chọn (Selection Sort), mỗi lần lặp qua mảng sẽ tìm kiếm điều gì?

A. Phần tử lớn nhất và đặt nó vào cuối.
B. Phần tử nhỏ nhất và đặt nó vào đầu phần chưa sắp xếp.
C. Phần tử ngẫu nhiên để chia mảng.
D. Cặp phần tử liền kề sai thứ tự.

71. Trong một đồ thị có hướng (Directed Graph), cạnh có hướng biểu thị điều gì?

A. Mối quan hệ hai chiều giữa hai đỉnh.
B. Mối quan hệ một chiều từ đỉnh này sang đỉnh khác.
C. Trọng số của các đỉnh.
D. Không có mối quan hệ giữa các đỉnh.

72. Cấu trúc dữ liệu nào thường được sử dụng để triển khai thuật toán Dijkstra tìm đường đi ngắn nhất?

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

73. Cấu trúc dữ liệu nào là lựa chọn tốt nhất để biểu diễn một tập hợp các phần tử mà thứ tự truy cập không quan trọng, và hiệu suất cho thao tác thêm, xóa, tìm kiếm là quan trọng?

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

74. Cấu trúc dữ liệu nào sau đây có thể được triển khai bằng cách sử dụng mảng và con trỏ?

A. Cây nhị phân (Binary Tree).
B. Đồ thị (Graph).
C. Danh sách liên kết (Linked List).
D. Tất cả các lựa chọn trên.

75. Cấu trúc dữ liệu nào phù hợp nhất để biểu diễn mối quan hệ giữa các đối tượng, ví dụ như mạng xã hội?

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

76. Cấu trúc dữ liệu nào thường được sử dụng để biểu diễn hệ thống phân cấp, ví dụ như cấu trúc thư mục của hệ điều hành?

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

77. Trong thuật toán sắp xếp nổi bọt (Bubble Sort), mỗi lần lặp qua mảng sẽ đảm bảo điều gì?

A. Phần tử nhỏ nhất được đặt vào vị trí đầu tiên.
B. Phần tử lớn nhất chưa được sắp xếp được đặt vào vị trí cuối cùng của phần chưa sắp xếp.
C. Mảng được chia đôi.
D. Phần tử được chọn ngẫu nhiên được đặt vào vị trí đúng.

78. Trong thuật toán sắp xếp nhanh (Quick Sort), ‘phân hoạch’ (partition) là bước dùng để làm gì?

A. Chia mảng thành hai nửa gần bằng nhau.
B. Đảm bảo phần tử ‘chốt’ nằm ở vị trí cuối cùng.
C. Sắp xếp lại các phần tử sao cho các phần tử nhỏ hơn ‘chốt’ nằm trước nó, và các phần tử lớn hơn nằm sau nó.
D. Hoán đổi các phần tử liền kề nếu sai thứ tự.

79. Cấu trúc dữ liệu nào sau đây phù hợp nhất để mô phỏng hoạt động của một máy ảo stack (stack machine)?

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

80. Trong thuật toán sắp xếp vun đống (Heap Sort), bước ‘vun đống’ (heapify) có vai trò gì?

A. Đảm bảo mảng được sắp xếp theo thứ tự tăng dần.
B. Xây dựng một cấu trúc heap từ mảng chưa sắp xếp.
C. Chèn một phần tử mới vào heap.
D. Tìm kiếm một phần tử trong heap.

81. Cây tìm kiếm nhị phân (Binary Search Tree – BST) có đặc điểm gì về cách tổ chức các nút?

A. Mọi nút con bên trái có giá trị lớn hơn nút cha, mọi nút con bên phải có giá trị nhỏ hơn nút cha.
B. Mọi nút con bên trái có giá trị nhỏ hơn nút cha, mọi nút con bên phải có giá trị lớn hơn nút cha.
C. Các nút được sắp xếp theo thứ tự ngẫu nhiên.
D. Tất cả các nút con đều có giá trị bằng nút cha.

82. Khi thực hiện thao tác ‘xóa’ (delete) một phần tử khỏi một cây nhị phân tìm kiếm (BST) có nhiều nút, trường hợp nào sau đây là phức tạp nhất để xử lý?

A. Xóa một nút lá (leaf node).
B. Xóa một nút chỉ có một con.
C. Xóa một nút có cả hai con.
D. Xóa nút gốc (root node).

83. Cấu trúc dữ liệu nào sau đây phù hợp nhất để lưu trữ một tập hợp các phần tử duy nhất, không có thứ tự và cho phép kiểm tra sự tồn tại của một phần tử một cách hiệu quả?

A. Array (Mảng)
B. Linked List (Danh sách liên kết)
C. Set (Tập hợp, thường triển khai bằng Hash Table hoặc BST)
D. Queue (Hàng đợi)

84. Cấu trúc dữ liệu nào sau đây được sử dụng phổ biến để lưu trữ các cặp khóa-giá trị (key-value pairs) và cho phép truy cập nhanh vào giá trị dựa trên khóa?

A. Array (Mảng)
B. Stack (Ngăn xếp)
C. Hash Table (Bảng băm) hoặc Dictionary/Map
D. Queue (Hàng đợi)

85. Độ phức tạp thời gian của thuật toán duyệt theo chiều rộng (Breadth-First Search – BFS) trên một đồ thị có V đỉnh và E cạnh là bao nhiêu?

A. O(V)
B. O(E)
C. O(V + E)
D. O(V * E)

86. Độ phức tạp không gian (space complexity) của thuật toán sắp xếp nổi bọt (bubble sort) khi nó được triển khai trực tiếp (in-place) là bao nhiêu?

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

87. Độ phức tạp thời gian trung bình (average-case time complexity) của thao tác ‘thêm’, ‘xóa’, ‘tìm kiếm’ trong một bảng băm (hash table) với hàm băm tốt và ít xung đột là bao nhiêu?

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

88. Trong một cây nhị phân cân bằng (balanced binary tree) như AVL tree hoặc Red-Black tree, độ phức tạp thời gian cho các thao tác chèn, xóa và tìm kiếm là bao nhiêu?

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

89. Trong các cấu trúc dữ liệu sau đây, cấu trúc nào cho phép truy cập vào phần tử ‘đầu tiên’ (first-in) một cách hiệu quả nhất, thường được sử dụng trong việc quản lý các tác vụ cần xử lý theo thứ tự đến trước được phục vụ trước (FIFO)?

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)

90. Cấu trúc dữ liệu nào sau đây sử dụng các ‘bucket’ (thùng chứa) để lưu trữ các phần tử và sử dụng một ‘hàm băm’ (hash function) để tính toán chỉ mục của bucket cho mỗi phần tử?

A. Array (Mảng)
B. Linked List (Danh sách liên kết)
C. Hash Table (Bảng băm)
D. Heap (Đống)

91. Trong thuật toán sắp xếp nhanh (quick sort), vị trí của ‘pivot’ sau một lần phân hoạch (partition) có đặc điểm gì?

A. Pivot luôn ở vị trí đầu tiên của mảng.
B. Pivot luôn ở vị trí cuối cùng của mảng.
C. Pivot nằm ở vị trí cuối cùng của nó trong mảng đã sắp xếp.
D. Pivot nằm ở vị trí ngẫu nhiên.

92. Khi sử dụng phương pháp đệ quy để giải quyết một bài toán, điều gì xảy ra nếu không có điều kiện dừng (base case) hoặc điều kiện dừng không bao giờ được đáp ứng?

A. Thuật toán sẽ chạy nhanh hơn.
B. Chương trình sẽ bị lỗi tràn bộ nhớ (stack overflow).
C. Chương trình sẽ trả về kết quả đúng sớm hơn.
D. Chương trình sẽ tự động chuyển sang phương pháp lặp.

93. Khi thực hiện thao tác ‘xóa’ (delete) một phần tử khỏi danh sách liên kết đơn (singly linked list) mà bạn đã có con trỏ trỏ đến phần tử ngay trước phần tử cần xóa, độ phức tạp thời gian của thao tác này là bao nhiêu?

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

94. Cấu trúc dữ liệu nào sau đây là tốt nhất để triển khai hàng đợi ưu tiên (priority queue), nơi các phần tử được lấy ra dựa trên mức độ ưu tiên của chúng?

A. Linked List (Danh sách liên kết)
B. Binary Search Tree (Cây tìm kiếm nhị phân)
C. Heap (Đống)
D. Stack (Ngăn xếp)

95. Cấu trúc dữ liệu nào sau đây có thể được sử dụng để biểu diễn một mạng lưới phức tạp, nơi các nút có thể kết nối với nhau theo nhiều cách khác nhau và không nhất thiết theo một thứ tự phân cấp?

A. Array (Mảng)
B. Stack (Ngăn xếp)
C. Queue (Hàng đợi)
D. Graph (Đồ thị)

96. Cấu trúc dữ liệu nào sử dụng nguyên tắc LIFO (Last-In, First-Out), nghĩa là phần tử được thêm vào sau cùng sẽ được lấy ra đầu tiên?

A. Queue (Hàng đợi)
B. Stack (Ngăn xếp)
C. Hash Table (Bảng băm)
D. Graph (Đồ thị)

97. Độ phức tạp thời gian của thuật toán sắp xếp chèn (insertion sort) trên một mảng đã được sắp xếp theo thứ tự tăng dần là bao nhiêu?

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

98. Cấu trúc dữ liệu nào sau đây là một biến thể của danh sách liên kết, cho phép mỗi nút có thể có nhiều hơn hai con trỏ, mỗi con trỏ trỏ đến một nút con khác?

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. Tree (Cây) hoặc Trie (Cây tiền tố)
D. Graph (Đồ thị)

99. Khi thực hiện thao tác ‘thêm’ (insertion) một phần tử vào một danh sách liên kết vòng (circular linked list), nếu bạn đã có con trỏ trỏ đến phần tử cuối cùng, độ phức tạp thời gian của thao tác này là bao nhiêu?

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

100. Độ phức tạp thời gian (time complexity) của thao tác ‘tìm kiếm’ (search) trong một mảng đã sắp xếp (sorted array) bằng thuật toán tìm kiếm nhị phân (binary search) là bao nhiêu?

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

101. 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, ví dụ như cây thư mục trong hệ điều hành hoặc sơ đồ tổ chức?

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

102. Trong một cây nhị phân, ‘chiều cao’ (height) của một nút được định nghĩa như thế nào?

A. Số lượng cạnh trên đường đi từ nút gốc đến nút đó.
B. Số lượng nút trên đường đi dài nhất từ nút đó đến một nút lá.
C. Số lượng nút con của nút đó.
D. Tổng số nút trong cây.

103. Độ phức tạp thời gian của thuật toán sắp xếp trộn (merge sort) khi chia mảng thành các mảng con và sắp xếp đệ quy, sau đó trộn các mảng con đã sắp xếp lại với nhau là bao nhiêu?

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

104. Cấu trúc dữ liệu nào sau đây thường được sử dụng để lưu trữ các bước trong một quy trình hoặc một chuỗi các hành động mà ta muốn có thể hoàn tác (undo)?

A. Queue (Hàng đợi)
B. Hash Table (Bảng băm)
C. Stack (Ngăn xếp)
D. Graph (Đồ thị)

105. Cấu trúc dữ liệu nào sau đây phù hợp nhất để lưu trữ một chuỗi ký tự hoặc một dãy các phần tử có thể truy cập theo chỉ số?

A. Hash Table (Bảng băm)
B. Array (Mảng) hoặc String (Chuỗi ký tự)
C. Queue (Hàng đợi)
D. Stack (Ngăn xếp)

106. Độ phức tạp thời gian của thuật toán sắp xếp trộn (merge sort) là bao nhiêu trong cả trường hợp tốt nhất, trung bình và xấu nhất?

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

107. Cấu trúc dữ liệu nào sau đây là một tập hợp các nút được sắp xếp theo quy tắc ‘cha luôn lớn hơn hoặc bằng các con’ (max-heap) hoặc ‘cha luôn nhỏ hơn hoặc bằng các con’ (min-heap)?

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

108. Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (linear search) trên một mảng không sắp xếp là bao nhiêu?

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

109. Trong cấu trúc dữ liệu cây hai lá phân (Binary Tree), ‘độ sâu’ (depth) của một nút được định nghĩa như thế nào?

A. Số lượng nút con của nút đó.
B. Số lượng cạnh trên đường đi từ nút gốc đến nút đó.
C. Số lượng nút trên đường đi từ nút đó đến lá sâu nhất.
D. Tổng số nút trong cây.

110. Khi áp dụng thuật toán sắp xếp chèn (insertion sort) trên một mảng đã được sắp xếp theo thứ tự giảm dần, độ phức tạp thời gian sẽ là bao nhiêu?

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

111. Trong thuật toán sắp xếp nổi bọt (bubble sort), mỗi lượt đi (pass) qua mảng đảm bảo điều gì?

A. Phần tử nhỏ nhất được đặt vào vị trí đúng.
B. Phần tử lớn nhất chưa được sắp xếp được đặt vào vị trí cuối cùng của phần chưa sắp xếp.
C. Hai phần tử ngẫu nhiên được hoán đổi.
D. Mảng được chia đôi.

112. Độ phức tạp thời gian của thuật toán sắp xếp vun đống (heap sort) là bao nhiêu trong tất cả các trường hợp (tốt nhất, trung bình, xấu nhất)?

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

113. Cấu trúc dữ liệu nào sau đây cho phép tìm kiếm, thêm và xóa phần tử với độ phức tạp thời gian trung bình là O(1) bằng cách sử dụng một hàm băm để ánh xạ khóa tới chỉ mục của mảng?

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

114. Cấu trúc dữ liệu nào sau đây cho phép thêm và xóa phần tử ở cả hai đầu một cách hiệu quả?

A. Queue (Hàng đợi)
B. Stack (Ngăn xếp)
C. Deque (Double-Ended Queue – Hàng đợi hai đầu)
D. Tree (Cây)

115. Cấu trúc dữ liệu nào sau đây có thể được sử dụng để mô phỏng hành vi của ngăn xếp (stack) hoặc hàng đợi (queue) tùy thuộc vào cách truy cập các phần tử?

A. Hash Table (Bảng băm)
B. Array (Mảng) hoặc Linked List (Danh sách liên kết)
C. Graph (Đồ thị)
D. Tree (Cây)

116. Độ phức tạp thời gian của thuật toán duyệt theo chiều sâu (Depth-First Search – DFS) trên một đồ thị có V đỉnh và E cạnh là bao nhiêu?

A. O(V)
B. O(E)
C. O(V + E)
D. O(V * E)

117. Độ phức tạp thời gian của thuật toán sắp xếp vun đống (heap sort) khi xây dựng heap ban đầu từ mảng là bao nhiêu?

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

118. Khi thực hiện thao tác ‘thêm’ (insertion) một phần tử vào bảng băm (hash table) với độ phân giải xung đột bằng cách nối chuỗi (separate chaining), trong trường hợp xấu nhất (worst-case scenario), độ phức tạp thời gian có thể là bao nhiêu nếu có ‘k’ phần tử trong cùng một chuỗi?

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

119. Cấu trúc dữ liệu nào sau đây có thể được sử dụng để biểu diễn một đồ thị (graph), nơi mỗi đỉnh có thể có nhiều cạnh kết nối đến các đỉnh khác?

A. Stack (Ngăn xếp)
B. Queue (Hàng đợi)
C. Hash Table (Bảng băm)
D. Adjacency List (Danh sách kề) hoặc Adjacency Matrix (Ma trận kề)

120. Độ phức tạp thời gian của thuật toán sắp xếp chọn (selection sort) là bao nhiêu trong tất cả các trường hợp (tốt nhất, trung bình, xấu nhất)?

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

121. Khi duyệt cây theo thứ tự trước (pre-order traversal), thứ tự các nút được truy cập là gì?

A. Trái, Phải, Gốc
B. Gốc, Trái, Phải
C. Gốc, Phải, Trái
D. Trái, Gốc, Phải

122. Độ phức tạp không gian (space complexity) của thuật toán sắp xếp Insertion Sort là bao nhiêu?

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

123. Một bảng băm sử dụng phương pháp ‘xích nối’ (chaining) để giải quyết xung đột. Nếu có một lượng lớn các khóa có cùng giá trị băm, điều gì có thể xảy ra?

A. Hiệu suất của bảng băm sẽ tăng lên.
B. Độ phức tạp của các thao tác sẽ giảm xuống.
C. Các danh sách xích nối sẽ trở nên rất dài, làm giảm hiệu suất.
D. Bảng băm sẽ tự động sắp xếp lại.

124. Trong một đồ thị không có hướng (undirected graph), một cạnh nối hai nút A và B có ý nghĩa gì?

A. Chỉ có thể đi từ A đến B.
B. Chỉ có thể đi từ B đến A.
C. Có thể đi từ A đến B và từ B đến A.
D. A và B là hai nút độc lập.

125. Một bảng băm (hash table) sử dụng phương pháp giải quyết xung đột ‘mở rộng địa chỉ’ (open addressing) với kỹ thuật ‘tìm kiếm tuyến tính’ (linear probing). Nếu bảng có 7 ô và các khóa 10, 22, 31, 4, 15, 28, 17 được chèn vào theo thứ tự, giả sử hàm băm là h(k) = k mod 7. Số lần va chạm (collision) xảy ra trong quá trình chèn là bao nhiêu?

A. 2
B. 3
C. 4
D. 1

126. Cấu trúc dữ liệu nào là phù hợp nhất để mô phỏng hoạt động của một ngăn xếp (stack)?

A. Hàng đợi (Queue)
B. Danh sách liên kết đơn
C. Cây nhị phân
D. Cả 2 và 3

127. Độ phức tạp thời gian của thuật toán sắp xếp Radix Sort là bao nhiêu, với N là số phần tử và D là số chữ số của số lớn nhất?

A. O(N)
B. O(N log N)
C. O(N * D)
D. O(D)

128. Một cây nhị phân tìm kiếm (Binary Search Tree – BST) có N nút. Số lượng nút tối đa trong cây có thể là bao nhiêu nếu cây đó là cây hoàn chỉnh (complete binary tree)?

A. N
B. 2^N – 1
C. N/2
D. 2^N

129. Trong các cấu trúc dữ liệu sau đây, cấu trúc nào thường được sử dụng để triển khai hàng đợi ưu tiên (priority queue) hiệu quả nhất về mặt thời gian cho các thao tác chèn và xóa phần tử nhỏ nhất?

A. Danh sách liên kết đơn
B. Mảng động
C. Heap nhị phân (Binary Heap)
D. Cây tìm kiếm nhị phân cân bằng (Balanced Binary Search Tree)

130. Độ phức tạp thời gian của thuật toán QuickSort trong trường hợp tốt nhất và trung bình là bao nhiêu?

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

131. Một cây nhị phân là cây nhị phân tìm kiếm (BST) nếu và chỉ nếu điều kiện nào sau đây được thỏa mãn cho mọi nút trong cây?

A. Tất cả các nút con bên trái có giá trị lớn hơn nút cha, và tất cả các nút con bên phải có giá trị nhỏ hơn nút cha.
B. Tất cả các nút con bên trái có giá trị nhỏ hơn nút cha, và tất cả các nút con bên phải có giá trị lớn hơn nút cha.
C. Giá trị của nút cha luôn nằm giữa giá trị của nút con bên trái và nút con bên phải.
D. Cây phải cân bằng.

132. Trong thuật toán sắp xếp Merge Sort, bước ‘merge’ (trộn) có độ phức tạp thời gian là bao nhiêu, với hai mảng con có tổng cộng N phần tử?

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

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

A. Cây nhị phân
B. Đồ thị
C. Mảng
D. Heap

134. Cấu trúc dữ liệu nào phù hợp nhất để triển khai một hàng đợi ưu tiên (priority queue) sử dụng phương pháp ‘mảng đã sắp xếp’ (sorted array)?

A. Chèn mất O(1), xóa mất O(n).
B. Chèn mất O(n), xóa mất O(1).
C. Chèn mất O(log n), xóa mất O(log n).
D. Chèn mất O(n), xóa mất O(n).

135. Trong thuật toán QuickSort, bước ‘partition’ (phân hoạch) có độ phức tạp thời gian là bao nhiêu?

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

136. Khi duyệt cây theo thứ tự sau (post-order traversal), thứ tự các nút được truy cập là gì?

A. Gốc, Trái, Phải
B. Trái, Phải, Gốc
C. Gốc, Phải, Trái
D. Trái, Gốc, Phải

137. Cấu trúc dữ liệu nào là một cấu trúc dữ liệu phi tuyến tính?

A. Danh sách liên kết
B. Mảng
C. Ngăn xếp
D. Cây

138. Trong cấu trúc dữ liệu đồ thị, một cạnh có hướng (directed edge) từ nút A đến nút B có nghĩa là gì?

A. Có thể đi từ A đến B và từ B đến A.
B. Chỉ có thể đi từ B đến A.
C. Chỉ có thể đi từ A đến B.
D. A và B là hai nút độc lập.

139. Độ phức tạp thời gian của thuật toán tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp là bao nhiêu?

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

140. Độ phức tạp thời gian của thuật toán sắp xếp Counting Sort là bao nhiêu nếu K là phạm vi của các giá trị đầu vào (ví dụ: 0 đến K)?

A. O(n)
B. O(n log n)
C. O(n + K)
D. O(K)

141. Một bảng băm sử dụng ‘mở rộng địa chỉ’ với ‘tìm kiếm bậc hai’. Nếu bảng có kích thước M và c1=c2=1, thì sau bao nhiêu lần dò tìm tối đa để tìm một ô trống hoặc phần tử cần tìm?

A. M
B. M/2
C. log M
D. Không đảm bảo tìm thấy ô trống.

142. Độ phức tạp thời gian của thuật toán Insertion Sort khi dữ liệu đầu vào đã được sắp xếp là bao nhiêu?

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

143. Một bảng băm sử dụng phương pháp ‘mở rộng địa chỉ’ (open addressing) với kỹ thuật ‘tìm kiếm bậc hai’ (quadratic probing). Nếu một va chạm xảy ra tại vị trí h(k), các vị trí tiếp theo được thăm sẽ là gì? (giả sử c1 và c2 là các hằng số dương)

A. h(k) + i (với i = 1, 2, 3, …)
B. h(k) + c1 * i + c2 * i^2 (với i = 1, 2, 3, …)
C. h(k) + i^2 (với i = 1, 2, 3, …)
D. h(k) + i mod M (với i = 1, 2, 3, …)

144. Độ phức tạp thời gian của thuật toán sắp xếp QuickSort khi trường hợp xấu nhất xảy ra (ví dụ: mảng đã được sắp xếp hoặc sắp xếp ngược) là bao nhiêu?

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

145. Cấu trúc dữ liệu nào phù hợp nhất để triển khai thuật toán tìm kiếm theo chiều sâu (Depth-First Search – DFS)?

A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Heap
D. Cây nhị phân

146. Cấu trúc dữ liệu nào thường được sử dụng để triển khai thuật toán tìm kiếm theo chiều rộng (Breadth-First Search – BFS)?

A. Ngăn xếp (Stack)
B. Heap
C. Hàng đợi (Queue)
D. Cây nhị phân

147. Trong thuật toán Dijkstra để tìm đường đi ngắn nhất, cấu trúc dữ liệu nào thường được sử dụng để lưu trữ các nút cần thăm và ưu tiên nút có khoảng cách nhỏ nhất?

A. Ngăn xếp (Stack)
B. Hàng đợi (Queue)
C. Heap ưu tiên (Priority Queue)
D. Mảng

148. Độ phức tạp thời gian của thuật toán sắp xếp Insertion Sort là bao nhiêu trong trường hợp xấu nhất (dữ liệu sắp xếp ngược)?

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

149. Khi duyệt cây theo thứ tự giữa (in-order traversal) một cây nhị phân không phải là cây tìm kiếm, thứ tự các nút được truy cập là gì?

A. Tăng dần
B. Giảm dần
C. Không xác định theo một quy luật nhất quán
D. Gốc, Trái, Phải

150. Trong một cây nhị phân, số lượng nút có hai con là bao nhiêu nếu cây có tổng cộng N nút và N_0 nút lá, N_1 nút có một con?

A. N_0 – 1
B. N_1
C. N_0 + N_1 – 1
D. N_1 – 1

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

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

152. Một mảng được sắp xếp theo thứ tự giảm dần. Bạn muốn tìm kiếm một phần tử bằng tìm kiếm nhị phân. Bạn cần làm gì trước tiên?

A. Đảo ngược mảng để nó tăng dần.
B. Sử dụng tìm kiếm tuyến tính.
C. Áp dụng tìm kiếm nhị phân trực tiếp.
D. Sắp xếp lại mảng theo thứ tự tăng dần.

153. Độ phức tạp thời gian của thuật toán sắp xếp Selection Sort là bao nhiêu trong mọi trường hợp (tốt nhất, trung bình, xấu nhất)?

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

154. Độ phức tạp thời gian của thuật toán Bubble Sort là bao nhiêu trong trường hợp tốt nhất (dữ liệu đã sắp xếp)?

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

155. Khi duyệt cây theo thứ tự giữa (in-order traversal) một cây nhị phân tìm kiếm (BST), các nút sẽ được duyệt theo thứ tự nào?

A. Giảm dần
B. Tăng dần
C. Ngẫu nhiên
D. Theo thứ tự gốc, trái, phải

156. Cấu trúc dữ liệu nào thường được sử dụng để triển khai cây AVL (AVL Tree)?

A. Mảng
B. Danh sách liên kết
C. Cây nhị phân tìm kiếm (Binary Search Tree)
D. Heap

157. Cấu trúc dữ liệu nào là phù hợp nhất để lưu trữ một tập hợp các phần tử duy nhất, hỗ trợ hiệu quả các thao tác thêm, xóa và kiểm tra sự tồn tại?

A. Mảng
B. Danh sách liên kết
C. Bảng băm (Hash Table) hoặc Cây nhị phân tìm kiếm cân bằng
D. Hàng đợi

158. Cấu trúc dữ liệu nào phù hợp nhất để lưu trữ một danh sách các phần tử mà việc thêm và xóa phần tử ở cả hai đầu (trái và phải) đều cần hiệu quả?

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

159. Độ phức tạp thời gian của thuật toán sắp xếp Heap Sort là bao nhiêu?

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

160. Độ phức tạp thời gian của thuật toán sắp xếp Shell Sort phụ thuộc vào chuỗi các ‘khoảng cách’ (gaps) được sử dụng. Trong trường hợp xấu nhất, nó có thể là bao nhiêu?

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

161. Cấu trúc dữ liệu nào sử dụng con trỏ để liên kết các phần tử lại với nhau, cho phép thay đổi kích thước động?

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

162. Độ phức tạp thời gian của thao tác xóa phần tử khỏi Heap (heapify-down) là bao nhiêu?

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

163. Cấu trúc dữ liệu nào cho phép thêm và xóa phần tử ở cả hai đầu?

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

164. Cấu trúc dữ liệu nào sau đây sử dụng kỹ thuật ‘hash collision resolution’ để xử lý khi hai khóa khác nhau ánh xạ tới cùng một vị trí trong bảng băm?

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

165. Cấu trúc dữ liệu nào thường được sử dụng để lưu trữ các câu lệnh gọi hàm trong một chương trình, theo nguyên tắc LIFO?

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

166. Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (linear search) trên một mảng có n phần tử là bao nhiêu?

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

167. 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) bằng cách duy trì các phần tử theo thứ tự ưu tiên?

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

168. Khi duyệt cây nhị phân theo thứ tự tiền tố (pre-order traversal), thứ tự các nút được thăm là gì?

A. Trái – Phải – Gốc
B. Gốc – Trái – Phải
C. Trái – Gốc – Phải
D. Phải – Trái – Gốc

169. Cấu trúc dữ liệu nào sau đây được sử dụng để lưu trữ các khóa và giá trị tương ứng, cho phép tìm kiếm, thêm và xóa nhanh chóng?

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

170. Trong cấu trúc dữ liệu cây hai con (binary tree), một nút có thể có tối đa bao nhiêu con?

A. 1
B. 2
C. 3
D. Không giới hạn

171. Độ phức tạp thời gian của thuật toán tìm kiếm nhị phân trên một mảng đã sắp xếp có n phần tử là bao nhiêu?

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

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

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

173. Trong thuật toán Floyd-Warshall, mục đích chính là gì?

A. Tìm đường đi ngắn nhất từ một đỉnh nguồn đến tất cả các đỉnh khác.
B. Tìm cây khung nhỏ nhất của đồ thị.
C. Tìm tất cả các cặp đường đi ngắn nhất giữa mọi cặp đỉnh.
D. Phát hiện chu trình trong đồ thị.

174. Cấu trúc dữ liệu nào phù hợp nhất để biểu diễn mối quan hệ giữa các thành phố trên bản đồ, nơi các thành phố là các đỉnh và các con đường là các cạnh có trọng số?

A. Mảng (Array)
B. Danh sách liên kết (Linked List)
C. Đồ thị (Graph)
D. Ngăn xếp (Stack)

175. Cấu trúc dữ liệu nào là một dạng của cây nhị phân, trong đó giá trị của mỗi nút lớn hơn hoặc bằng giá trị của các nút con của nó?

A. Cây hai con tìm kiếm (Binary Search Tree)
B. Heap tối đa (Max Heap)
C. Heap tối thiểu (Min Heap)
D. Cây AVL (AVL Tree)

176. Trong thuật toán DFS, cấu trúc dữ liệu nào được sử dụng để lưu trữ các đỉnh cần thăm?

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

177. Trong thuật toán Kruskal, cạnh nào sẽ được chọn để thêm vào cây khung nhỏ nhất (MST)?

A. Cạnh có trọng số lớn nhất nối hai thành phần liên thông.
B. Cạnh có trọng số nhỏ nhất nối hai thành phần liên thông.
C. Cạnh nối hai đỉnh bất kỳ.
D. Cạnh nối đỉnh có bậc cao nhất.

178. Độ phức tạp thời gian của thuật toán sắp xếp Insertion Sort trong trường hợp mảng đã được sắp xếp là bao nhiêu?

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

179. Độ phức tạp thời gian của thao tác thêm một phần tử vào Heap (heapify-up) là bao nhiêu?

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

180. Trong một cây nhị phân đầy đủ (full binary tree), mỗi nút không phải là lá đều có đúng hai nút con. Nếu cây có N nút lá, số nút không phải là lá là bao nhiêu?

A. N
B. N-1
C. 2N
D. 2N-1

181. Độ phức tạp thời gian của thuật toán sắp xếp Bubble Sort trong trường hợp xấu nhất là bao nhiêu?

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

182. Khi duyệt cây nhị phân theo thứ tự trung tố (in-order traversal), thứ tự các nút được thăm là gì?

A. Gốc – Trái – Phải
B. Trái – Phải – Gốc
C. Trái – Gốc – Phải
D. Phải – Gốc – Trái

183. Khi duyệt cây nhị phân theo thứ tự hậu tố (post-order traversal), thứ tự các nút được thăm là gì?

A. Gốc – Trái – Phải
B. Trái – Gốc – Phải
C. Trái – Phải – Gốc
D. Phải – Trái – Gốc

184. Cấu trúc dữ liệu nào phù hợp để lưu trữ một tập hợp các phần tử duy nhất, không có thứ tự và cho phép kiểm tra sự tồn tại của một phần tử nhanh chóng?

A. Danh sách liên kết (Linked List)
B. Mảng (Array)
C. Set (Tập hợp)
D. Heap

185. Độ phức tạp thời gian của thuật toán sắp xếp Selection Sort là bao nhiêu?

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

186. Trong các cấu trúc dữ liệu sau, cấu trúc nào thường được sử dụng để triển khai hàng đợi ưu tiên (priority queue) một cách hiệu quả nhất?

A. Mảng (Array)
B. Danh sách liên kết đơn (Singly Linked List)
C. Heap
D. Cây nhị phân tìm kiếm (Binary Search Tree)

187. Cấu trúc dữ liệu nào là một dạng đặc biệt của cây hai con tìm kiếm, nơi chiều cao của cây luôn được giữ ở mức thấp để đảm bảo hiệu suất O(log n) cho các thao tác?

A. Heap
B. Cây đỏ đen (Red-Black Tree)
C. Cây AVL (AVL Tree)
D. Cả B và C

188. Độ phức tạp thời gian của thuật toán DFS (Depth-First Search) là bao nhiêu?

A. O(V + E)
B. O(V * E)
C. O(V^2)
D. O(E^2)

189. Cấu trúc dữ liệu nào thường được sử dụng để quản lý các tác vụ cần xử lý theo thứ tự thời gian đến trước, phục vụ trước (First-In, First-Out – FIFO)?

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

190. Độ phức tạp thời gian của thuật toán sắp xếp Heap Sort là bao nhiêu?

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

191. Cấu trúc dữ liệu nào sau đây có thể được sử dụng để mô phỏng một ngăn xếp (stack)?

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

192. Cấu trúc dữ liệu nào sử dụng nguyên tắc LIFO (Last-In, First-Out)?

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

193. Trong thuật toán Prim, đỉnh nào sẽ được chọn để thêm vào cây khung nhỏ nhất (Minimum Spanning Tree – MST)?

A. Đỉnh bất kỳ chưa thuộc cây MST.
B. Đỉnh có cạnh nối với cây MST với trọng số lớn nhất.
C. Đỉnh có cạnh nối với cây MST với trọng số nhỏ nhất.
D. Đỉnh có bậc lớn nhất trong đồ thị.

194. Trong thuật toán Dijkstra, đỉnh nào sẽ được chọn để thăm tiếp theo?

A. Đỉnh có khoảng cách lớn nhất từ đỉnh nguồn.
B. Đỉnh có khoảng cách nhỏ nhất từ đỉnh nguồn trong tập các đỉnh chưa được thăm.
C. Đỉnh có bậc (degree) lớn nhất.
D. Đỉnh bất kỳ trong tập các đỉnh chưa được thăm.

195. Trong thuật toán BFS (Breadth-First Search), cấu trúc dữ liệu nào được sử dụng để lưu trữ các đỉnh cần thăm?

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

196. Độ phức tạp thời gian của thuật toán sắp xếp Merge Sort là bao nhiêu?

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

197. Độ phức tạp không gian (space complexity) của thuật toán tìm kiếm nhị phân (binary search) trên một mảng có n phần tử là bao nhiêu?

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

198. Cấu trúc dữ liệu nào sau đây cho phép truy cập ngẫu nhiên (random access) đến bất kỳ phần tử nào dựa trên chỉ số của nó?

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

199. Cây nhị phân tìm kiếm (BST) có ưu điểm gì so với mảng trong việc tìm kiếm một phần tử?

A. BST luôn có độ phức tạp tìm kiếm là O(1).
B. BST cho phép thêm và xóa phần tử dễ dàng hơn mảng.
C. BST có độ phức tạp tìm kiếm trung bình là O(log n), hiệu quả hơn tìm kiếm tuyến tính O(n) trong mảng.
D. BST luôn cân bằng, trong khi mảng có thể bị phân mảnh.

200. Cấu trúc dữ liệu nào cho phép truy cập phần tử theo thứ tự, nhưng việc thêm hoặc xóa phần tử ở giữa danh sách có thể tốn kém?

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

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ề Phần Mềm Trọn Đời

Phần Mềm Trọn Đời - Blog cá nhân, chuyên chia sẻ kiến thức về công nghệ, thủ thuật công nghệ, game PC, Mobile, thủ thuật Game, đồ họa, video,…

Gmail: info.phanmemtrondoi@gmail.com

Địa chỉ: 123 Đ Nguyễn Văn Tăng, Long Thạnh Mỹ, Thủ Đức, Hồ Chí Minh 700000, Việt Nam

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

Social

  • LinkedIn
  • Pinterest
  • Tumblr
  • Gravatar
  • Vimeo

Miễn Trừ Trách Nhiệm

Các thông tin trên trang web này chỉ dành cho mục đích tham khảo và tra cứu.

Phần Mềm 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 các thiệt hại, dù là trực tiếp hay gián tiếp, phát sinh từ việc sử dụng hoặc làm theo các nội dung trên trang web.

Phần Mềm Trọn Đời được xây dựng nhằm mục đích thử nghiệm, hỗ trợ học tập và nghiên cứu.

Bộ câu hỏi và đáp án trên trang Trắc nghiệm chỉ mang tính chất tham khảo, nhằm hỗ trợ quá trình học tập và ôn luyện. KHÔNG PHẢI là đề thi chính thức và không đại diện cho bất kỳ tài liệu chuẩn hóa hay kỳ thi cấp chứng chỉ nào từ các cơ quan giáo dục hoặc tổ chức cấp chứng chỉ chuyên ngành. Website không chịu trách nhiệm về tính chính xác của câu hỏi, đáp án cũng như bất kỳ quyết định nào được đưa ra dựa trên kết quả từ bài trắc nghiệm.

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

Blogger Công Nghệ: Phần Mềm Trọn Đời

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

Website Cùng Hệ Thống

All Thing Share - Sharing | Knowledge | Technology | Tips | Pets | Life Tài Liệu Trọn Đời - Thư Viện Tài Liệu Học Tập Miễn Phí Kiến Thức Live - Tin Tức | Kiến Thức Cuộc Sống | Công Nghệ All Thing Pet – We Love Pets Trending New 24h - Cập Nhật Xu Hướng | Trend | News 24h
Copyright © 2025 Phần Mềm Trọn Đời

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