Câu 1: Chọn kiểu dữ liệu phù hợp nhất với những điều kiện sau (chọn 1 đáp án)
+ Lưu dữ liệu được tìm từ trong database
+Những dữ liệu trùng nhau được lưu riêng biệt
+Số lượng dữ liệu lưu thay đổi theo điều kiện tìm kiếm
+Sử dụng cho single thread
A. HashMap
B. HashSet
C. Arrays
D. ArrayList
E. Vector
Câu 2: Chọn kiểu dữ liệu phù hợp nhất với những điều kiện sau (chọn 1 đáp án)
+Lưu dữ liệu theo key – value
+Sắp xếp theo thứ tự tự nhiên của key
+Sử dụng cho single thread
A. TreeSet
B. HashSet
C. TreeMap
D. HashMap
E. ArrayList
Câu 3: compile và chạy chương trình sau kết quả là gì (chọn 1 đáp án)
1 2 3 4 |
5. List list = new ArrayList(); 6. list.add("a"); 7. list.add(10); 8. for(String s : list) { System.out.print(s + " "); } |
A. a 10
B. a
C. Dòng số 5 compile error
D. Dòng số 7 compile error
E. Dòng số 8 compile error
F. sau khi in ra a sẽ có runtime error
Câu 4: Câu nào sau đây đúng ( chọn 2 đáp án)
1 2 3 4 |
4. 「①」 <Integer> list = new LinkedList <> (); 5. list.add(100; list.add(200); 6. list.remove(1); 7. System.out.println(list); |
A. Nếu ① là List thì kết quả là [100]
B. Nếu ① là List thì kết quả là [100,200]
C. Nếu ① là Queue thì kết quả là [100]
D. Nếu ① là Queue thì kết quả là [100,200]
E. ① là List hay Queue thì kết quả đều là [100]
F. ① là List hay Queue thì khi compile đều có warning
Câu 5: Hãy chọn code điều vào ① và ② để compile success và in ra toàn bộ phần tử trong list (chọn 2 đáp án)
1 2 3 |
List<Double> list = Arrays.asList(1.0, 2.2, 3.5); Iterator iter = list.iterator(); while(iter.「①」()) System.out.print(iter.「②」()); |
A. ① = hasNext
B. ① = next
C. ① = hasMoreElements
D. ② = get
E. ② = next
F. ② = element
Câu 6: compile và chạy chương trình sau kết quả là gì (chọn 2 đáp án)
1 2 3 4 5 6 |
4. Set<Number> set = new HashSet<>(); 5. set.add(100L); 6. set.add(new Integer(80)); 7. set.add(null); 8. set.add(80); 9. System.out.println(set); |
A. compile succes
B. Kết quả in ra là 「100, 80, null, 80」
C. Kết quả in ra là 「100, 80, null」
D. Kết quả in ra ko ổn định ( mỗi lần chạy 1 kết quả)
E. Dòng thứ 7 compile error
F. Dòng thứ 8 runtime error
Câu 7: compile và chạy chương trình sau kết quả là gì (chọn 1 đáp án)
1 2 3 4 5 |
4. TreeSet<String> set = new TreeSet<>(); 5. set.add("Naoki"); 6. set.add("nana"); 7. set.add("NARUMI"); 8. System.out.println(set.ceiling("Na")); |
A. null
B. Naoki
C. nana
D. NARUMI
E. compile error
Câu 8: compile và chạy chương trình sau kết quả là gì (chọn 1 đáp án)
1 2 3 |
Map<Integer, String> map = new HashMap<>(); for(int i = 10; i < 15; i++) map.put(i, "item-"+1); System.out.println(map.get(4)); |
A. item-13
B. item-14
C. null
D. compile error
E. compile sẽ có warning nhưng chương trình vẫn chạy thành công
F. runtime error
Câu 9: compile và chạy chương trình sau kết quả là gì (chọn 1 đáp án)
1 2 3 4 |
4. Map map = new HashMap(); 5. map.put(23, "data1"); 6. map.put(2.4, "data2"); 7. System.out.println(map.contains(2)); |
A. Dòng thứ 5 compile error
B. Dòng thứ 6 compile error
C. Dòng thứ 7 compile eror
D. Dòng thứ 5 và 6 compile error
E. runtime error
Câu 10: Chọn code điền vào 「①」để chương trình compile success (chọn 2 đáp án)
1 2 3 4 5 6 7 |
public static void main(String[] args){ 「①」 foo(obj) } public static void foo(List<?> list){ System.out.println(list.size()); } |
A. ArrayDeque<?> obj = new ArrayDeque<String>();
B. Arraylist<? super Number> obj = new ArrayList<Number>();
C. ArrayList<? extends Number> obj = new ArrayList<Integer>();
D. List<?> obj = new ArrayList<?>();
E. List<Object> obj = new LinkedList<String>();
Câu 12: Chọn câu đúng (chọn 3 đáp án)
A. interface Comparable thuộc package java.util
B. interface Comparator thuộc package java.util
C. method compare() là của interface Comparable
D. method compare() là của interface Comparator
E. method compare() chỉ có 1 param
F. method compare() có 2 param
Câu 13: Compile và chạy chương trình sau kết quả là (chọn 1 đáp án)
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.*; public class Foo implements Comparator<String>{ public int compare(String s1, String s2){ return s2.toLowerCase().compareTo(s1.toLowerCase()); } public static void main(String[] args){ String[] ary = {"100", "Abc", "abc"}; Arrays.sort(ary,new Foo()); for(String s : ary) System.out.print(s + " "); } } |
A. Abc abc 100
B. abc Abc 100
C. 100 Abc abc
D. 100 abc Abc
E. Dòng số 4 compile eror
F. Dòng số 8 compile error
- Tạo arrayList với kiểu ko cố định:
1 2 |
ArrayList<? super Number> ArrayList<? extends number> |
- HashSet không có phần tử trùng lặp (Set chỉ chứa value mà ko có key và ko cho phép các phần tử trùng lặp nếu add trùng lặp sẽ lưu vào nháp, Hash set có 1 phần tử null Tree set ko có phần tử null add vào sẽ bị null pointer exception)
- HashMap: có cả key và value, key dc lưu giữ ko theo thứ tự
- Hash là ko sắp xếp theo thứ tự nào Tree là có thứ tự.
- TreeSet có method Ceiling lấy những value nhỏ nhất trong những value lớn hơn hoặc bằng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class TreeSetDemo { public static void main(String[] args) { // creating a TreeSet TreeSet <Integer>treeadd = new TreeSet<Integer>(); // adding in the tree set treeadd.add(12); treeadd.add(11); treeadd.add(16); treeadd.add(15); // getting ceiling value for 13 System.out.println("Ceiling value for 13: "+treeadd.ceiling(13)); } } result: Ceiling value for 13: 15 |
- TreeMap có key theo thứ tự
- List ko khai báo kiểu trong <> thì mặc định là object
- Collection có method remove(object 0). List và Queue đều kế thừa nhưng List có thêm method remove(int index)
- Iterator của collection có thể lấy element ra bằng method next
- Sử dụng map có thể check tồn tại key hay value bằng containsKey or containsValue
-
Comparable thuộc về java.lang package. Comparator thuộc về java.util package - Comparator dùng dc với lambda còn comparable phải tạo class implement compartTo
- map ko có phương thức add mà chỉ có put
- Hashmap ko kế thừa list nhưng vector thì có
- Generics được khai báo ở sau access modifer và trước kiểu trả về của method
-
1234TreeSet<Foo> set1 = new TreeSet<>();set1.add(obj1); set1.add(obj2); //TreeSet sẽ sắp xếp theo compareTo của FooTreeset<Foo> set2 = new TreeSet<>(obj1);set2.add(obj1); set2.add(obj2); //TreeSet sẽ sắp xếp theo compare của Foo
- Generics bắt buộc khi khai báo phải giống nhau ở 2 vế( kể cả có kế thừa cũng ko dc) và ko thể khai báo kiểu dữ liệu nguyên thủy
1 |
Foo<Number> foo = new Foo<Long>() //compile error |
- Generics T trong class ko dc khai báo static ko được tạo instance theo kiểu T ko được làm element trong mảng ko được dùng instanceof để đoán kiểu và ko dc tham chiếu đến class bằng T.class
- Tạo list bằng method asList từ 1 mảng thì khi thay đổi từ list hay từ mảng đều bị ảnh hưởng lẫn nhau
- ArrayDeque<E> nếu dùng kiểu FIFO thì tốt hơn linkedlist nếu dùng kiểu FILO thì tốt hơn stack<E>
- Lưu từng cặp key, value trong 1 map có thể dùng Map.Entry và lấy entry ra theo vòng lặp bằng method entrySet
- TreeMap có key nên sẽ tự sắp xếp theo thứ tự tự nhiên. Còn TreeSet ko có key nên phần tử add vào phải implement cách so sánh
- hàm replaceAll của List có đầu vào là UnaryOperator với đối số giống kiểu của element trong List
- Generics không dc khai báo ? và set giới hạn trên cho kiểu bằng extends(kể cả là interface)
Đáp án:
- D
- C
- E
- A D
- A E
- A D
- B
- C
- C
- E
- B C
- B D F
- A