2019 자바 인터뷰 질문 시리즈 228 (5)의 기초, 당신이하지 않습니다에서 얼핏?

2019 자바 인터뷰 질문 재단 시리즈 (228)

자바 인터뷰 질문 (A)

1 20 질문에 대답하는 첫번째가 해결 업데이트

juejin.im/post/5de8c6...

두 번째 업데이트 대답 해결의 21 ~ 50 질문
juejin.im/post/5dea1d ...

파트 III는 해결의 95 질문에 답변을 51 업데이트
juejin.im/post/5decd3을 ...


자바 인터뷰 질문 (B)

제목 IV 업데이트 1은 해결 (20) 질문에 대답하기


자바 인터뷰 질문 (B)

(21), 두 개의 클래스, B 상속 A, C 상속 B가, 우리는 C B 이유를 변환 할 수 있습니까? 이러한 C = (C) B 등;
복제 클래스 메소드를 포함 22? Cloneable를 또는 객체인가?
23 ++ 연산자 자바 스레드 안전은?
23 스레드 안전하지 작업. 이는이 프로세스는 다중 스레드가 크로스 가질 수있다, 이러한 변수 값의 증가를 읽고 여러 개의 명령어를 포함하고, 다시 메모리에 저장된다.
(24), B = A +와 B + = 구별
25, 나는 긴 변수에게 그것을 입력 캐스팅없이 경우에 두 배 값을 할당 할 수 있습니까?
26,3은 == * 0.1, 0.3가 반환됩니다 무엇입니까? 참 또는 거짓?
27, INT와 정수 더 많은 메모리를 차지 것이다?
28, 왜 자바 문자열의 불변 (불변)인가?
31,64 비트 JVM, INT 길이가 대부분이다?
32, 직렬 및 병렬 GC의 차이?
33, 32 비트 및 64 비트 JVM, 대부분의 INT 형 가변 길이?
(34), 자바와 WeakReference를하는 SoftReference의 차이?
(35)의 WeakHashMap 어떻게 작동하는지?
36, JVM 옵션 -XX이 : + UseCompressedOops 역할은 무엇인가? 왜 사용해야합니까?
32 비트 또는 64 비트 (37), 어떻게 JVM 자바 프로그램에 의해 판단하는 것입니다?
38,32 비트 및 64 비트 JVM JVM 최대 힙 메모리는 대다수?
39 JRE, JDK, JVM과 JIT의 차이점은 무엇입니까?
(40)는 자바 힙 공간과 GC를 설명?
41, 당신은 GC가 실행 보장 할 수 있습니까?
(42) 어떻게 메모리 자바 프로그램 사용을 얻으려면? 사용에 힙 비율?
43, Java 힙 및 스택의 차이점은 무엇입니까?
44의 "==의 B"와 "a.equals (b)"차이는 무엇입니까?
45, a.hashCode () 사용은 무엇인가? a.equals (b)과의 관계는 무엇인가?
(46), 최종 마무리에서 최종적 다르다?
47, 자바의 어떤 컴파일 시간 상수는 무엇입니까? 위험은 무엇을 사용?
목록, 설정,지도 및 대기열 사이 (48), 차이 (답)
(49) () 투표 방법 및 제거 () 메소드의 차이?
50, 어떤 자바의 차이이며,의 LinkedHashMap PriorityQueue 인은?

Benpian 업데이트 질문에 대답 21-50


(21), 두 개의 클래스, B 상속 A, C 상속 B가, 우리는 C B 이유를 변환 할 수 있습니까? 이러한 C = (C) B 등;

실시 예 B는 C 형을 변환하지 않을 경우, 이상이있을 것, 주조에 속하는
예를 들어, ABC는 동물, 고양이, 검은 고양이에 해당합니다.
예를 들어, 전이 최대 인
C = C의 새로운 C ();
B, B = C;
당신은 B로 전환 c는, 검은 고양이는 고양이인가? 아 예, 그래서 이것은의 확인이다.
그러나 차례로,
B의 새로운 B = B ();
C를 C = (C) (B);
이것은 확인, 단지 그가 반드시 검은 고양이 아니다, 그 b는 고양이 알고 있지 않습니다.
있지만, B는 블랙 고양이 것으로 결정되었고, 이는 전환 될 수 있다면
B의 새로운 B = C ();
C를 C = (C) (B);
나 여기에 항상 검은 고양이 아왔다.

복제 클래스 메소드를 포함 22? Cloneable를 또는 객체인가?

java.lang.Cloneable는 임의의 방법을 포함하지 않는 계면의 마크, 복제 방법은 객체 클래스의 정의이다. 그리고 클론 () 메소드를 알 필요가 C 또는 C ++ 또는 다른 지역 언어에 의해 구현되는 것을 의미 로컬 방법이다.

23 ++ 연산자 자바 스레드 안전은?

스레드 안전하지 작업. 이는이 프로세스는 다중 스레드가 크로스 가질 수있다, 이러한 변수 값의 증가를 읽고 여러 개의 명령어를 포함하고, 다시 메모리에 저장된다.

(24), B = A +와 B + = 구별

+ 추가 조작 형 = 암시 발생 타입 유지의 결과로서 주조된다. 두 정수에게 이러한 바이트, short 또는 int와 합을, 경우 INT 타입 처음으로 상승하고 가산 연산을 수행한다. 가산 연산의 결과는 최대 값보다 큰 경우, A + B는 컴파일 오류가있을 것이지만
byte a = 127;
byte b = 127;
b = a + b;
// error : cannot convert from int to byte
b += a;
// ok复制代码
(번역기의 참고 : 표현해야이 곳 잘못, 사실, 작업이 B A + 될 것이기 때문에 + b의 값은, 컴파일러, 오류가 얼마나 상관없이, b는 int 유형으로 승진, 그것은 바이트 INT 타입에 할당됩니다 ) 오류를 컴파일

25, 나는 긴 변수에게 그것을 입력 캐스팅없이 경우에 두 배 값을 할당 할 수 있습니까?

아니, 당신은 두 배 넓은 긴 유형과 유형, 캐스트 할 필요가 있기 때문에 변환이 긴 유형의 변수에 할당 된 double 값의 전제하에 의무적으로하지 않습니다 입력 할 수 없습니다.

26,3은 == * 0.1, 0.3가 반환됩니다 무엇입니까? 참 또는 거짓?

거짓, 때문에 일부 부동 소수점 숫자는 완전히 정확한 표현이 될 수 없습니다.

27, INT와 정수 더 많은 메모리를 차지 것이다?

정수 객체는 더 많은 메모리를 차지합니다. 정수는 객체, 메타 데이터를 저장하는 객체의 요구입니다. 그러나 INT는 데이터의 원시 형은 너무 적은 공간을 차지한다.

28, 왜 자바 문자열의 불변 (불변)인가?

자바에서 문자열 불변 자바 디자이너가 매우 자주 사용되는 문자열을 생각했기 때문에이 문자열은 여러 클라이언트 사이 같은 불변의 문자열을 공유하도록 허용하도록 설정되어 있습니다.

29, 우리의 문자열 스위치에서 사용할 수 있습니까?

자바 7에서, 우리는 스위치의 경우 문자열을 사용할 수 있지만이 단지 문법 설탕입니다. 내부 문자열의 해시 코드의 스위치로 구현.

30, 자바의 생성자 체인이 무엇입니까?

당신이 생성자에서 다른 생성자를 호출 할 때, 자바는 생성자 체인입니다. 이 상황은 단지 수업 시간의 오버로드 된 생성자에 나타납니다.

31,64 비트 JVM, INT 길이가 대부분이다?

자바는 INT 형 가변 길이는 플랫폼에 관계없이, 32 비트이며, 고정 된 값이다. 즉, 32 비트 및 64 비트 Java 가상 머신, INT 타입은 동일한 길이이다.

32, 직렬 및 병렬 GC의 차이?

때 GC의 직렬 및 병렬 실행이 중지 - 세계의 원인이됩니다. 하나의 스레드 만은 GC를 수행 할 때, 이들 간의 주요 차이점은, 직렬 콜렉터 기본 복사 컬렉터이며, GC 평행 콜렉터 실행 다중 스레드를 이용한다.

33, 32 비트 및 64 비트 JVM, 대부분의 INT 형 가변 길이?

32 비트 및 64 비트 JVM은 INT 형 가변 길이가 동일한 32 비트 또는 4 바이트이다.

(34), 자바와 WeakReference를하는 SoftReference의 차이?

WeakReference를하고하는 SoftReference는 GC와 메모리,하지만 WeakReference를의 효율성을 향상에 도움이하지만 마지막 강한 참조를 잃은 일단 비록 소프트 참조가 재활용되고 멈출 수 없다,하지만 JVM 메모리 부족 때까지 지연 될 수 있지만, GC는 재활용됩니다.

(35)의 WeakHashMap 어떻게 작동하는지?

의 WeakHashMap HashMap의 정상 동작은 유사하지만, 핵심 목적은 시간 참조가없는 경우, 키 / 값을 회수한다 즉, 약한 키가 포함된다.

36, JVM 옵션 -XX이 : + UseCompressedOops 역할은 무엇인가? 왜 사용해야합니까?

당신이 개체 포인터로 인해 32 비트에서 64 비트, 64 비트 JVM JVM 32 비트에서 응용 프로그램을 마이그레이션하는 경우, 힙 메모리가 갑자기 거의 두 배 증가 있도록. 또한이 데이터는 CPU 캐시 (훨씬보다 작은 메모리 용량)에 악영향을 미칠 것입니다. 64 비트 JVM의 주요 동기로 마이그레이션하면 최대 힙 크기를 지정할 수 있기 때문에, 당신은 OOP를 압축하여 일부 메모리를 절약 할 수 있습니다. -XX 저자 : + UseCompressedOops 옵션 JVM (32)에서 사용하는 OOP보다는 64 비트 OOP.

32 비트 또는 64 비트 (37), 어떻게 JVM 자바 프로그램에 의해 판단하는 것입니다?

당신은 sun.arch.data.model 또는 os.arch 등의 시스템 정보를 얻기 위해 몇 가지 속성을 확인할 수 있습니다.

38,32 비트 및 64 비트 JVM JVM 최대 힙 메모리는 대다수?

이론적으로 32 비트 JVM 힙 메모리는 ^ 32 (2), 즉 4GB의에 도달 할 수 있지만, 사실은 이것보다 훨씬 작은 것이다. 같은 1.5 GB, 3기가바이트에 대한 솔라리스에 대한 Windows 시스템과 같은 다른 운영 체제 사이의 차이. 64 비트 JVM은 최대 힙 메모리를 지정하기 위해 이론적으로, 매우 많은 수의 사실, 당신은 1백기가바이트에 힙 크기를 지정할 수는 2 ^ 64까지 될 수 있습니다. 심지어 아줄 같은 일부 JVM은 1000G에 힙 메모리가 가능합니다.

39 JRE, JDK, JVM과 JIT의 차이점은 무엇입니까?

JRE 자바 런타임 (자바 런타임) 대신에, 자바 참조를 실행해야합니다. 자바 개발 도구 JDK (자바 개발 키트) 대신에, 이러한 또한 JRE를 포함 자바 컴파일러로 자바 프로그램 개발 도구이다. Java 가상 머신 JVM (자바 가상 머신) 대신에, 그것은 자바 응용 프로그램을 실행의 책임입니다. 대표 JIT 시간 컴파일 코드 실행의 수가 특정 임계 값을 초과 (그냥 시간 컴파일), 자바 예를 들어, 네이티브 코드로 바이트 코드 것, 핫 키 코드가 준 네이티브 코드로 대체됩니다, 대형 때문에 유리하다 크기는 Java 응용 프로그램의 성능을 향상시킬 수 있습니다.

(40)는 자바 힙 공간과 GC를 설명?

그것을 위해 메모리를 할당 할 Java 명령을 통해 자바의 프로세스를 시작합니다. 목적은 프로그램에서 생성 될 때, 힙을 생성하기위한 메모리 공간의 일부는, 상기 공간에 대해 메모리를 할당한다. GC는 JVM 내에서 과정, 유효하지 않은 오브젝트는, 향후의 할당을위한 메모리를 회복했다.

41, 당신은 GC가 실행 보장 할 수 있습니까?

아니,하지만 당신은으로 System.gc () 또는 런타임 .gc ()를 호출 할 수 있지만, GC의 구현을 보장 할 수있는 방법은 없습니다.

(42) 어떻게 메모리 자바 프로그램 사용을 얻으려면? 사용에 힙 비율?

나머지 메모리 획득 될 수 있고, 관련 방법에 java.lang.Runtime의 클래스 별 최대 총 메모리 및 힙 메모리. 이러한 방법으로 사용 된 나머지 공간과 힙 메모리 힙의 비율을 얻을 수 있습니다. Runtime.freeMemory으로 () 메소드가 반환 여유 공간의 바이트 수 () 메모리 Runtime.totalMemory의 총 바이트 수의 방법은, Runtime.maxMemory ()는 메모리의 최대 바이트의 수를 돌려줍니다.

43, Java 힙 및 스택의 차이점은 무엇입니까?

속하는 다른 메모리 영역으로 JVM 힙 및 스택의 다른 목적으로하는 용도. 보존 방법은 일반적으로 프레임 스택 및 로컬 변수로 사용하고, 객체가 항상 힙에 할당된다. 힙 스택 힙은 JVM에서 모든 스레드에 의해 공유되는, 그것은 여러 스레드간에 공유되지 않습니다, 일반적으로 상대적으로 작다.

44의 "==의 B"와 "a.equals (b)"차이는 무엇입니까?

A와 B가 대상인 경우 == B는, 두 객체를 비교하기위한 기준이다 힙 A와 B에 동일한 오브젝트 지향 될 때만 true를 반환하고, a.equals (b)는 논리적 비교는 일반적으로 일관성있는 비교 로직을 제공하기 위해이 메소드를 오버라이드 (override) 할 필요가있다. 예를 들어, 문자열 클래스 재정의 등호 () 메소드, 두 개의 서로 다른 개체에 대한 사용하지만, 같은 비교는 문자를 포함 할 수있다.

45, a.hashCode () 사용은 무엇인가? a.equals (b)과의 관계는 무엇인가?

해시 코드 () 메소드는 정수 해당 오브젝트의 해시 값이다. 그것은 이러한 해시 테이블 HashMap에, 등의 LinkedHashMap 같은 해시 기반 수집에 사용된다. 이 방법은 특별히 밀접한 관계 ()와 동일하다. 동일한 목적을 결정하는 두 개의 동일한 () 메소드를 사용하여 자바 규격은, 동일한 해시 코드를 가져야한다.

(46), 최종 마무리에서 최종적 다르다?

최종 수정이며, 변수, 메소드 및 클래스가 변형 될 수있다. 최종 수정 변수 경우 변수의 평균 값을 초기화 한 후 변경 될 수 없다. 마무리 방법은 개체가 회복되기 전에 호출 방법, 개체 자체를 회복 할 수있는 마지막 기회,하지만 때 어떤 통화 종료 처리 보장합니다. 마지막 키워드이며, 시도하고 예외 처리를 위해 함께 잡을 수있어. 마지막 블록은 예외없이 try 블록에서 발생하는지의 실행한다.

47, 자바의 어떤 컴파일 시간 상수는 무엇입니까? 위험은 무엇을 사용?

공공 정적의 불변 (공공 정적 최종) 변수는 우리가 컴파일 시간 상수를 부르는, 대중은 여기에 선택 사항입니다. 컴파일러는 이러한 변수의 값을 알고 있으며, 런타임에 이러한 변수를 변경하지 알고 있기 때문에 사실, 이러한 변수는 컴파일 타임에 교체됩니다. 이 접근 방식의 한 가지 문제는 공용 컴파일 시간 상수에 사내 또는 타사 라이브러리를 사용하지만,이 값은 변경 다른 사람 뒤에 있지만, 고객이 아직도 당신이 경우에도, 이전 값을 사용하여 새로운 항아리를 배치했다. 이를 방지하려면, 당신은 종속 JAR 파일을 업데이트 할 때, 프로그램을 다시 컴파일해야합니다.

목록, 설정,지도 및 대기열 사이 (48), 차이 (답)

목록 요소의 정렬 된 컬렉션을 반복 할 수있다. 구현 중 일부는 시간 기반 인덱스 값에 지속적으로 액세스를 제공 할 수 있지만, 이것은 List 인터페이스의 보장되지는 않습니다. 세트는 정렬되지 않은 모음입니다.

(49) () 투표 방법 및 제거 () 메소드의 차이?

설문 조사 ()와 제거 ()는 큐 요소에서 제거되지만 여론 조사 () 빈 반환 실패시 요소를 가져옵니다 만, 삭제는 () 실패시 예외가 발생합니다.

50, 어떤 자바의 차이이며,의 LinkedHashMap PriorityQueue 인은?

PriorityQueue 인 가장 높은 또는 낮은 우선 순위의 요소는 큐의 선두에서 항상 보장하지만, 순서의 LinkedHashMap 요소의 순서가 삽입 유지. 사용해, PriorityQueue를 통과 할 때, 보장은, 그러나의 LinkedHashMap 클래스 순회 순서는 삽입 요소를 보장하기 위해서입니다 주문.

최종적으로

나는 종류의 공공 호 [프로그래머] 무리가 더 많은 400 페이지 PDF 문서와 회사를 통해 1000 개 2019 자바 얼굴 질문을 마무리 문서는 내부에 업데이트됩니다의 우려에 오신 것을 환영합니다, 데이터 편집은 내부에있을 것입니다.

조가 지원 요, 감사와 같은 우려의 지점처럼 기억!


추천

출처juejin.im/post/5def4dc86fb9a0161104c1f2