>  기사  >  Java  >  다년간의 개발 경험을 바탕으로 정리한 Java 면접 질문 - (3)

다년간의 개발 경험을 바탕으로 정리한 Java 면접 질문 - (3)

王林
王林앞으로
2020-08-13 16:59:182645검색

다년간의 개발 경험을 바탕으로 정리한 Java 면접 질문 - (3)

1. Java에서 final 키워드의 용도는 무엇입니까?

수정된 변수는 초기화되거나 수정될 수 없으며 수정된 클래스는 상속될 수 없으며 수정된 메서드는 재정의될 수 없습니다.

(더 많은 면접 질문 추천: Common Java 면접 질문)

2. try{}에 return 문이 있는데, try{} 직후에 finally{}에 있는 코드가 실행되나요? , return 전후?

는 return이 실행된 후 실행되지만 결과가 반환되기 전에 return은 반환 결과를 함수 스택에 저장하고 실제로 반환되기 전에 최종적으로 실행될 때까지 기다립니다. final, finally, finalize의 차이점을 설명하세요.

final은 클래스 수정(상속 불가), 변수(수정 불가, 한 번만 할당 가능), 메소드(재작성 불가)에 사용됩니다.

finally는 실행 중 예외 캡처가 있는지 여부를 실행하는 데 사용됩니다. try{}catch finally 블록, 리소스 닫기 등...

finalize는 가비지 수집기가 객체를 재활용하고 정리하기 전에 메소드를 실행하는 데 사용되는 객체의 마지막 단어인 메소드 이름으로 정의됩니다. 객체 클래스에서 모든 클래스가 이를 상속받습니다.

(추천 관련 튜토리얼:

Java 입문 튜토리얼

)

4. 리플렉션을 통해 객체를 생성하는 방법은 무엇인가요?

Class 객체의 newInstance() 메서드를 통해 Class 객체에 해당하는 클래스의 인스턴스를 생성합니다.

Class 객체를 사용하여 지정된 Constructor 객체를 얻고, Constructor 객체의 newInstance() 메서드를 호출하여 생성합니다. Class 객체에 해당하는 클래스의 인스턴스입니다.

5. Java 8의 새로운 기능

1. Java 8에는 함수형 인터페이스 개념이 도입되었습니다. Lambda를 사용하면 함수를 메서드에 대한 인수로 전달하거나 코드를 데이터로 처리할 수 있습니다.

2. 인터페이스의 기본 메서드와 정적 메서드를 정의하고, default 키워드를 사용하고, 기본 구현을 제공합니다. 이 인터페이스를 구현하는 모든 클래스는 하위 클래스가 자체 구현을 제공하지 않는 한 기본 메서드의 구현을 허용합니다. 인터페이스에서 정적 메서드를 정의하고 static 키워드를 사용하여 구현을 제공할 수도 있습니다.

3. 람다 표현식과 함께 사용되는 메서드 참조

(1) 생성자 참조. 구문은 Class::new입니다.

(2) 정적 메서드 참조. 구문은 Class::static_method

입니다. (3) 특정 클래스의 모든 객체 메서드 참조입니다. 구문은 Class::method

입니다. (4) 특정 개체의 메서드 참조, 해당 구문은 instance::method

4입니다. Java 8에서는 중복 주석을 도입하고 동일한 주석을 동일한 위치에서 여러 번 선언할 수 있습니다. . 반복 주석 메커니즘 자체에는 @Repeatable로 주석을 달아야 합니다. Java 8은 컴파일러 계층에서 최적화를 수행했으며 동일한 주석이 컬렉션에 저장되므로 기본 원칙은 변경되지 않았습니다.

5. 주석에 대한 확장된 지원 Java 8은 주석의 컨텍스트를 확장했습니다. 주석은 지역 변수, 일반 클래스, 상위 클래스 및 인터페이스 구현을 포함하여 거의 모든 것에 추가될 수 있습니다.

6. null 포인터 예외를 방지하려면 Optional 클래스를 도입하세요. Optional 클래스는 실제로 컨테이너이므로 T 또는 null 유형의 값을 저장할 수 있습니다. Optional 클래스를 사용하면 널 포인터를 명시적으로 확인할 필요가 없습니다.

(추천 비디오 튜토리얼:

java 강좌

)

7. Stream API 및 함수형 프로그래밍 스타일을 소개하여 코드를 직렬화하고 연속 및 병렬 집계 작업을 간단하고 명확하게 지원합니다.

8. JavaScript 엔진 Nashorn을 사용하면 JavaScript 애플리케이션을 JVM에서 개발하고 실행할 수 있으므로 Java와 JavaScript가 서로 호출할 수 있습니다.

9. Base64, Base64 클래스는 URL 및 MIME 친화적인 인코더와 디코더를 제공합니다.

10. 날짜/시간 API(JSR 310)는 java.util.Date 및 java.util.Calendar를 대체하는 데 사용할 수 있는 새로운 java.time 패키지를 제공합니다. 일반적으로 Clock, LocaleDate, LocalTime, LocaleDateTime 등의 클래스가 있습니다. ZonedDateTime 및 Duration은 시간과 날짜를 개선하는 데 매우 효과적입니다.

이러한 상위 10가지 새로운 기능 외에도 다른 새로운 기능이 있습니다.

더 나은 유형 추측 메커니즘: Java 8은 유형 추측이 크게 개선되어 코드가 더 깔끔해지고 너무 많은 캐스트가 필요하지 않습니다.
  • 컴파일러 최적화: Java 8은 메소드의 매개변수 이름을 바이트코드에 추가하므로 런타임 시 리플렉션을 통해 매개변수 이름을 얻을 수 있습니다. 컴파일 시 -parameters 매개변수만 사용해야 합니다.
  • 병렬 배열: 배열의 병렬 처리, 주로 parallelSort() 메서드를 지원하여 멀티 코어 시스템에서 배열 정렬 속도를 크게 향상시킬 수 있습니다.
  • 동시성: 새로운 Stream 메커니즘과 Lambda를 기반으로 집계 작업을 지원하기 위해 몇 가지 새로운 메서드가 추가되었습니다.
  • Nashorn 엔진 jjs: Nashorn 엔진을 기반으로 한 명령줄 도구입니다. 일부 JavaScript 소스 코드를 매개변수로 받아들이고 이러한 소스 코드를 실행합니다.
  • 클래스 종속성 분석기 jdeps: Java 클래스의 패키지 수준 또는 클래스 수준 종속성을 표시할 수 있습니다.
  • JVM의 PermGen 공간이 제거되고 Metaspace(JEP 122)로 대체되었습니다.

위 내용은 다년간의 개발 경험을 바탕으로 정리한 Java 면접 질문 - (3)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제