Bộ 14 - Trắc nghiệm Cấu trúc dữ liệu và giải thuật có đáp án
Thời gian còn lại: --:--
Kết quả của bạn:
Bạn đã đúng:
Bạn đã sai:
Tổng số câu:
Câu 1:Trong phân tích thuật toán, độ phức tạp thời gian của giải thuật Tìm kiếm nhị phân (Binary Search) trên một mảng đã sắp xếp có kích thước n là bao nhiêu?
💡 Lời giải chi tiết:
Theo nguyên lý chia để trị, tìm kiếm nhị phân giảm một nửa phạm vi tìm kiếm sau mỗi bước so sánh, dẫn đến độ phức tạp thời gian là O(log n). Kết luận Lý giải: O(log n)
Câu 2:Thuật toán sắp xếp nào sau đây được coi là 'ổn định' (stable sorting algorithm) trong mọi trường hợp triển khai thông thường?
💡 Lời giải chi tiết:
Sắp xếp trộn (Merge Sort) duy trì thứ tự tương đối của các phần tử có giá trị bằng nhau nhờ cơ chế gộp hai mảng con có điều kiện. Kết luận Lý giải: Merge Sort
Câu 3:Cấu trúc dữ liệu Hàng đợi (Queue) hoạt động theo nguyên lý nào sau đây?
💡 Lời giải chi tiết:
Hàng đợi là cấu trúc dữ liệu tuyến tính trong đó các phần tử được thêm vào ở cuối và lấy ra từ đầu theo đúng thứ tự xuất hiện. Kết luận Lý giải: FIFO (First In First Out)
Câu 4:Khi thực hiện duyệt cây nhị phân tìm kiếm (BST) theo thứ tự 'In-order' (Trung thứ tự), kết quả thu được sẽ là gì?
💡 Lời giải chi tiết:
Theo tính chất của cây nhị phân tìm kiếm, phép duyệt In-order (Trái - Gốc - Phải) luôn truy cập các nút theo giá trị từ nhỏ đến lớn. Kết luận Lý giải: Một dãy các giá trị tăng dần
Câu 5:Trong trường hợp xấu nhất, độ phức tạp thời gian của thuật toán sắp xếp nhanh (Quick Sort) là bao nhiêu?
💡 Lời giải chi tiết:
Trường hợp xấu nhất của Quick Sort xảy ra khi phần tử chốt (pivot) luôn là giá trị nhỏ nhất hoặc lớn nhất, khiến mảng bị chia cắt không cân bằng. Kết luận Lý giải: O(n^2)
Câu 6:Một cây AVL là một cây nhị phân tìm kiếm có đặc điểm cân bằng nào sau đây?
💡 Lời giải chi tiết:
Cây AVL là cây nhị phân tự cân bằng với điều kiện hệ số cân bằng (chênh lệch chiều cao hai cây con) của mỗi nút chỉ nhận giá trị -1, 0, hoặc 1. Kết luận Lý giải: Chênh lệch chiều cao giữa cây con trái và cây con phải của mọi nút không quá 1
Câu 7:Thuật toán tìm kiếm theo chiều sâu (Depth-First Search - DFS) trên đồ thị thường sử dụng cấu trúc dữ liệu phụ trợ nào?
💡 Lời giải chi tiết:
Thuật toán DFS ưu tiên đi sâu vào các nhánh chưa thăm bằng cách sử dụng cơ chế đệ quy hoặc một Ngăn xếp tường minh để lưu trữ lộ trình. Kết luận Lý giải: Ngăn xếp (Stack)
Câu 8:Thuật toán Dijkstra được sử dụng để giải quyết bài toán nào sau đây trên đồ thị?
💡 Lời giải chi tiết:
Dijkstra là thuật toán tham lam dùng để xác định đường đi ngắn nhất từ một đỉnh nguồn đến các đỉnh còn lại trong đồ thị có trọng số cạnh không âm. Kết luận Lý giải: Tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh khác (trọng số không âm)
Câu 9:Thuật toán Kruskal để tìm cây khung nhỏ nhất (MST) dựa trên chiến lược thiết kế giải thuật nào?
💡 Lời giải chi tiết:
Thuật toán Kruskal liên tục chọn cạnh có trọng số nhỏ nhất mà không tạo thành chu trình, đây là đặc trưng của chiến lược tham lam. Kết luận Lý giải: Tham lam (Greedy Strategy)
Câu 10:Trong bảng băm (Hash Table), phương pháp 'Chaining' được sử dụng để làm gì?
💡 Lời giải chi tiết:
Phương pháp Chaining giải quyết xung đột bằng cách lưu trữ tất cả các phần tử có cùng giá trị băm vào một danh sách liên kết tại vị trí đó. Kết luận Lý giải: Xử lý xung đột băm (collision) bằng cách sử dụng danh sách liên kết tại mỗi chỉ mục
Câu 11:Để lưu trữ một đồ thị có V đỉnh bằng Ma trận kề (Adjacency Matrix), không gian bộ nhớ cần thiết là bao nhiêu?
💡 Lời giải chi tiết:
Ma trận kề sử dụng một mảng hai chiều kích thước V x V để biểu diễn quan hệ giữa tất cả các cặp đỉnh, do đó tiêu tốn O(V^2) bộ nhớ. Kết luận Lý giải: O(V^2)
Câu 12:Trường hợp tốt nhất của thuật toán Sắp xếp chèn (Insertion Sort) xảy ra khi nào?
💡 Lời giải chi tiết:
Khi mảng đã được sắp xếp, Insertion Sort chỉ thực hiện n-1 lần so sánh và không có phép hoán đổi nào, dẫn đến độ phức tạp O(n). Kết luận Lý giải: Khi mảng đã được sắp xếp đúng thứ tự
Câu 13:Một cây nhị phân đầy đủ (Full Binary Tree) có chiều cao h (gốc ở mức 0) sẽ có tối đa bao nhiêu nút?
💡 Lời giải chi tiết:
Tổng số nút tối đa của một cây nhị phân mức h được tính bằng tổng cấp số nhân từ 2^0 đến 2^h, kết quả là 2^(h+1) - 1. Kết luận Lý giải: 2^(h+1) - 1
Câu 14:Ứng dụng nào sau đây thường sử dụng cấu trúc dữ liệu Ngăn xếp (Stack)?
💡 Lời giải chi tiết:
Tính năng Undo yêu cầu lấy lại trạng thái gần nhất đã thực hiện, điều này khớp hoàn hảo với nguyên lý vào sau ra trước của Ngăn xếp. Kết luận Lý giải: Thực hiện tính năng Hoàn tác (Undo) trong các trình soạn thảo
Câu 15:Độ phức tạp thời gian trung bình để truy cập một phần tử tại một chỉ mục (index) bất kỳ trong mảng (Array) là bao nhiêu?
💡 Lời giải chi tiết:
Mảng cho phép truy cập trực tiếp thông qua tính toán địa chỉ dựa trên chỉ mục, do đó thời gian truy cập luôn là hằng số. Kết luận Lý giải: O(1)
Câu 16:Cấu trúc dữ liệu Đống (Heap) thường được sử dụng hiệu quả nhất để cài đặt cấu trúc dữ liệu nào?
💡 Lời giải chi tiết:
Đống (Max-Heap hoặc Min-Heap) cho phép lấy ra phần tử có độ ưu tiên cao nhất và thêm mới phần tử với độ phức tạp O(log n). Kết luận Lý giải: Hàng đợi ưu tiên (Priority Queue)
Câu 17:Trong thuật toán Tìm kiếm theo chiều rộng (Breadth-First Search - BFS), cấu trúc dữ liệu nào được dùng để lưu trữ các đỉnh đang chờ để thăm?
💡 Lời giải chi tiết:
BFS thăm các đỉnh theo từng mức độ xa dần từ gốc, do đó cần một Hàng đợi để đảm bảo đỉnh nào được phát hiện trước sẽ được thăm trước. Kết luận Lý giải: Hàng đợi (Queue)
Câu 18:Lợi thế chính của Danh sách liên kết vòng (Circular Linked List) so với Danh sách liên kết đơn thông thường là gì?
💡 Lời giải chi tiết:
Trong danh sách liên kết vòng, nút cuối trỏ về nút đầu, cho phép duyệt toàn bộ danh sách bắt đầu từ bất kỳ vị trí nào. Kết luận Lý giải: Có thể truy cập bất kỳ nút nào từ bất kỳ nút bắt đầu nào trong danh sách
Câu 19:Điều kiện cần thiết để thực hiện sắp xếp Topo (Topological Sort) trên một đồ thị là gì?
💡 Lời giải chi tiết:
Sắp xếp Topo chỉ khả thi khi không có sự phụ thuộc vòng quanh giữa các đỉnh, tức là đồ thị phải có hướng và không có chu trình. Kết luận Lý giải: Đồ thị phải là đồ thị có hướng không chu trình (DAG)
Câu 20:Sự khác biệt cơ bản giữa thuật toán Prim và thuật toán Kruskal khi tìm cây khung nhỏ nhất là gì?
💡 Lời giải chi tiết:
Thuật toán Prim duy trì một cây duy nhất và mở rộng nó, trong khi Kruskal quản lý một rừng các cây con và gộp chúng lại bằng các cạnh ngắn nhất. Kết luận Lý giải: Prim phát triển cây từ một đỉnh, Kruskal chọn cạnh nhỏ nhất trên toàn đồ thị
Câu 21:Chiến lược 'Quy hoạch động' khác với chiến lược 'Tham lam' ở điểm cốt lõi nào?
💡 Lời giải chi tiết:
Quy hoạch động đảm bảo tối ưu bằng cách kết hợp kết quả từ các bài toán con chồng chéo, trong khi tham lam đưa ra quyết định dựa trên lợi ích tức thời. Kết luận Lý giải: Quy hoạch động luôn cho lời giải tối ưu toàn cục bằng cách xem xét các bài toán con, còn tham lam chọn tối ưu cục bộ hiện tại
Câu 22:Thuật toán sắp xếp nào sau đây không sử dụng cơ chế so sánh trực tiếp giữa các phần tử?
💡 Lời giải chi tiết:
Radix Sort là thuật toán sắp xếp không so sánh, nó phân loại các phần tử dựa trên các chữ số hoặc bit cấu thành giá trị của chúng. Kết luận Lý giải: Radix Sort
Câu 23:Trong một cây nhị phân, nếu số nút lá là L và số nút có đúng 2 con là N2, mối quan hệ nào sau đây luôn đúng?
💡 Lời giải chi tiết:
Theo tính chất của cây nhị phân, số nút lá luôn lớn hơn số nút có hai con đúng 1 đơn vị. Kết luận Lý giải: L = N2 + 1
Câu 24:Độ phức tạp thời gian để xây dựng một Đống (Build-Heap) từ một mảng n phần tử là bao nhiêu?
💡 Lời giải chi tiết:
Mặc dù mỗi phép vun đống (heapify) mất O(log n), việc xây dựng toàn bộ đống từ dưới lên chỉ tốn tổng thời gian là O(n). Kết luận Lý giải: O(n)
Câu 25:Cấu trúc dữ liệu Danh sách liên kết đôi (Doubly Linked List) có ưu điểm gì so với Danh sách liên kết đơn?
💡 Lời giải chi tiết:
Danh sách liên kết đôi lưu trữ cả con trỏ tới nút kế tiếp và nút phía trước, cho phép di chuyển linh hoạt theo cả hai hướng. Kết luận Lý giải: Có thể duyệt danh sách theo cả hai chiều (tiến và lùi)