Bộ 6 - 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:Độ phức tạp thời gian trung bình 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à bao nhiêu?
💡 Lời giải chi tiết:
Theo lý thuyết khoa học máy tính, tìm kiếm nhị phân giảm một nửa không gian tìm kiếm sau mỗi lần so sánh nên có độ phức tạp logarit. Kết luận Lý giải O(log n).
Câu 2:Trong cấu trúc dữ liệu Ngăn xếp (Stack), thao tác nào được sử dụng để lấy một phần tử ra khỏi đỉnh?
💡 Lời giải chi tiết:
Ngăn xếp hoạt động theo nguyên tắc LIFO (vào sau ra trước) và thao tác lấy phần tử ở đỉnh được gọi là Pop. Kết luận Lý giải Pop.
Câu 3:Cấu trúc dữ liệu Hàng đợi (Queue) hoạt động theo nguyên tắc nào sau đây?
💡 Lời giải chi tiết:
Theo định nghĩa cơ bản, hàng đợi là cấu trúc dữ liệu tuyến tính trong đó phần tử vào đầu tiên sẽ được xử lý và lấy ra đầu tiên. Kết luận Lý giải FIFO (First In First Out).
Câu 4:Ưu điểm chính 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:
Danh sách liên kết cho phép cấp phát bộ nhớ động nên không cần xác định kích thước cố định như mảng tĩnh. Kết luận Lý giải Kích thước có thể thay đổi linh hoạt trong quá trình thực thi.
Câu 5:Trong một Cây tìm kiếm nhị phân (BST), thuộc tính nào sau đây luôn đúng đối với mọi nút?
💡 Lời giải chi tiết:
Theo định nghĩa của cây tìm kiếm nhị phân, giá trị của các nút thuộc cây con trái luôn nhỏ hơn nút gốc và cây con phải luôn lớn hơn nút gốc. Kết luận Lý giải Nút con trái nhỏ hơn nút gốc và nút con phải lớn hơn nút gốc.
Câu 6:Trường hợp xấu nhất của thuật toán Sắp xếp nhanh (Quick Sort) xảy ra khi nào?
💡 Lời giải chi tiết:
Khi phần tử chốt luôn là giá trị cực đại hoặc cực tiểu, thuật toán Quick Sort bị suy biến và đạt độ phức tạp thời gian O(n bình phương). Kết luận Lý giải Mảng đã được sắp xếp hoặc sắp xếp ngược và chọn phần tử chốt là phần tử đầu hoặc cuối.
Câu 7:Thuật toán Sắp xếp trộn (Merge Sort) có độ phức tạp không gian (Space Complexity) là bao nhiêu?
💡 Lời giải chi tiết:
Thuật toán sắp xếp trộn yêu cầu thêm 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. Kết luận Lý giải O(n).
Câu 8:Trong cây cân bằng AVL, hiệu số chiều cao (Balance Factor) của cây con trái và cây con phải của bất kỳ nút nào chỉ có thể là gì?
💡 Lời giải chi tiết:
Theo định nghĩa cây AVL, để duy trì tính cân bằng, trị tuyệt đối của hiệu số chiều cao giữa hai cây con không được vượt quá 1. Kết luận Lý giải -1, 0, hoặc 1.
Câu 9: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 dùng để tìm đường đi ngắn nhất từ một đỉnh gốc đến 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 tất cả các đỉnh khác.
Câu 10:Thuật toán Duyệt đồ thị theo chiều rộng (Breadth-First Search - BFS) thường sử dụng cấu trúc dữ liệu nào?
💡 Lời giải chi tiết:
Để đảm bảo các đỉnh gần nguồn được thăm trước các đỉnh xa hơn, BFS sử dụng hàng đợi để quản lý thứ tự các đỉnh cần duyệt. Kết luận Lý giải Hàng đợi (Queue).
Câu 11:Thuật toán Duyệt đồ thị theo chiều sâu (Depth-First Search - DFS) thường sử dụng cấu trúc dữ liệu nào để quản lý các đỉnh?
💡 Lời giải chi tiết:
DFS khám phá càng sâu càng tốt dọc theo mỗi nhánh trước khi quay lui, do đó nó sử dụng ngăn xếp hoặc cơ chế đệ quy. Kết luận Lý giải Ngăn xếp (Stack).
Câu 12:Thời gian truy cập một phần tử tại một chỉ số bất kỳ trong một mảng (Array) là bao nhiêu?
💡 Lời giải chi tiết:
Nhờ vào việc các phần tử mảng được lưu trữ liên tiếp trong bộ nhớ, ta có thể tính toán địa chỉ và truy cập trực tiếp phần tử qua chỉ số trong thời gian hằng số. Kết luận Lý giải O(1).
Câu 13:Thuật toán sắp xếp nào sau đây hoạt động hiệu quả nhất (ít phép so sánh nhất) đối với một mảng gần như đã được sắp xếp?
💡 Lời giải chi tiết:
Trong trường hợp mảng gần như đã sắp xếp, thuật toán sắp xếp chèn chỉ thực hiện rất ít phép dịch chuyển phần tử, dẫn đến thời gian chạy tiệm cận O(n). Kết luận Lý giải Sắp xếp chèn (Insertion Sort).
Câu 14:Phép duyệt cây theo thứ tự sau (Post-order Traversal) tuân theo quy tắc nào?
💡 Lời giải chi tiết:
Phép duyệt thứ tự sau sẽ thăm toàn bộ cây con bên trái, sau đó đến cây con bên phải và cuối cùng mới thăm nút gốc. Kết luận Lý giải Trái -> Phải -> Gốc.
Câu 15:Kỹ thuật giải quyết xung đột (Collision) trong bảng băm bằng cách sử dụng danh sách liên kết tại mỗi vị trí chỉ số được gọi là gì?
💡 Lời giải chi tiết:
Phương pháp Chaining lưu trữ tất cả các phần tử có cùng giá trị băm vào một danh sách liên kết tại ô tương ứng trong bảng băm. Kết luận Lý giải Kết nối trực tiếp (Chaining).
Câu 16:Cây nhị phân đầy đủ (Complete Binary Tree) là loại cây nhị phân như thế nào?
💡 Lời giải chi tiết:
Cây nhị phân đầy đủ đảm bảo các mức được lấp đầy theo thứ tự từ trên xuống dưới và từ trái sang phải để tối ưu hóa việc lưu trữ dưới dạng mảng. Kết luận Lý giải Mọi mức đều được lấp đầy hoàn toàn trừ mức cuối cùng được lấp đầy từ trái sang phải.
Câu 17:Đặc điểm nổi bậ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:
Mỗi nút trong danh sách liên kết đôi chứa hai con trỏ, một trỏ tới nút kế tiếp và một trỏ về nút phía trước, cho phép duyệt linh hoạt theo 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 18:Trong thuật toán Sắp xếp nổi bọt (Bubble Sort), sau mỗi lần lặp của vòng lặp bên ngoài, điều gì chắc chắn xảy ra?
💡 Lời giải chi tiết:
Cơ chế của Bubble Sort là so sánh và hoán đổi các cặp phần tử liền kề, khiến phần tử lớn nhất nổi dần lên vị trí cuối sau mỗi lượt duyệt. Kết luận Lý giải Phần tử lớn nhất trong số các phần tử chưa được sắp xếp sẽ được đưa về đúng vị trí cuối mảng.
Câu 19:Đặc điểm cơ bản của Thuật toán Tham lam (Greedy Algorithm) là gì?
💡 Lời giải chi tiết:
Thuật toán tham lam đưa ra lựa chọn tối ưu tại mỗi bước cục bộ với hy vọng sẽ dẫn đến giải pháp tối ưu trên toàn hệ thống. Kết luận Lý giải Tại mỗi bước, chọn phương án có vẻ là tốt nhất ở thời điểm hiện tại.
Câu 20:Lỗi 'Stack Overflow' thường xảy ra trong trường hợp nào sau đây?
💡 Lời giải chi tiết:
Mỗi lần gọi hàm đệ quy sẽ tiêu tốn không gian trên ngăn xếp hệ thống, nếu đệ quy không có điểm dừng sẽ làm cạn kiệt bộ nhớ ngăn xếp này. Kết luận Lý giải Đệ quy quá sâu hoặc đệ quy vô hạn.
Câu 21:Để biểu diễn một đồ thị có V đỉnh bằng Ma trận kề (Adjacency Matrix), không gian bộ nhớ cần thiết là bao nhiêu?
💡 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 x V để biểu diễn mối quan hệ giữa tất cả các cặp đỉnh trong đồ thị. Kết luận Lý giải O(V mũ 2).
Câu 22:Thuật toán Sắp xếp vun đống (Heap Sort) có độ phức tạp thời gian trong trường hợp xấu nhất là bao nhiêu?
💡 Lời giải chi tiết:
Heap Sort luôn duy trì cấu trúc Heap và thực hiện n lần việc lấy phần tử cực trị, mỗi lần tốn O(log n) nên tổng thời gian luôn là O(n log n). Kết luận Lý giải O(n log n).
Câu 23:Điều kiện tiên quyết để áp dụng thuật toán Tìm kiếm nhị phân trên một mảng là gì?
💡 Lời giải chi tiết:
Thuật toán tìm kiếm nhị phân dựa trên việc so sánh phần tử ở giữa để loại bỏ một nửa mảng, điều này chỉ đúng khi dữ liệu đã được sắp xếp. Kết luận Lý giải Mảng phải được sắp xếp theo một thứ tự xác định.
Câu 24:Tại sao Hàng đợi vòng (Circular Queue) lại được sử dụng thay thế cho Hàng đợi tuyến tính thông thường?
💡 Lời giải chi tiết:
Hàng đợi vòng khắc phục nhược điểm lãng phí bộ nhớ của hàng đợi tuyến tính bằng cách cho phép chỉ số quay lại đầu mảng khi đạt đến giới hạn cuối. Kết luận Lý giải Để tận dụng lại các khoảng trống ở đầu mảng sau khi các phần tử đã bị lấy ra.
Câu 25:Thuật toán Prim được sử dụng để làm gì?
💡 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 cây khung bằng cách chọn cạnh có trọng số nhỏ nhất nối từ một đỉnh trong cây đến một đỉnh ngoài cây. Kết luận Lý giải Tìm cây khung nhỏ nhất của một đồ thị vô hướng có trọng số.