Bộ 11 - 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 độ phức tạp thuật toán, ký hiệu Big O 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à gì?
💡 Lời giải chi tiết:
Theo phân tích phổ biến, 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 thời gian là O(log n). Kết luận Lý giải O(log n)
Câu 2:Cấu trúc dữ liệu Ngăn xếp (Stack) hoạt động theo nguyên lý nào sau đây?
💡 Lời giải chi tiết:
Theo định nghĩa cơ bản, Ngăn xếp là cấu trúc dữ liệu mà phần tử được đưa vào cuối cùng sẽ là phần tử đầu tiên được lấy ra. Kết luận Lý giải LIFO (Last In First Out)
Câu 3:Ưu điểm chính của Danh sách liên kết đôi (Doubly Linked List) so với Danh sách liên kết đơn (Singly Linked List) là gì?
💡 Lời giải chi tiết:
Theo cấu trúc của danh sách liên kết đôi, mỗi nút chứa cả con trỏ tới nút đứng trước và nút đứng sau, cho phép duyệt ngược và xuôi. Kết luận Lý giải Khả năng duyệt danh sách theo cả hai chiều
Câu 4:Trong trường hợp xấu nhất (Worst case), độ 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:
Theo lý thuyết thuật toán, Quick Sort rơi vào trường hợp xấu nhất khi điểm chốt (pivot) luôn là phần tử nhỏ nhất hoặc lớn nhất, dẫn đến độ phức tạp O(n^2). Kết luận Lý giải O(n^2)
Câu 5:Một cây nhị phân tìm kiếm được gọi là Cây AVL nếu nó thỏa mãn điều kiện cân bằng nào?
💡 Lời giải chi tiết:
Theo định nghĩa về cây tự cân bằng, cây AVL yêu cầu trị tuyệt đối của hiệu số chiều cao giữa hai cây con của bất kỳ nút nào không được vượt quá 1. Kết luận Lý giải Chênh lệch chiều cao giữa cây con trái và phải của mọi nút không quá 1
Câu 6: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:
Theo phân tích phổ biến, Dijkstra là thuật toán tối ưu để tìm đường đi ngắn nhất từ một đỉnh nguồn cố định đến tất cả các đỉ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 nguồn đến các đỉnh còn lại
Câu 7:Trong bảng băm (Hash Table), kỹ thuật 'Thử tuyến tính' (Linear Probing) được sử dụng để xử lý vấn đề gì?
💡 Lời giải chi tiết:
Theo nguyên lý của bảng băm, thử tuyến tính là một phương pháp địa chỉ mở để tìm vị trí trống tiếp theo khi xảy ra xung đột tại vị trí băm ban đầu. Kết luận Lý giải Giải quyết xung đột (Collision Resolution)
Câu 8:Thành phần nào là bắt buộc phải có trong một hàm đệ quy để tránh lỗi lặp vô hạn?
💡 Lời giải chi tiết:
Theo lý thuyết lập trình, trường hợp cơ sở cung cấp điểm dừng cho các lời gọi đệ quy, đảm bảo thuật toán sẽ kết thúc. Kết luận Lý giải Trường hợp cơ sở (Base case)
Câu 9:Để áp dụng được thuật toán Tìm kiếm nhị phân, dữ liệu đầu vào bắt buộc phải thỏa mãn điều kiện nào?
💡 Lời giải chi tiết:
Theo nguyên lý chia để trị của tìm kiếm nhị phân, việc loại bỏ một nửa phạm vi tìm kiếm chỉ thực hiện được khi các phần tử đã được sắp xếp. Kết luận Lý giải Dữ liệu đã được sắp xếp theo một thứ tự nhất định
Câu 10:Kỹ thuật 'Lưu trữ kết quả trung gian' (Memoization) thường được áp dụng trong phương pháp thiết kế thuật toán nào?
💡 Lời giải chi tiết:
Theo phân tích phổ biến, quy hoạch động sử dụng Memoization để lưu lại kết quả của các bài toán con đã giải nhằm tránh tính toán lại. Kết luận Lý giải Quy hoạch động (Dynamic Programming)
Câu 11:Độ 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:
Theo đặc điểm của Bubble Sort, thuật toán sử dụng hai vòng lặp lồng nhau để so sánh các cặp phần tử, dẫn đến độ phức tạp O(n^2). Kết luận Lý giải O(n^2)
Câu 12:Lợi ích lớn nhất của việc sử dụng Hàng đợi vòng (Circular Queue) so với Hàng đợi tuyến tính là gì?
💡 Lời giải chi tiết:
Theo cấu trúc hàng đợi, hàng đợi vòng cho phép tận dụng lại các vị trí ở đầu mảng đã bị loại bỏ phần tử, tránh hiện tượng lãng phí bộ nhớ. Kết luận Lý giải Sử dụng hiệu quả các khoảng trống bộ nhớ đã bị giải phóng
Câu 13:Phép duyệt cây nhị phân tìm kiếm theo thứ tự nào sẽ trả về danh sách các giá trị đã được sắp xếp tăng dần?
💡 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ăng dần. Kết luận Lý giải Duyệt trung thứ tự (In-order)
Câu 14:Trong một cấu trúc dữ liệu Max-Heap, nút gốc luôn chứa giá trị nào?
💡 Lời giải chi tiết:
Theo định nghĩa của Max-Heap, mọi nút cha phải có giá trị lớn hơn hoặc bằng giá trị của các nút con, do đó giá trị lớn nhất luôn ở gốc. Kết luận Lý giải Giá trị lớn nhất trong Heap
Câu 15:Thuật toán tìm kiếm theo chiều rộng (BFS) trên đồ thị thường sử dụng cấu trúc dữ liệu bổ trợ nào?
💡 Lời giải chi tiết:
Theo quy trình của BFS, các đỉnh kề của đỉnh đang xét được đưa vào hàng đợi để đảm bảo các đỉnh ở gần nguồn hơn được duyệt trước. Kết luận Lý giải Hàng đợi (Queue)
Câu 16:Thuật toán sắp xếp nào sau đây được coi là 'Ổn định' (Stable Sort)?
💡 Lời giải chi tiết:
Theo định nghĩa về tính ổn định, Merge Sort duy trì được thứ tự tương đối của các phần tử có cùng giá trị trong khi Quick Sort và Heap Sort thì không. Kết luận Lý giải Sắp xếp trộn (Merge Sort)
Câu 17:Độ phức tạp thời gian để chèn một phần tử mới vào đầu một Danh sách liên kết đơn là bao nhiêu?
💡 Lời giải chi tiết:
Theo cơ chế của danh sách liên kết, việc chèn vào đầu chỉ yêu cầu thay đổi con trỏ của nút mới và con trỏ đầu (head) 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 18:Độ phức tạp không gian (Space Complexity) của việc khai báo một mảng một chiều có kích thước n phần tử là gì?
💡 Lời giải chi tiết:
Theo định nghĩa, lượng bộ nhớ cần thiết tỉ lệ thuận với số lượng phần tử n được cấp phát trong mảng. Kết luận Lý giải O(n)
Câu 19:Độ phức tạp thời gian của thuật toán tính giai thừa n! bằng phương pháp đệ quy thông thường là bao nhiêu?
💡 Lời giải chi tiết:
Theo logic đệ quy, hàm tính giai thừa thực hiện đúng n lần gọi hàm cho đến khi chạm tới trường hợp cơ sở n=1. Kết luận Lý giải O(n)
Câu 20:Chiều cao của một cây nhị phân đầy đủ (Complete Binary Tree) có n nút là bao nhiêu?
💡 Lời giải chi tiết:
Theo tính chất cấu trúc, cây nhị phân đầy đủ phân bố các nút đồng đều trên các tầng, nên chiều cao tăng theo hàm logarit của số nút. Kết luận Lý giải O(log n)
Câu 21:Trong bảng băm, trường hợp xấu nhất xảy ra khi nào khiến độ phức tạp tìm kiếm trở thành O(n)?
💡 Lời giải chi tiết:
Theo lý thuyết bảng băm, nếu mọi khóa băm vào cùng một index, cấu trúc sẽ thoái hóa thành một danh sách liên kết và việc tìm kiếm mất O(n). Kết luận Lý giải Tất cả các khóa đều băm vào cùng một vị trí (xung đột tối đa)
Câu 22:Tại sao thuật toán Sắp xếp trộn (Merge Sort) thường được ưa chuộng hơn Sắp xếp nhanh (Quick Sort) khi làm việc với Danh sách liên kết?
💡 Lời giải chi tiết:
Theo đặc tính của danh sách liên kết, việc truy cập ngẫu nhiên là tốn kém, trong khi Merge Sort có thể hoạt động hiệu quả bằng cách duyệt tuần tự. Kết luận Lý giải Vì Merge Sort không yêu cầu truy cập ngẫu nhiên (random access) vào các phần tử
Câu 23:Thuật toán Kruskal dùng để tìm cây khung nhỏ nhất (MST) dựa trên chiến lược thiết kế thuật toán nào?
💡 Lời giải chi tiết:
Theo quy trình thực hiện, thuật toán Kruskal luôn chọn cạnh có trọng số nhỏ nhất mà không tạo chu trình ở mỗi bước, minh chứng cho chiến lược tham lam. Kết luận Lý giải Tham lam (Greedy)
Câu 24:Trong thuật toán KMP (Knuth-Morris-Pratt) để tìm kiếm chuỗi, mục đích của mảng 'tiền tố' (Prefix Function) là gì?
💡 Lời giải chi tiết:
Theo cơ chế KMP, mảng tiền tố cho biết vị trí tiếp theo cần so sánh khi xảy ra sự sai khác, tránh việc phải quay lại so sánh từ đầu. Kết luận Lý giải Giúp bỏ qua các so sánh không cần thiết bằng cách tận dụng thông tin đã so sánh
Câu 25:Cấu trúc dữ liệu nào thường được sử dụng nhất để triển khai Hàng đợi ưu tiên (Priority Queue)?
💡 Lời giải chi tiết:
Theo hiệu quả thực thi, Binary Heap cho phép chèn và lấy phần tử ưu tiên nhất với độ phức tạp O(log n), là lựa chọn tối ưu cho hàng đợi ưu tiên. Kết luận Lý giải Đống nhị phân (Binary Heap)