일일 자바 필기 시험의 다섯 가지 질문 -2020-9-21
- List 인터페이스, Set 인터페이스 및 Map 인터페이스에 대한 다음 설명이 잘못 되었습니까?
정답 : A 정답 : B (오답)
他们都继承自Collection接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置
Set是一种不包含重复的元素的Collection
Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value
분석:
지도 인터페이스와 컬렉션 인터페이스는 동일한 수준입니다.
수집
----- 목록
----- LinkedList 비동기
---- ArrayList가 동기화되지 않아 가변 크기 요소 배열을 구현합니다.
---- 벡터 동기화
------ 스택
----- 세트는 동일한 요소를 허용하지 않습니다.
지도
----- 키-값 매핑 해시 테이블을 구현하기위한 HashTable 동기화
----- HashMap은 비동기식입니다.
----- WeakHashMap 개선 된 HashMap은 "weak reference"를 구현합니다. 키가 참조되지 않으면 GC에서 재활용합니다.
-
오프 힙은 메모리의 종류 ()를 나타냅니다.
정답 : B 정답 : C (오답)
JVM GC能管理的内存
JVM进程管理的内存
在JVM老年代内存区
在JVM新生代内存
분석:
오프 힙 메모리는 메모리 오브젝트가 운영 체제 (가상 머신이 아님)에서 직접 관리되는 Java 가상 머신 힙 외부의 메모리에 할당됨을 의미합니다. 그것은 구세대와 신세대에 속하지 않습니다.
JVM GC가 힙 및 메소드 영역을 회수합니다. 제거 방법으로 B를 선택합니다.
- List는 ArrayList 객체입니다. // todo delete에 채워져있는 옵션 코드는 반복기 순회 프로세스 중에 목록에 저장된 객체를 정확하고 안전하게 삭제할 수 있습니까? ()
Iterator it = list.iterator();
int index = 0;
while (it.hasNext())
{
Object obj = it.next();
if (needDelete(obj)) //needDelete返回boolean,决定是否要删除
{
//todo delete
}
index ++;
}
정답 : A 정답 : B (오답)
it.remove();
list.remove(obj);
list.remove(index);
list.remove(obj,index);
분석:
terator는 소스 컬렉션에서 객체의 안전한 제거를 지원합니다. Iterator에서 remove ()를 호출하기 만하면됩니다. 이것의 장점은 컬렉션을 반복하기 위해 Iterator를 열고 컬렉션이 동시에 수정 될 때 ConcurrentModifiedException을 피할 수 있다는 것입니다. 일부 컬렉션은 반복 중 요소 삭제 또는 추가를 허용하지 않지만 Iterator의 remove () 메서드를 호출하는 것이 안전합니다.
Integer i = 42;
Long l = 42l;
Double d = 42.0;
다음은 사실입니다
정답 : G 정답 : F (오답)
(i == l)
(i == d)
(l == d)
i.equals(d)
d.equals(l)
i.equals(l)
l.equals(42L)
분석:
패키징 클래스의 "=="연산은 산술 연산없이 자동으로 언 박싱되지 않습니다.
패키징 클래스의 equals () 메서드는 데이터 변환을 처리하지 않습니다.
지식 확장 :
1, 기본 및 기본 성형 "=="비교 연산자, 기본 패키지 유형은 비교를 풀면 자동으로 기본으로 변경되므로 Integer (0)는 자동으로 int로 압축을 풉니 다. 다시 비교하면 분명히 true를 반환합니다.
int a = 220;
정수 b = 220;
System.out.println (ab); // true
** 2, ""비교, 값이 -128에서 127 사이이면 true를 반환하고 그렇지 않으면 Integer.valueOf ()의 버퍼 객체와 관련된 false를 반환하므로 여기서 반복하지 않겠습니다. **정수 c = 3;
정수 h = 3;
정수 e = 321;
정수 f = 321;
System.out.println (c == h); // true
System.out.println (e == f); // false
3에서, 첫 번째 같음 ()을 비교하는 등호 ()에 대한 기본 두 패키지 유형은 더 많은 유형이 될 것이며, 동일한 유형이면 연속 된 비교 값은 값이 동일하면 참을 반환합니다.
정수 a = 1;
정수 b = 2;
정수 c = 3;
System.out.println (c.equals (a + b)); // true
4, 기본 패키지 유형 호출 ()과 같지만 매개 변수는 기본 유형이며 이번에는 첫 번째 포장이 기본 패키지 유형으로 자동으로 수행 된 다음 비교 3입니다.
int i = 1;
int j = 2;
정수 c = 3;
System.out.println (c.equals (i + j)); // true
- 다음 Java 코드의 변수 a, b, c는 메모리 저장 영역에 저장됩니다.
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
正确答案: C 你的答案: C (正确)
堆区、堆区、堆区
堆区、栈区、堆区
堆区、栈区、栈区
堆区、堆区、栈区
静态区、栈区、堆区
静态区、栈区、栈区
분석:
답은 C
a는 힙 영역에 저장된 클래스의 멤버 변수입니다.
b, c는 스택 영역에 저장된 메서드의 지역 변수입니다.