Bộ 2 - 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:Điểm khác biệt cơ bản về mặt lưu trữ bộ nhớ giữa Mảng (Array) và Danh sách liên kết đơn (Linked List) là gì?
💡 Lời giải chi tiết:
Theo phân tích phổ biến, mảng lưu trữ các phần tử trong các ô nhớ kế tiếp nhau trong khi danh sách liên kết sử dụng các nút nằm rải rác được kết nối qua con trỏ. Kết luận Lý giải Mảng yêu cầu vùng nhớ liên tục còn Danh sách liên kết thì không.
Câu 2:Trong cấu trúc dữ liệu Ngăn xếp (Stack), thao tác nào dùng để lấy giá trị của phần tử ở đỉnh mà không xóa phần tử đó?
💡 Lời giải chi tiết:
Thao tác Peek cho phép truy cập và xem giá trị của phần tử nằm ở đỉnh ngăn xếp mà không thực hiện việc loại bỏ nó khỏi cấu trúc. Kết luận Lý giải Peek.
Câu 3:Nguyên tắc hoạt động chính của cấu trúc dữ liệu Hàng đợi (Queue) là gì?
💡 Lời giải chi tiết:
Hàng đợi hoạt động theo cơ chế First-In-First-Out, đảm bảo phần tử nào được đưa vào danh sách trước sẽ được xử lý và lấy ra trước. Kết luận Lý giải Vào trước ra trước (FIFO).
Câu 4:Độ phức tạp thời gian trung bình của giải thuật Tìm kiếm nhị phân trên một mảng đã sắp xếp gồm n phần tử là bao nhiêu?
💡 Lời giải chi tiết:
Giải thuật tìm kiếm nhị phân hoạt động bằng cách chia đôi 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 logarit. Kết luận Lý giải O(log n).
Câu 5:Thuật toán sắp xếp nào sau đây được coi là 'ổn định' (stable) theo định nghĩa phổ biến trong cấu trúc dữ liệu?
💡 Lời giải chi tiết:
Sắp xếp chèn được coi là ổn định vì nó duy trì thứ tự xuất hiện ban đầu của các phần tử có giá trị bằng nhau trong quá trình dịch chuyển. Kết luận Lý giải Sắp xếp chèn (Insertion Sort).
Câu 6:Trong trường hợp xấu nhất, thuật toán Sắp xếp nhanh (QuickSort) 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 QuickSort xảy ra khi phần tử chốt luôn là phần tử lớn nhất hoặc nhỏ nhất, khiến phân đoạn bị lệch tối đa và dẫn đến độ phức tạp bình phương. Kết luận Lý giải O(n^2).
Câu 7:Đặc điểm nào sau đây luôn đúng đối với mọi nút trong một Cây tìm kiếm nhị phân (BST)?
💡 Lời giải chi tiết:
Theo định nghĩa của cây tìm kiếm nhị phân, mọi giá trị ở nhánh trái của một nút đều nhỏ hơn nút đó và mọi giá trị ở nhánh phải đều lớn hơn. Kết luận Lý giải Giá trị cây con trái nhỏ hơn gốc, giá trị cây con phải lớn hơn gốc.
Câu 8:Phương pháp 'Chaining' (Giải quyết bằng chuỗi) trong Bảng băm (Hash Table) xử lý xung đột như thế nào?
💡 Lời giải chi tiết:
Phương pháp Chaining giải quyết xung đột bằng cách cho phép mỗi vị trí trong bảng băm trỏ đến một danh sách liên kết chứa các phần tử có cùng mã băm. Kết luận Lý giải Sử dụng danh sách liên kết để lưu các phần tử trùng chỉ số băm.
Câu 9: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 để quản lý các đỉnh?
💡 Lời giải chi tiết:
BFS duyệt các đỉnh theo từng cấp độ xa dần từ đỉnh gốc, do đó cần một hàng đợi để lưu trữ các đỉnh đã phát hiện nhưng chưa được duyệt. Kết luận Lý giải Hàng đợi (Queue).
Câu 10:Cơ chế nào thường được sử dụng để cài đặt thuật toán Tìm kiếm theo chiều sâu (DFS) trên đồ thị?
💡 Lời giải chi tiết:
DFS ưu tiên đi sâu vào các nhánh của đồ thị trước khi quay lui, điều này phù hợp với cơ chế hoạt động của ngăn xếp hoặc các lời gọi đệ quy. Kết luận Lý giải Ngăn xếp (Stack) hoặc Đệ quy.
Câu 11: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:
Thuật toán Dijkstra là giải thuật phổ biến nhất để tìm quãng đường ngắn nhất từ một đỉnh bắt đầu đế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:Độ phức tạp bộ nhớ (Space Complexity) của một hàm đệ quy tính giai thừa n! thông thường là bao nhiêu?
💡 Lời giải chi tiết:
Mỗi lần gọi đệ quy sẽ tiêu tốn thêm một khung trên ngăn xếp hệ thống, do đó với n lần gọi lồng nhau, độ phức tạp bộ nhớ sẽ tỉ lệ thuận với n. Kết luận Lý giải O(n).
Câu 13:Ưu điểm nổi bật nhất của Danh sách liên kết đôi (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 đôi lưu trữ cả con trỏ tới nút kế tiếp và nút phía trước, cho phép việc duyệt và thao tác trên danh sách linh hoạt hơn về cả hai hướng. Kết luận Lý giải Có thể duyệt theo cả hai chiều tiến và lùi.
Câu 14:Trong cấu trúc dữ liệu Max-Heap (Đống cực đại), giá trị tại nút gốc luôn là gì?
💡 Lời giải chi tiết:
Cấu trúc Max-Heap duy trì tính chất nút cha luôn lớn hơn hoặc bằng các nút con, dẫn đến kết quả là phần tử lớn nhất luôn nằm ở vị trí gốc. Kết luận Lý giải Giá trị lớn nhất trong đống.
Câu 15:Cây AVL duy trì tính chất cân bằng bằng cách đảm bảo điều gì tại mọi nút?
💡 Lời giải chi tiết:
Cây AVL là cây tìm kiếm nhị phân tự cân bằng dựa trên nguyên tắc hiệu số chiều cao giữa cây con trái và phải của bất kỳ nút nào không được vượt quá một. Kết luận Lý giải Độ lệch chiều cao giữa hai cây con tối đa là 1.
Câu 16:Thuật toán Sắp xếp nổi bọt (Bubble Sort) thực hiện việc sắp xếp dựa trên thao tác chính nào?
💡 Lời giải chi tiết:
Bubble Sort hoạt động bằng cách lặp đi lặp lại việc kiểm tra các cặp phần tử đứng cạnh nhau và đảo chỗ chúng nếu chúng không theo đúng thứ tự mong muốn. Kết luận Lý giải So sánh và hoán đổi các cặp phần tử kề nhau nếu sai thứ tự.
Câu 17:Để một hàm đệ quy không gây ra lỗi tràn ngăn xếp (stack overflow), thành phần nào sau đây là bắt buộc?
💡 Lời giải chi tiết:
Trường hợp dừng cung cấp điều kiện để hàm đệ quy kết thúc việc tự gọi chính nó và bắt đầu trả về kết quả, ngăn chặn việc lặp vô hạn. Kết luận Lý giải Trường hợp dừng (Base case).
Câu 18:Kết quả thu được khi duyệt một Cây tìm kiếm nhị phân (BST) theo thứ tự 'In-order' (Giữa) là gì?
💡 Lời giải chi tiết:
Phép duyệt In-order (Trái - Gốc - Phải) trên BST đảm bảo các giá trị được truy cập theo đúng trình tự từ nhỏ đến lớn. Kết luận Lý giải Một danh sách các phần tử theo thứ tự tăng dần.
Câu 19:Độ phức tạp thời gian của một đoạn mã có hai vòng lặp for lồng nhau, mỗi vòng lặp đều chạy n lần, là bao nhiêu?
💡 Lời giải chi tiết:
Khi hai vòng lặp n lần lồng nhau, tổng số lần thực hiện các câu lệnh bên trong là n nhân n, do đó độ phức tạp là bình phương của n. Kết luận Lý giải O(n^2).
Câu 20:Lợi ích chính của việc sử dụng Hàng đợi vòng (Circular Queue) thay vì Hàng đợi tuyến tính bằng mảng là gì?
💡 Lời giải chi tiết:
Hàng đợi vòng cho phép các chỉ số quay trở lại đầu mảng khi chạm tới cuối, giúp sử dụng hiệu quả không gian bộ nhớ đã bị bỏ trống bởi các thao tác dequeue. Kết luận Lý giải Tận dụng lại các khoảng trống bộ nhớ đã bị xóa ở đầu mảng.
Câu 21:Trong thuật toán Sắp xếp chọn (Selection Sort), ở mỗi bước lặp thứ i, thuật toán thực hiện công việc gì?
💡 Lời giải chi tiết:
Sắp xếp chọn hoạt động bằng cách quét toàn bộ phần còn lại của mảng để tìm giá trị nhỏ nhất và hoán đổi nó với phần tử tại vị trí hiện tại. Kết luận Lý giải Tìm phần tử nhỏ nhất trong đoạn chưa sắp xếp và đưa về vị trí i.
Câu 22:Thuật toán Prim được sử dụng để giải quyết bài toán nào trong lý thuyết đồ thị?
💡 Lời giải chi tiết:
Thuật toán Prim bắt đầu từ một đỉnh và mở rộng dần để tạo ra một cây bao trùm tất cả các đỉnh với tổng trọng số các cạnh là nhỏ nhất. Kết luận Lý giải Tìm cây khung nhỏ nhất (Minimum Spanning Tree).
Câu 23:Đặc trưng cốt lõi của phương pháp Quy hoạch động (Dynamic Programming) là gì?
💡 Lời giải chi tiết:
Quy hoạch động tối ưu hóa việc giải quyết bài toán bằng cách tránh tính toán lặp lại các bài toán con đã giải thông qua việc lưu trữ kết quả vào bảng. Kết luận Lý giải Chia nhỏ bài toán và lưu trữ kết quả các bài toán con để tái sử dụng.
Câu 24:Để xóa một nút trong Danh sách liên kết đơn khi đã biết con trỏ tới nút đứng trước nó, độ phức tạp thời gian là bao nhiêu?
💡 Lời giải chi tiết:
Khi đã có con trỏ tới nút đứng trước, việc xóa chỉ yêu cầu thay đổi liên kết của con trỏ đó tới nút tiếp theo của nút bị xóa, thực hiện trong thời gian hằng số. Kết luận Lý giải O(1).
Câu 25:Độ phức tạp thời gian để tìm kiếm một phần tử trong cây nhị phân hoàn hảo (Perfect Binary Tree) có n nút là bao nhiêu?
💡 Lời giải chi tiết:
Chiều cao của một cây nhị phân hoàn hảo là log2(n+1), do đó việc duyệt từ gốc đến lá trong trường hợp xấu nhất có độ phức tạp logarit. Kết luận Lý giải O(log n).