Bộ 13 - 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 O(log n) thường xuất hiện trong thuật toán nào sau đây?
💡 Lời giải chi tiết:
Theo nguyên lý chia để trị, tìm kiếm nhị phân chia đôi không gian tìm kiếm sau mỗi bước nên có độ phức tạp là log cơ số 2 của n. Kết luận Lý giải Tìm kiếm nhị phân (Binary Search)
Câu 2:Cấu trúc dữ liệu ngăn xếp (Stack) hoạt động theo nguyên lý nào?
💡 Lời giải chi tiết:
Ngăn xếp là cấu trúc dữ liệu tuyến tính trong đó các thao tác thêm và xóa phần tử chỉ thực hiện tại một đầu, dẫn đến phần tử vào sau cùng sẽ được lấy ra đầu tiên. Kết luận Lý giải LIFO (Last-In-First-Out)
Câu 3:Hàng đợi (Queue) là cấu trúc dữ liệu hoạt động theo cơ chế nào?
💡 Lời giải chi tiết:
Hàng đợi tuân thủ nguyên tắc phần tử nào được đưa vào danh sách trước thì sẽ được xử lý và lấy ra trước. Kết luận Lý giải FIFO (First-In-First-Out)
Câu 4:Độ phức tạp thời gian tốt nhất để chèn một phần tử vào đầu danh sách liên kết đơn (Linked List) là bao nhiêu?
💡 Lời giải chi tiết:
Việc chèn vào đầu danh sách liên kết đơn chỉ yêu cầu cập nhật con trỏ của nút mới và con trỏ đầu danh sách mà không phụ thuộc vào số lượng phần tử. Kết luận Lý giải O(1)
Câu 5:Trong trường hợp xấu nhất, thuật toán sắp xếp nhanh (Quick Sort) có độ phức tạp thời gian 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à phần tử lớn nhất hoặc nhỏ nhất, dẫn đến việc phân chia không cân bằng và tốn n bình phương bước. Kết luận Lý giải O(n^2)
Câu 6:Một cây AVL được định nghĩa là một cây tìm kiếm nhị phân có đặc điểm gì?
💡 Lời giải chi tiết:
Cây AVL là một dạng cây tìm kiếm nhị phân tự cân bằng dựa trên chỉ số cân bằng của mỗi nút được tính bằng hiệu chiều cao giữa hai cây con. Kết luận Lý giải Độ 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 duyệt đồ thị theo chiều rộng (BFS) thường sử dụng cấu trúc dữ liệu bổ trợ nào?
💡 Lời giải chi tiết:
BFS duyệt các đỉnh theo từng mức độ xa dần từ đỉnh xuất phát, do đó cần hàng đợi để lưu trữ các đỉnh đã phát hiện nhưng chưa được thăm các láng giềng. Kết luận Lý giải Hàng đợi (Queue)
Câu 8:Hiện tượng 'xung đột' (collision) trong bảng băm xảy ra khi nào?
💡 Lời giải chi tiết:
Xung đột băm là tình trạng xảy ra khi nhiều phần tử dữ liệu khác nhau có cùng một giá trị băm đầu ra sau khi đi qua hàm băm. Kết luận Lý giải Hai khóa khác nhau được hàm băm ánh xạ vào cùng một chỉ số trong bảng
Câu 9:Số lượng nút tối đa của một cây nhị phân có chiều cao h (với gốc ở chiều cao 0) là bao nhiêu?
💡 Lời giải chi tiết:
Tổng số nút tối đa của cây nhị phân đầy đủ cấp h được tính theo cấp số nhân là 2 mũ (h+1) trừ đi 1. Kết luận Lý giải 2^(h+1) - 1
Câu 10:Cấu trúc dữ liệu nào là lựa chọn tốt nhất để triển khai Hàng đợi ưu tiên (Priority Queue)?
💡 Lời giải chi tiết:
Cấu trúc Heap cho phép thực hiện các thao tác lấy phần tử ưu tiên nhất và thêm phần tử mới với độ phức tạp logarit, tối ưu hơn các cấu trúc tuyến tính khác. Kết luận Lý giải Đống (Heap)
Câu 11:Thuật toán Dijkstra được sử dụng để giải quyết bài toán nào trên đồ thị?
💡 Lời giải chi tiết:
Dijkstra là thuật toán tham lam dùng để tìm đường đi có tổng trọng số các cạnh là nhỏ nhất từ một đỉnh gốc đến mọi đỉnh khác trong đồ thị có trọng số không âm. Kết luận Lý giải Tìm đường đi ngắn nhất từ một đỉnh nguồn đến các đỉnh còn lại
Câu 12:Thuật toán nào sau đây dùng để tìm cây khung nhỏ nhất (Minimum Spanning Tree) của đồ thị?
💡 Lời giải chi tiết:
Kruskal là một thuật toán phổ biến dựa trên việc chọn các cạnh có trọng số nhỏ nhất mà không tạo thành chu trình để xây dựng cây khung. Kết luận Lý giải Thuật toán Kruskal
Câu 13:Thuật toán sắp xếp nào được gọi là sắp xếp ổn định (Stable Sort)?
💡 Lời giải chi tiết:
Sắp xếp ổn định là thuật toán giữ nguyên thứ tự tương đối của các phần tử có giá trị bằng nhau, và Merge Sort đảm bảo được tính chất này. Kết luận Lý giải Sắp xếp trộn (Merge Sort)
Câu 14:Thứ tự duyệt các nút trong phép duyệt cây theo thứ tự sau (Post-order) là gì?
💡 Lời giải chi tiết:
Trong phép duyệt Post-order, các cây con bên trái và bên phải phải được duyệt xong trước khi xử lý nút gốc của chúng. Kết luận Lý giải Trái - Phải - Gốc
Câu 15:Phép duyệt theo thứ tự giữa (In-order) trên một cây tìm kiếm nhị phân (BST) sẽ cho kết quả là một dãy số có đặc điểm gì?
💡 Lời giải chi tiết:
Do tính chất của BST là nút trái nhỏ hơn gốc và gốc nhỏ hơn nút phải, nên duyệt In-order (Trái-Gốc-Phải) sẽ liệt kê các giá trị theo thứ tự không giảm. Kết luận Lý giải Dãy số tăng dần
Câu 16:Độ phức tạp không gian (Space Complexity) của thuật toán đệ quy phụ thuộc chủ yếu vào yếu tố nào?
💡 Lời giải chi tiết:
Mỗi lời gọi đệ quy tạo ra một khung ngăn xếp mới, do đó bộ nhớ tiêu tốn sẽ tỉ lệ thuận với độ sâu tối đa mà đệ quy đạt tới. Kết luận Lý giải Độ sâu tối đa của ngăn xếp lời gọi (Call Stack)
Câu 17:Đặc điểm chính của danh sách liên kết kép (Doubly Linked List) so với danh sách liên kết đơn là gì?
💡 Lời giải chi tiết:
Danh sách liên kết kép lưu trữ cả địa chỉ của nút tiếp theo và nút liền trước, cho phép duyệt danh sách linh hoạt theo cả hai hướng. Kết luận Lý giải Mỗi nút có thêm một con trỏ trỏ đến nút phía trước nó
Câu 18:Thuật toán sắp xếp chọn (Selection Sort) hoạt động dựa trên nguyên lý nào?
💡 Lời giải chi tiết:
Sắp xếp chọn duy trì một danh sách con đã sắp xếp và liên tục tìm phần tử nhỏ nhất từ phần còn lại để bổ sung vào danh sách con đó. Kết luận Lý giải Tìm phần tử nhỏ nhất trong danh sách chưa sắp xếp và đổi chỗ nó với phần tử ở đầu danh sách đó
Câu 19:Độ phức tạp thời gian trung bình của thuật toán sắp xếp nổi bọt (Bubble Sort) là bao nhiêu?
💡 Lời giải chi tiết:
Bubble Sort sử dụng hai vòng lặp lồng nhau để so sánh và hoán đổi các cặp phần tử, dẫn đến số phép so sánh tỉ lệ với n bình phương. Kết luận Lý giải O(n^2)
Câu 20:Tại sao hàng đợi vòng (Circular Queue) được sử dụng thay cho hàng đợi tuyến tính thông thường triển khai bằng mảng?
💡 Lời giải chi tiết:
Hàng đợi vòng cho phép chỉ số quay lại từ cuối mảng về đầu mảng, giúp tái sử dụng các ô nhớ đã bị bỏ trống bởi thao tác dequeue. Kết luận Lý giải Để tận dụng lại các khoảng trống ở đầu mảng sau khi lấy phần tử ra
Câu 21:Trong một cây tìm kiếm nhị phân (BST), điều kiện nào sau đây luôn đúng với mọi nút N?
💡 Lời giải chi tiết:
Tính chất cơ bản của cây tìm kiếm nhị phân là các giá trị ở nhánh trái luôn nhỏ hơn nút gốc và các giá trị ở nhánh phải luôn lớn hơn nút gốc. Kết luận Lý giải Mọi nút trong cây con trái của N có giá trị nhỏ hơn giá trị của N
Câu 22:Một cây nhị phân được gọi là cây nhị phân đầy đủ (Complete Binary Tree) khi nào?
💡 Lời giải chi tiết:
Cây nhị phân đầy đủ yêu cầu tính liên tục của các nút khi điền vào các tầng từ trên xuống dưới và từ trái sang phải. Kết luận Lý giải Mọi tầng đều được lấp đầy hoàn toàn, trừ tầng cuối cùng có thể chưa đầy nhưng các nút phải dồn về bên trái
Câu 23:So với danh sách kề, ma trận kề biểu diễn đồ thị có nhược điểm gì khi đồ thị có ít cạnh (đồ thị thưa)?
💡 Lời giải chi tiết:
Ma trận kề luôn sử dụng một bảng kích thước V nhân V bất kể số lượng cạnh, gây lãng phí bộ nhớ khi số cạnh ít hơn nhiều so với V bình phương. Kết luận Lý giải Tốn nhiều không gian lưu trữ bộ nhớ O(V^2)
Câu 24:Thuật toán sắp xếp trộn (Merge Sort) thuộc loại chiến lược giải thuật nào?
💡 Lời giải chi tiết:
Merge Sort chia mảng thành các mảng con nhỏ nhất, sắp xếp chúng rồi trộn lại để tạo thành kết quả cuối cùng theo mô hình chia để trị. Kết luận Lý giải Chia để trị (Divide and Conquer)
Câu 25:Kỹ thuật 'Memoization' trong quy hoạch động có mục đích chính là gì?
💡 Lời giải chi tiết:
Memoization là phương pháp tối ưu bằng cách ghi nhớ các kết quả trung gian, giúp giảm thời gian chạy của thuật toán đệ quy có các bài toán con gối nhau. Kết luận Lý giải Lưu trữ kết quả của các bài toán con đã giải để tránh tính toán lại nhiều lần