Bài kiểm tra đánh giá: Cấu trúc dữ liệu (Array, List, Set, Map, Tree, Java 8)
Thông tin đề
- Môn
- Cấu trúc dữ liệu
- Kỳ thi
- University
- Số câu
- 22 câu
- Thời gian
- 40 phút
- Đáp án
- ✓ Có giải thích
Nội dung đề (22 câu)
- Câu 1.
Mảng (Array) trong Java có đặc điểm gì nổi bật nhất?
- A.
Kích thước có thể thay đổi linh hoạt trong quá trình sử dụng
- B.
Các phần tử được truy cập thông qua chỉ số (index) và có kích thước cố định
- C.
Không thể chứa các kiểu dữ liệu nguyên thủy
- D.
Chỉ lưu trữ được các đối tượng kiểu String
- A.
- Câu 2.
Khai báo nào sau đây là đúng để tạo một mảng số nguyên gồm 5 phần tử trong Java?
- A.
int arr = new int[5];
- B.
int[] arr = new int[5];
- C.
int arr[5] = new int;
- D.
int[] arr = new int(5);
- A.
- Câu 3.
Độ phức tạp trung bình để truy cập một phần tử trong mảng theo chỉ số là bao nhiêu?
- A.
O(n)
- B.
O(log n)
- C.
O(1)
- D.
O(n²)
- A.
- Câu 4.
ArrayList trong Java implement (triển khai) interface nào?
- A.
Map
- B.
Set
- C.
List
- D.
Collection đơn lẻ (không kế thừa List)
- A.
- Câu 5.
Phương thức nào dùng để thêm một phần tử vào cuối danh sách trong ArrayList?
- A.
add()
- B.
append()
- C.
push()
- D.
insertLast()
- A.
- Câu 6.
Khi cần thực hiện nhiều thao tác chèn/xóa ở đầu danh sách, nên chọn cấu trúc nào?
- A.
ArrayList vì truy cập nhanh
- B.
LinkedList vì thao tác chèn/xóa ở đầu hiệu quả hơn
- C.
Cả hai có hiệu năng như nhau
- D.
Không thể chèn/xóa ở đầu danh sách
- A.
- Câu 7.
Cấu trúc dữ liệu nào KHÔNG cho phép các phần tử trùng lặp?
- A.
List
- B.
ArrayList
- C.
Set
- D.
LinkedList
- A.
- Câu 8.
Lớp nào trong Java triển khai Set và duy trì các phần tử theo thứ tự sắp xếp tự nhiên?
- A.
HashSet
- B.
LinkedHashSet
- C.
TreeSet
- D.
EnumSet
- A.
- Câu 9.
Cấu trúc dữ liệu bên dưới (underlying) mà HashSet sử dụng trong Java là gì?
- A.
Mảng (Array)
- B.
LinkedList
- C.
HashMap
- D.
Cây nhị phân (Binary Tree)
- A.
- Câu 10.
Map trong Java lưu trữ dữ liệu theo cặp:
- A.
Giá trị đơn lẻ (single value)
- B.
Cặp Khóa - Giá trị (Key-Value pairs)
- C.
Chỉ số và giá trị (index-based)
- D.
Chỉ chứa đối tượng kiểu Object
- A.
- Câu 11.
Lớp nào cho phép key và value là null, đồng thời KHÔNG đồng bộ (not synchronized)?
- A.
TreeMap
- B.
Hashtable
- C.
HashMap
- D.
ConcurrentHashMap
- A.
- Câu 12.
Độ phức tạp trung bình của thao tác get() và put() trong HashMap là bao nhiêu?
- A.
O(n)
- B.
O(log n)
- C.
O(1)
- D.
O(n²)
- A.
- Câu 13.
Cây nhị phân (Binary Tree) là cây mà mỗi nút có tối đa bao nhiêu nút con?
- A.
1 nút con
- B.
2 nút con
- C.
3 nút con
- D.
Không giới hạn
- A.
- Câu 14.
Trong cây tìm kiếm nhị phân (BST), cây con bên trái của một nút chứa các nút có giá trị:
- A.
Lớn hơn giá trị của nút đó
- B.
Nhỏ hơn giá trị của nút đó
- C.
Bằng giá trị của nút đó
- D.
Không có quy tắc cụ thể
- A.
- Câu 15.
Duyệt cây theo thứ tự nào thăm nút gốc trước, sau đó đến cây con trái rồi cây con phải?
- A.
In-order (Trung thứ tự)
- B.
Pre-order (Tiền thứ tự)
- C.
Post-order (Hậu thứ tự)
- D.
Level-order (Theo tầng)
- A.
- Câu 16.
Tính năng nào được giới thiệu trong Java 8 cho phép lập trình hàm (functional programming)?
- A.
Generics
- B.
Lambda Expressions
- C.
Annotations
- D.
Reflection
- A.
- Câu 17.
Cú pháp nào sau đây là biểu thức Lambda đúng trong Java 8?
- A.
(x, y) -> x + y
- B.
function(x, y) { return x + y; }
- C.
lambda(x, y) = x + y
- D.
def(x, y) => x + y
- A.
- Câu 18.
Phương thức nào dùng để chuyển một Collection thành Stream trong Java 8?
- A.
toStream()
- B.
stream()
- C.
asStream()
- D.
convertToStream()
- A.
- Câu 19.
Annotation @FunctionalInterface trong Java 8 chỉ ra rằng interface có đúng ____ phương thức trừu tượng (abstract method).
- Câu 20.
Độ phức tạp thời gian trung bình của phép tìm kiếm tuyến tính trên một mảng KHÔNG được sắp xếp là: ____ (dùng ký hiệu Big O).
- Câu 21.
Hãy so sánh ArrayList và LinkedList trong Java. Phân tích về: cấu trúc bên trong, độ phức tạp của các thao tác thêm/xóa/truy cập, và đưa ra ví dụ cụ thể về tình huống nên dùng mỗi loại.
- Câu 22.
Trình bày về Stream API trong Java 8. Nêu ít nhất 3 phép toán phổ biến (filter, sorted, map, collect...) và viết một đoạn code Java 8 minh họa cách lọc các số chẵn từ một List
và thu thập kết quả vào một List mới.
Đáp án và giải thích từng câu có trong chế độ .