일일 자바 필기 시험의 다섯 가지 질문 -2020-9-21

일일 자바 필기 시험의 다섯 가지 질문 -2020-9-21

  1. 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에서 재활용합니다.

  1. 오프 힙은 메모리의 종류 ()를 나타냅니다.

    정답 : B 정답 : C (오답)

JVM GC能管理的内存
JVM进程管理的内存
在JVM老年代内存区
在JVM新生代内存

분석:

오프 힙 메모리는 메모리 오브젝트가 운영 체제 (가상 머신이 아님)에서 직접 관리되는 Java 가상 머신 힙 외부의 메모리에 할당됨을 의미합니다. 그것은 구세대와 신세대에 속하지 않습니다.

JVM GC가 힙 및 메소드 영역을 회수합니다. 제거 방법으로 B를 선택합니다.

  1. 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

  1. 다음 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는 스택 영역에 저장된 메서드의 지역 변수입니다.

추천

출처blog.csdn.net/qq_37924905/article/details/108717869