Lập trình Java University

Bài kiểm tra đánh giá: Tổng quan về ArrayList trong Java

20 câu
35 phút
Có đáp án

Thông tin đề

Môn
Lập trình Java
Kỳ thi
University
Số câu
20 câu
Thời gian
35 phút
Đáp án
✓ Có giải thích

Nội dung đề (20 câu)

  1. Câu 1.

    Điểm khác biệt cơ bản nhất giữa mảng (Array) và ArrayList trong Java là gì?

    • A.

      Array lưu trữ được nhiều kiểu dữ liệu khác nhau cùng lúc, ArrayList thì không

    • B.

      Array có kích thước cố định khi khởi tạo, ArrayList có kích thước động có thể thay đổi

    • C.

      Array chỉ lưu được kiểu nguyên thủy, ArrayList chỉ lưu được đối tượng

    • D.

      ArrayList hoạt động nhanh hơn Array trong mọi trường hợp

  2. Câu 2.

    ArrayList thuộc package nào trong Java?

    • A.

      java.lang

    • B.

      java.io

    • C.

      java.util

    • D.

      java.collection

  3. Câu 3.

    Câu lệnh nào sau đây khai báo một ArrayList đúng cách trong Java?

    • A.

      ArrayList list = new ArrayList();

    • B.

      ArrayList list = new ArrayList();

    • C.

      ArrayList list = new ArrayList(10);

    • D.

      Cả B và C đều đúng

  4. Câu 4.

    Vì sao ArrayList không thể lưu trực tiếp kiểu dữ liệu nguyên thủy (primitive) như int, double, char?

    • A.

      Vì ArrayList không hỗ trợ generic

    • B.

      Vì ArrayList chỉ làm việc với đối tượng, cần dùng wrapper class (Integer, Double, Character...)

    • C.

      Vì primitive không có phương thức equals()

    • D.

      Vì ArrayList chỉ lưu được kiểu String

  5. Câu 5.

    Khi tạo ArrayList mới không truyền tham số (new ArrayList<>()), dung lượng (capacity) ban đầu mặc định là bao nhiêu?

    • A.

      0

    • B.

      5

    • C.

      10

    • D.

      16

  6. Câu 6.

    Phương thức add(E e) của ArrayList trả về kiểu dữ liệu gì?

    • A.

      void - không trả về giá trị

    • B.

      int - chỉ số phần tử được thêm

    • C.

      boolean - true nếu thêm thành công

    • D.

      E - chính phần tử vừa thêm

  7. Câu 7.

    Cho ArrayList list = new ArrayList<>(); với list chứa ["A", "B", "C"]. Kết quả của list.get(1) là gì?

    • A.

      "A"

    • B.

      "B"

    • C.

      "C"

    • D.

      Ném ngoại lệ IndexOutOfBoundsException

  8. Câu 8.

    Cho ArrayList list = new ArrayList<>(Arrays.asList(10, 20, 30, 40, 50)). Kết quả của list.remove(2) là gì?

    • A.

      Xóa phần tử có giá trị 2 khỏi list

    • B.

      Xóa phần tử tại vị trí index 2, list còn [10, 20, 40, 50]

    • C.

      Xóa phần tử cuối cùng của list

    • D.

      Không xóa gì vì không có phần tử 2

  9. Câu 9.

    Phương thức contains(Object o) của ArrayList trả về giá trị gì?

    • A.

      int - số lần xuất hiện của phần tử

    • B.

      boolean - true nếu danh sách chứa phần tử đó

    • C.

      Object - phần tử tìm được đầu tiên

    • D.

      void - in ra màn hình

  10. Câu 10.

    Điều nào sau đây KHÔNG đúng khi sử dụng Generic với ArrayList?

    • A.

      Generic giúp đảm bảo type-safety tại compile-time

    • B.

      Không thể dùng ArrayList vì generic không chấp nhận kiểu primitive

    • C.

      Có thể dùng ký hiệu diamond <> để rút gọn khai báo: ArrayList list = new ArrayList<>()

    • D.

      Một ArrayList có thể chứa nhiều kiểu dữ liệu khác nhau khi dùng generic

  11. Câu 11.

    Đoạn code nào sau đây duyệt một ArrayList names đúng cách sử dụng vòng lặp for-each?

    • A.

      for (int i = 0; i < names.size(); i++) { String n = names[i]; }

    • B.

      for (String n : names) { System.out.println(n); }

    • C.

      for (String n in names) { System.out.println(n); }

    • D.

      foreach (String n : names) { System.out.println(n); }

  12. Câu 12.

    Phương thức hasNext() của Iterator trả về giá trị gì?

    • A.

      Phần tử tiếp theo trong danh sách

    • B.

      boolean - true nếu còn phần tử chưa duyệt

    • C.

      int - số phần tử còn lại

    • D.

      void - di chuyển con trỏ tới phần tử tiếp theo

  13. Câu 13.

    Khi sửa đổi ArrayList trong lúc đang duyệt bằng Iterator (không dùng iterator.remove()), ngoại lệ nào có thể xảy ra?

    • A.

      NullPointerException

    • B.

      ArrayIndexOutOfBoundsException

    • C.

      ConcurrentModificationException

    • D.

      ClassCastException

  14. Câu 14.

    Độ phức tạp thời gian của phương thức get(int index) trong ArrayList là gì?

    • A.

      O(1) - thời gian hằng số

    • B.

      O(log n)

    • C.

      O(n) - tuyến tính

    • D.

      O(n²)

  15. Câu 15.

    Phương thức ensureCapacity(int minCapacity) có tác dụng gì?

    • A.

      Xóa bớt phần tử thừa để tối ưu bộ nhớ

    • B.

      Đặt giới hạn số phần tử tối đa cho ArrayList

    • C.

      Tăng dung lượng mảng nền tảng lên ít nhất minCapacity để giảm số lần mở rộng khi thêm phần tử

    • D.

      Sắp xếp các phần tử trong ArrayList

  16. Câu 16.

    Phương thức subList(int fromIndex, int toIndex) trả về gì?

    • A.

      Một ArrayList mới hoàn toàn độc lập với danh sách gốc

    • B.

      Một view (khung nhìn) của danh sách gốc - thay đổi trên subList sẽ ảnh hưởng đến danh sách gốc

    • C.

      Một mảng primitive chứa các phần tử từ fromIndex đến toIndex

    • D.

      Một bản sao (copy) sâu hoàn toàn các phần tử

  17. Câu 17.

    Để sử dụng ArrayList trong code, câu lệnh import cần thiết là gì?

  18. Câu 18.

    So sánh ngắn gọn độ phức tạp của các thao tác get(index), add(element) ở cuối, add(element) ở đầu giữa ArrayList và LinkedList.

  19. Câu 19.

    Trong một ứng dụng quản lý sinh viên, bạn cần lưu trữ danh sách điểm thi của một lớp học. Số lượng sinh viên không cố định (có thể tăng/giảm theo từng học kỳ), và cần truy xuất điểm theo vị trí nhanh chóng. Hãy phân tích và lựa chọn giữa Array thông thường và ArrayList. Giải thích lý do và đưa ra cách khai báo phù hợp.

  20. Câu 20.

    Trình bày ít nhất 4 best-practices (thực hành tốt) khi làm việc với ArrayList trong Java. Với mỗi best-practice, nêu rõ lý do và hậu quả nếu vi phạm.

Đáp án và giải thích từng câu có trong chế độ .