Đề thi, bài tập trắc nghiệm online Cấu trúc dữ liệu và giải thuậtĐề 12 – Bài tập, đề thi trắc nghiệm online Cấu trúc dữ liệu và giải thuật Đăng vào 2 Tháng 5, 2026 bởi admin Đề 12 – Bài tập, đề thi trắc nghiệm online Cấu trúc dữ liệu và giải thuật Đề 12 – Bài tập, đề thi trắc nghiệm online Cấu trúc dữ liệu và giải thuật Số câu30Quiz ID15592 Làm bài Câu 1 1. Trong cây nhị phân tìm kiếm (Binary Search Tree - BST), các nút có khóa nhỏ hơn khóa của nút gốc được đặt ở đâu? A A. Nút con bên phải B B. Nút con bên trái C C. Cả hai nút con trái và phải D D. Không có quy tắc cụ thể Câu 2 2. Thuật toán tìm kiếm nào hiệu quả nhất trên một mảng đã được sắp xếp? A A. Linear Search (Tìm kiếm tuyến tính) B B. Binary Search (Tìm kiếm nhị phân) C C. Depth-First Search (Tìm kiếm theo chiều sâu) D D. Breadth-First Search (Tìm kiếm theo chiều rộng) Câu 3 3. Đệ quy đuôi (tail recursion) là gì và tại sao nó quan trọng? A A. Một loại đệ quy gây ra lỗi tràn stack; Nó quan trọng vì cần tránh sử dụng B B. Một loại đệ quy mà lời gọi đệ quy là thao tác cuối cùng trong hàm; Nó quan trọng vì có thể được tối ưu hóa bởi trình biên dịch để tránh tràn stack C C. Một loại đệ quy chỉ sử dụng một tham số; Nó quan trọng vì đơn giản hơn D D. Một loại đệ quy luôn trả về giá trị 0; Nó quan trọng vì dễ kiểm tra Câu 4 4. Phương pháp tiếp cận 'chia để trị' (Divide and Conquer) được sử dụng trong thuật toán sắp xếp nào sau đây? A A. Bubble Sort B B. Insertion Sort C C. Merge Sort D D. Selection Sort Câu 5 5. Cấu trúc dữ liệu nào phù hợp nhất để biểu diễn mối quan hệ phân cấp, ví dụ như cây gia phả hoặc cấu trúc thư mục trong hệ điều hành? A A. Mảng (Array) B B. Danh sách liên kết (Linked List) C C. Cây (Tree) D D. Bảng băm (Hash Table) Câu 6 6. Kỹ thuật 'ghi nhớ' (memoization) trong lập trình động (Dynamic Programming) được sử dụng để làm gì? A A. Giảm độ phức tạp không gian B B. Tăng độ phức tạp thời gian C C. 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, từ đó cải thiện hiệu suất D D. Đảm bảo tính đúng đắn của thuật toán Câu 7 7. Khi nào thì nên sử dụng thuật toán tìm kiếm theo chiều sâu (Depth-First Search - DFS) thay vì tìm kiếm theo chiều rộng (Breadth-First Search - BFS) trong đồ thị? A A. Khi muốn tìm đường đi ngắn nhất trong đồ thị không trọng số B B. Khi muốn tìm kiếm nhanh hơn các đỉnh ở xa đỉnh nguồn C C. Khi không gian tìm kiếm rất rộng và có khả năng đi sâu vào các nhánh không triển vọng D D. Khi muốn duyệt qua tất cả các đỉnh theo thứ tự khoảng cách từ đỉnh nguồn Câu 8 8. Cấu trúc dữ liệu nào sau đây phù hợp nhất để kiểm tra xem một chuỗi ngoặc có hợp lệ (ví dụ: '()[]{}' là hợp lệ, '([)]' là không hợp lệ) hay không? A A. Queue B B. Linked List C C. Stack D D. Hash Table Câu 9 9. Cấu trúc dữ liệu nào hoạt động theo nguyên tắc FIFO (First In, First Out)? A A. Stack (Ngăn xếp) B B. Queue (Hàng đợi) C C. Linked List (Danh sách liên kết) D D. Tree (Cây) Câu 10 10. Ưu điểm chính của việc sử dụng danh sách liên kết (Linked List) so với mảng (Array) là gì? A A. Truy cập phần tử ngẫu nhiên nhanh hơn B B. Sử dụng bộ nhớ hiệu quả hơn cho dữ liệu có kích thước thay đổi C C. Tìm kiếm phần tử nhanh hơn D D. Sắp xếp phần tử nhanh hơn Câu 11 11. Thuật toán nào sau đây KHÔNG thuộc nhóm thuật toán sắp xếp so sánh (comparison sort)? A A. Quick Sort B B. Merge Sort C C. Counting Sort D D. Heap Sort Câu 12 12. Độ phức tạp thời gian trung bình của thao tác tìm kiếm trong bảng băm (Hash Table) với phương pháp xử lý xung đột tốt (ví dụ: separate chaining) là bao nhiêu? A A. O(n) B B. O(log n) C C. O(1) D D. O(n log n) Câu 13 13. Kiểu dữ liệu trừu tượng (Abstract Data Type - ADT) nào mô tả một tập hợp các phần tử mà việc thêm và loại bỏ phần tử chỉ có thể thực hiện ở một đầu? A A. Queue B B. Linked List C C. Stack D D. Array Câu 14 14. Trong cấu trúc dữ liệu, thuật ngữ LIFO là viết tắt của nguyên tắc hoạt động nào? A A. Last In, First Out B B. Least Important, First Out C C. Largest In, First Out D D. Linear Index, First Out Câu 15 15. Thuật toán Kruskal và Prim được sử dụng để giải quyết bài toán nào trong lý thuyết đồ thị? A A. Tìm đường đi ngắn nhất B B. Tìm cây khung nhỏ nhất (Minimum Spanning Tree - MST) C C. Tìm chu trình Euler D D. Tìm chu trình Hamilton Câu 16 16. Hoạt động nào sau đây KHÔNG phải là thao tác cơ bản trên Stack? A A. Push (Đẩy) B B. Pop (Lấy ra) C C. Peek (Xem đỉnh) D D. Search (Tìm kiếm) Câu 17 17. Trong cấu trúc dữ liệu đồ thị (Graph), thuật ngữ 'đỉnh' (vertex) còn được gọi là gì? A A. Cạnh (Edge) B B. Nút (Node) C C. Đường đi (Path) D D. Chu trình (Cycle) Câu 18 18. Trong ngữ cảnh của thuật toán, 'tham lam' (greedy) nghĩa là gì? A A. Luôn chọn phương án tốt nhất tại mỗi bước hiện tại với hy vọng đạt được kết quả tối ưu toàn cục B B. Luôn cố gắng tìm kiếm tất cả các giải pháp khả thi trước khi đưa ra quyết định C C. Luôn chọn phương án ngẫu nhiên D D. Luôn chọn phương án phức tạp nhất để đảm bảo tính chính xác Câu 19 19. Trong bảng băm (Hash Table), 'xung đột' (collision) xảy ra khi nào? A A. Khi bảng băm đầy B B. Khi hai hoặc nhiều khóa khác nhau được băm thành cùng một chỉ số (index) C C. Khi cố gắng truy cập một chỉ số không hợp lệ D D. Khi xóa một phần tử khỏi bảng băm Câu 20 20. Ứng dụng phổ biến nhất của hàng đợi ưu tiên (Priority Queue) là gì? A A. Quản lý bộ nhớ B B. Lập lịch công việc trong hệ điều hành C C. Tìm kiếm tuần tự trong mảng D D. Đảo ngược chuỗi ký tự Câu 21 21. Trong ngôn ngữ lập trình, 'con trỏ' (pointer) có vai trò gì liên quan đến cấu trúc dữ liệu? A A. Tính toán địa chỉ bộ nhớ của biến B B. Lưu trữ giá trị của biến C C. Liên kết các nút trong các cấu trúc dữ liệu động như danh sách liên kết và cây D D. Kiểm soát luồng thực thi của chương trình Câu 22 22. Ưu điểm chính của việc sử dụng cây AVL (AVL Tree) so với cây nhị phân tìm kiếm thông thường là gì? A A. Thời gian tìm kiếm trung bình nhanh hơn B B. Luôn đảm bảo cây cân bằng, giúp duy trì độ phức tạp thời gian O(log n) cho các thao tác tìm kiếm, chèn, xóa trong trường hợp xấu nhất C C. Dễ cài đặt hơn D D. Sử dụng ít bộ nhớ hơn Câu 23 23. Độ phức tạp thời gian tốt nhất (best-case time complexity) của thuật toán sắp xếp chèn (Insertion Sort) là bao nhiêu? A A. O(n^2) B B. O(log n) C C. O(n log n) D D. O(n) Câu 24 24. Trong thuật toán Dijkstra, mục đích chính là tìm kiếm cái gì? A A. Chu trình ngắn nhất trong đồ thị B B. Đường đi ngắn nhất từ một đỉnh nguồn đến tất cả các đỉnh khác trong đồ thị có trọng số không âm C C. Đường đi dài nhất trong đồ thị D D. Tất cả các đường đi có thể giữa hai đỉnh Câu 25 25. Trong cây đỏ-đen (Red-Black Tree), quy tắc nào sau đây KHÔNG đúng? A A. Mỗi nút có màu đỏ hoặc đen B B. Nút gốc luôn có màu đen C C. Tất cả các đường đi từ một nút đến các nút lá (NIL) của nó đều chứa cùng số lượng nút đen D D. Nút con của một nút đỏ có thể là đỏ hoặc đen Câu 26 26. Độ phức tạp không gian (space complexity) của thuật toán sắp xếp trộn (Merge Sort) chủ yếu đến từ đâu? A A. Các phép so sánh phần tử B B. Việc sử dụng đệ quy C C. Mảng tạm thời được sử dụng trong quá trình trộn D D. Số lượng phần tử đầu vào Câu 27 27. Phương pháp lập trình 'đệ quy' (recursion) hoạt động dựa trên nguyên tắc nào? A A. Chia nhỏ bài toán thành các bài toán con có kích thước lớn hơn B B. Chia nhỏ bài toán thành các bài toán con tương tự nhưng có kích thước nhỏ hơn, và gọi lại chính hàm để giải các bài toán con đó C C. Giải bài toán bằng cách lặp đi lặp lại một khối lệnh cho đến khi đạt điều kiện dừng D D. Sử dụng cấu trúc dữ liệu mảng để lưu trữ và truy xuất dữ liệu Câu 28 28. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình là O(n log n)? A A. Bubble Sort (Sắp xếp nổi bọt) B B. Insertion Sort (Sắp xếp chèn) C C. Quick Sort (Sắp xếp nhanh) D D. Selection Sort (Sắp xếp chọn) Câu 29 29. Trong đồ thị vô hướng (undirected graph), bậc của một đỉnh (degree of a vertex) là gì? A A. Số lượng đỉnh trong đồ thị B B. Số lượng cạnh trong đồ thị C C. Số lượng cạnh liên kết với đỉnh đó D D. Độ dài đường đi ngắn nhất từ đỉnh đó đến đỉnh khác Câu 30 30. Trong thuật toán sắp xếp nhanh (Quick Sort), việc chọn phần tử chốt (pivot) ảnh hưởng như thế nào đến hiệu suất của thuật toán? A A. Không ảnh hưởng gì B B. Chọn phần tử chốt tốt sẽ giúp giảm độ phức tạp không gian C C. Chọn phần tử chốt tốt (ví dụ như phần tử trung vị) giúp thuật toán đạt hiệu suất O(n log n) trung bình; chọn phần tử chốt kém (ví dụ như phần tử nhỏ nhất hoặc lớn nhất trong mảng đã sắp xếp) có thể dẫn đến trường hợp xấu nhất O(n^2) D D. Chọn phần tử chốt tốt luôn đảm bảo độ phức tạp thời gian O(n log n) trong mọi trường hợp Đề 11 – Bài tập, đề thi trắc nghiệm online Quản lý bán hàng Đề 13 – Bài tập, đề thi trắc nghiệm online Quản trị nguồn nhân lực