Bộ 1 - 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 cấu trúc dữ liệu và giải thuật, độ phức tạp thời gian 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 gồm 'n' phần tử là bao nhiêu?
💡 Lời giải chi tiết:
Theo phân tích thuật toán phổ biến, tìm kiếm nhị phân liên tục chia đôi không gian tìm kiếm sau mỗi bước so sánh nên số lần thực hiện tối đa tỷ lệ thuận với logarit cơ số 2 của n. Kết luận Lý giải: O(log n)
Câu 2:Cấu trúc dữ liệu nào sau đây hoạt động theo nguyên lý 'Vào sau, Ra trước' (Last In, First Out - LIFO)?
💡 Lời giải chi tiết:
Theo định nghĩa cơ bản, ngăn xếp (stack) là một danh sách có thứ tự mà việc chèn và xóa phần tử chỉ được thực hiện tại một đầu gọi là đỉnh, tuân theo quy tắc vào sau ra trước. Kết luận Lý giải: Ngăn xếp (Stack)
Câu 3:Độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán sắp xếp nhanh (Quick Sort) là gì?
💡 Lời giải chi tiết:
Theo phân tích kỹ thuật, nếu việc chọn phần tử chốt (pivot) luôn rơi vào giá trị lớn nhất hoặc nhỏ nhất của dãy, thuật toán Quick Sort sẽ thực hiện số phép so sánh tương đương với bình phương số phần tử. Kết luận Lý giải: O(n mũ 2)
Câu 4:Ưu điểm lớn nhất của danh sách liên kết (Linked List) so với mảng (Array) là gì?
💡 Lời giải chi tiết:
Dựa trên cấu trúc lưu trữ không liên tục, danh sách liên kết cho phép chèn hoặc xóa phần tử mà không cần di chuyển các phần tử khác như mảng, đồng thời không yêu cầu khai báo kích thước cố định. Kết luận Lý giải: Khả năng thay đổi kích thước linh hoạt và chèn/xóa phần tử hiệu quả
Câu 5:Trong cấu trúc dữ liệu Cây (Tree), một nút không có nút con được gọi là gì?
💡 Lời giải chi tiết:
Theo thuật ngữ cấu trúc cây, nút lá là những nút nằm ở cấp cuối cùng của một nhánh và không sở hữu bất kỳ nút con nào bên dưới nó. Kết luận Lý giải: Nút lá (Leaf node)
Câu 6:Thuật toán tìm kiếm theo chiều rộng (Breadth-First Search - BFS) thường sử dụng cấu trúc dữ liệu nào để quản lý các nút cần duyệt?
💡 Lời giải chi tiết:
Theo quy trình duyệt đồ thị, BFS khám phá các nút theo từng cấp độ ưu tiên nút gần nguồn hơn, do đó cần hàng đợi để duy trì thứ tự thăm các nút theo nguyên tắc vào trước ra trước. Kết luận Lý giải: Hàng đợi (Queue)
Câu 7:Trong một bảng băm (Hash Table), hiện tượng 'xung đột' (collision) xảy ra khi nào?
💡 Lời giải chi tiết:
Theo nguyên lý hàm băm, xung đột xảy ra khi hàm băm tạo ra cùng một giá trị băm cho các khóa đầu vào khác biệt, dẫn đến việc tranh chấp vị trí lưu trữ trong bảng. Kết luận Lý giải: Khi hai khóa khác nhau được hàm băm ánh xạ tới cùng một chỉ số
Câu 8:Độ phức tạp thời gian trung bình của việc chèn một phần tử vào một Cây tìm kiếm nhị phân (Binary Search Tree) cân bằng là bao nhiêu?
💡 Lời giải chi tiết:
Đối với cây tìm kiếm nhị phân cân bằng, chiều cao của cây luôn được duy trì ở mức logarit của số nút, dẫn đến các thao tác tìm kiếm và chèn có độ phức tạp tương ứng. Kết luận Lý giải: O(log n)
Câu 9:Thuật toán sắp xếp nào sau đây luôn có độ phức tạp thời gian là O(n log n) trong cả trường hợp tốt nhất, trung bình và xấu nhất?
💡 Lời giải chi tiết:
Theo phân tích hiệu năng, Merge Sort sử dụng chiến lược chia để trị và luôn chia mảng thành hai nửa bằng nhau, đảm bảo thời gian xử lý ổn định ở mức n log n bất kể dữ liệu đầu vào. Kết luận Lý giải: Sắp xếp trộn (Merge Sort)
Câu 10:Cấu trúc dữ liệu Đồ thị (Graph) được biểu diễn bằng 'Ma trận kề' (Adjacency Matrix) sẽ tốn không gian bộ nhớ là bao nhiêu với 'V' là số đỉnh?
💡 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 nhân V để biểu diễn mối quan hệ giữa tất cả các cặp đỉnh, do đó không gian bộ nhớ tỷ lệ thuận với bình phương số đỉnh. Kết luận Lý giải: O(V mũ 2)
Câu 11:Thuật toán Dijkstra được sử dụng để giải quyết bài toán nào sau đây trong đồ thị?
💡 Lời giải chi tiết:
Thuật toán Dijkstra là thuật toán phổ biến nhất dùng để tìm đường đi có trọng số tổng nhỏ nhất từ một đỉnh xuất phát đến tất cả các đỉnh còn lại 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 khác
Câu 12:Trong cấu trúc dữ liệu Hàng đợi ưu tiên (Priority Queue), thao tác lấy phần tử có ưu tiên cao nhất thường được thực hiện hiệu quả nhất bằng cách sử dụng cấu trúc nào?
💡 Lời giải chi tiết:
Cấu trúc Heap (Min-Heap hoặc Max-Heap) cho phép truy cập phần tử nhỏ nhất hoặc lớn nhất ở gốc với thời gian hằng số và tái cấu trúc lại cây rất nhanh chóng. Kết luận Lý giải: Đống (Heap)
Câu 13:Một cây AVL là một loại cây tìm kiếm nhị phân có đặc điểm gì nổi bật?
💡 Lời giải chi tiết:
Theo định nghĩa của Adelson-Velsky và Landis, cây AVL duy trì tính cân bằng thông qua các phép quay để đảm bảo hiệu suất tìm kiếm luôn đạt mức logarit. Kết luận Lý giải: Tự cân bằng sao cho độ chênh lệch chiều cao giữa hai cây con không quá 1
Câu 14:Thuật toán nào sau đây được sử dụng để tìm Cây bao trùm nhỏ nhất (Minimum Spanning Tree) của một đồ thị?
💡 Lời giải chi tiết:
Thuật toán Kruskal hoạt động bằng cách sắp xếp các cạnh của đồ thị theo trọng số tăng dần và lần lượt thêm chúng vào cây nếu không tạo thành chu trình để hình thành cây bao trùm tối ưu. Kết luận Lý giải: Thuật toán Kruskal
Câu 15:Độ phức tạp không gian (Space Complexity) của thuật toán sắp xếp trộn (Merge Sort) khi thực hiện trên mảng là bao nhiêu?
💡 Lời giải chi tiết:
Merge Sort yêu cầu một mảng phụ có kích thước bằng mảng ban đầu để thực hiện quá trình trộn các mảng con đã sắp xếp, do đó độ phức tạp không gian là tuyến tính. Kết luận Lý giải: O(n)
Câu 16:Phép duyệt cây nhị phân nào sau đây sẽ cho kết quả là một dãy các giá trị tăng dần nếu áp dụng trên Cây tìm kiếm nhị phân (BST)?
💡 Lời giải chi tiết:
Theo tính chất của BST, các nút ở cây con trái luôn nhỏ hơn nút gốc và nút gốc nhỏ hơn các nút ở cây con phải, nên phép duyệt trung thứ tự (Trái-Gốc-Phải) sẽ trả về dãy đã sắp xếp. Kết luận Lý giải: Duyệt trung thứ tự (In-order)
Câu 17:Cấu trúc dữ liệu 'Hàng đợi vòng' (Circular Queue) giải quyết vấn đề gì của hàng đợi triển khai bằng mảng thông thường?
💡 Lời giải chi tiết:
Hàng đợi vòng sử dụng phép toán chia lấy dư để kết nối điểm cuối mảng trở lại điểm đầu, giúp tận dụng các ô nhớ đã bị bỏ trống do thao tác dequeue mà hàng đợi mảng tĩnh thường lãng phí. Kết luận Lý giải: Tối ưu hóa việc sử dụng lại không gian trống ở đầu mảng sau khi lấy phần tử ra
Câu 18:Trong ký hiệu Big O, nếu một giải thuật có thời gian chạy độc lập với kích thước dữ liệu đầu vào, ta nói giải thuật đó có độ phức tạp là?
💡 Lời giải chi tiết:
Độ phức tạp O(1), hay còn gọi là thời gian hằng số, biểu thị rằng giải thuật luôn thực hiện một số bước cố định bất kể dữ liệu đầu vào lớn đến mức nào. Kết luận Lý giải: O(1)
Câu 19:Sự khác biệt chính giữa Danh sách liên kết đơn (Singly Linked List) và Danh sách liên kết đôi (Doubly Linked List) là gì?
💡 Lời giải chi tiết:
Mỗi nút trong danh sách liên kết đôi chứa hai con trỏ trỏ đến nút kế tiếp và nút phía trước, cho phép linh hoạt duyệt danh sách theo cả hai hướng thay vì chỉ một hướng như danh sách liên kết đơn. Kết luận Lý giải: Danh sách liên kết đôi cho phép duyệt theo cả hai chiều tiến và lùi
Câu 20:Giải thuật sắp xếp nào hoạt động bằng cách lặp đi lặp lại việc tìm phần tử nhỏ nhất từ phần chưa sắp xếp và đưa nó lên đầu?
💡 Lời giải chi tiết:
Dựa trên chiến lược tìm kiếm cực trị, Selection Sort chia danh sách thành hai phần và liên tục chọn phần tử nhỏ nhất còn lại để đổi chỗ với phần tử ở vị trí biên của phần đã sắp xếp. Kết luận Lý giải: Sắp xếp chọn (Selection Sort)
Câu 21:Trong một 'Đống tối đa' (Max-Heap) biểu diễn bằng mảng, nếu một nút ở chỉ số 'i' (bắt đầu từ 0), thì các nút con của nó nằm ở chỉ số nào?
💡 Lời giải chi tiết:
Theo quy tắc ánh xạ cây nhị phân hoàn chỉnh vào mảng, nút con trái và nút con phải của nút tại vị trí i lần lượt được xác định bởi công thức 2i+1 và 2i+2. Kết luận Lý giải: 2 nhân i cộng 1 và 2 nhân i cộng 2
Câu 22:Kỹ thuật 'Đệ quy' (Recursion) trong giải thuật thường đi kèm với việc sử dụng ngầm định cấu trúc dữ liệu nào của hệ thống?
💡 Lời giải chi tiết:
Mỗi khi một hàm đệ quy tự gọi chính nó, hệ thống sẽ lưu trữ trạng thái hiện tại của hàm vào ngăn xếp để có thể quay lại thực hiện tiếp sau khi lời gọi con kết thúc. Kết luận Lý giải: Ngăn xếp hệ thống (System Stack)
Câu 23:Trong lý thuyết đồ thị, một đồ thị có hướng không có chu trình được gọi là gì?
💡 Lời giải chi tiết:
DAG là viết tắt của Directed Acyclic Graph, dùng để chỉ loại đồ thị có hướng mà không có bất kỳ đường đi nào bắt đầu từ một đỉnh và quay trở lại chính nó. Kết luận Lý giải: Đồ thị DAG (Directed Acyclic Graph)
Câu 24:Phương pháp 'Chia để trị' (Divide and Conquer) được áp dụng trong thuật toán nào sau đây?
💡 Lời giải chi tiết:
Merge Sort áp dụng triệt để chia để trị bằng cách chia nhỏ mảng thành các mảng đơn lẻ, sau đó giải quyết từng mảng và kết hợp chúng lại để có kết quả cuối cùng. Kết luận Lý giải: Sắp xếp trộn (Merge Sort)
Câu 25:Trong cấu trúc dữ liệu Tries (Cây tiền tố), mỗi nút thường đại diện cho thành phần nào?
💡 Lời giải chi tiết:
Cấu trúc Trie được thiết kế để lưu trữ các tập hợp chuỗi sao cho mỗi nút trên cây tương ứng với một ký tự, giúp việc tìm kiếm tiền tố diễn ra cực kỳ hiệu quả. Kết luận Lý giải: Một ký tự trong chuỗi