자주 묻는 10가지 Java 인터뷰 질문

王林
풀어 주다: 2021-02-04 10:20:13
앞으로
2998명이 탐색했습니다.

자주 묻는 10가지 Java 인터뷰 질문

최근 인터뷰에서 자주 묻는 질문 10가지를 모아서 참고용으로 공유합니다.

1. 자신을 10점 척도로 평가하세요. - Java를 얼마나 잘하시나요?

자신이나 Java 능숙도에 대해 확신이 없다면 매우 까다로운 질문입니다. Java 전문가라면 이를 낮게 유지해야 합니다. 이후에는 본인이 인정하는 레벨에 따라 질문을 받을 수도 있습니다. 예를 들어, 10이라고 말했지만 상당히 어려운 질문에 답할 수 없다면 이는 불이익이 될 것입니다.

2. Java 7과 Java 8의 차이점을 설명하세요.

솔직히 차이가 많이 나네요. 여기에서 가장 중요한 것들을 나열할 수 있다면 그것으로 충분할 것입니다. Java 8의 새로운 기능을 설명해야 합니다. 전체 목록을 보려면 원래 웹사이트인 Java 8 JDK를 방문하세요.

당신이 알아야 할 가장 중요한 점은:

이 버전에는 새로운 언어 기능인 람다 표현식이 도입되었습니다. 람다 표현식을 사용하면 함수를 메서드 매개변수로 처리하거나 코드를 데이터로 처리할 수 있습니다. 람다 표현식을 사용하면 단일 메서드 인터페이스(기능 인터페이스라고 함)의 인스턴스를 더 간결하게 표현할 수 있습니다.

메서드 참조는 이미 이름이 있는 메서드에 대해 읽기 쉬운 람다 식을 제공합니다.

기본 메서드를 사용하면 라이브러리의 인터페이스에 새로운 기능을 추가할 수 있으며 이러한 인터페이스의 이전 버전용으로 작성된 코드와의 바이너리 호환성을 보장할 수 있습니다.

주석 반복

은 동일한 선언 또는 유형 사용에 동일한 주석 유형을 여러 번 적용하는 기능을 제공합니다.

유형 주석

유형 주석은 선언뿐만 아니라 유형이 사용되는 모든 곳에 주석을 적용할 수 있는 기능을 제공합니다. 이 기능은 플러그형 유형 시스템과 함께 사용할 때 향상된 코드 유형 검사를 지원합니다.3. 어떤 컬렉션 유형이 있는지 아시나요?

여기서 가장 중요한 점을 알아야 합니다:

ArrayList

LinkedList

HashMap

HashSet

이후에는 언제와 같은 문제가 발생할 수 있습니다. 이 특정 컬렉션 유형을 사용해야 하는지, 다른 유형과 비교하여 어떤 이점이 있는지, 데이터를 저장하는 방법 및 데이터 구조가 이면에서 작동하는 방식을 알아보세요.

여기서 가장 좋은 방법은 질문이 거의 무궁무진하기 때문에 이러한 컬렉션 유형에 대해 최대한 많이 배우는 것입니다.

4. Object 클래스에는 어떤 메소드가 있나요?

기본 지식에 대한 친숙도를 확인하기 위한 매우 일반적인 질문입니다. 다음은 모든 객체가 가지고 있는 메소드입니다:

java.lang 패키지에 속하는 Object 클래스는 클래스 계층 구조 트리의 맨 위에 있습니다. 모든 클래스는 객체 클래스의 직간접적인 자손입니다. 사용하거나 작성하는 모든 클래스는 객체의 인스턴스 메서드를 상속합니다. 이러한 메서드를 반드시 사용해야 하는 것은 아니지만, 그렇게 하기로 선택한 경우 클래스별 코드로 해당 메서드를 재정의해야 할 수도 있습니다.

이 섹션에서 논의된 Object에서 상속된 메서드는 다음과 같습니다.

protected Object clone() throws CloneNotSupportedException이 객체의 복사본을 생성하고 반환합니다.
  • public boolean equals(Object obj)다른 객체가 이 객체와 "동일"한지 여부를 식별합니다.protected Object clone() throws CloneNotSupportedException创建并返回此对象的副本。
  • public boolean equals(Object obj)标识其他对象是否“等于”这个对象。
  • protected void finalize() throws Throwable当垃圾收集确定没有对对象的引用时,垃圾收集器在对象上调用。
  • public final Class getClass()返回对象的运行时类。
  • public int hashCode()返回对象的hashcode
  • public String toString()返回对象的字符串表示形式。

Object的notify、notifyAll和wait方法都在同步程序中独立运行线程的活动中起着作用,这将在后面讨论,在这里不会讨论。

有五种方法:

  • public final void notify()
  • public final void notifyAll()
  • public final void wait()
  • public final void wait(long timeout)
  • public final void wait(long timeout, int nanos)
  • protected void finalize()가 Throwable을 발생시킵니다.가비지 수집기는 객체에 대한 참조가 없다고 판단되면 객체에 대해 호출됩니다.

public final Class getClass()객체의 런타임 클래스를 반환합니다.

public int hashCode()객체의 해시코드를 반환합니다.

public String toString()객체의 문자열 표현을 반환합니다.

Object의 inform, informAll 및 wait 메소드는 모두 동기화 프로그램에서 스레드를 독립적으로 실행하는 활동에서 역할을 합니다. 이에 대해서는 나중에 설명하고 여기서는 설명하지 않습니다.

5가지 방법이 있습니다: public final void inform() public final void informAll() public final void wait()public final void wait(long timeout) public final void wait(long timeout, int nanos)5. in Java Java에서는 불변인가요?1. Java에서는 문자열이 불변이기 때문에 String pool이 있습니다. 이러한 방식으로 다양한 문자열 변수가 풀의 동일한 문자열 변수를 참조할 수 있으므로 Java 런타임은 많은 Java 힙 공간을 절약합니다. String이 불변이 아닌 경우 변수의 값이 변경되면 다른 변수에 반영되므로 String 인터닝이 불가능합니다. (자세한 인터뷰 질문 추천: java 인터뷰 질문 및 답변)2. 문자열이 불변이 아니면 애플리케이션에 심각한 보안 위협이 됩니다. 예를 들어, 데이터베이스 연결을 가져오기 위해 데이터베이스 사용자 이름과 비밀번호가 문자열로 전달되고, 소켓 프로그래밍 호스트 및 포트 세부 정보가 문자열로 전달됩니다. String은 변경할 수 없으므로 해당 값을 변경할 수 없습니다. 그렇지 않으면 해커가 참조 값을 변경하여 애플리케이션에 보안 문제가 발생할 수 있습니다.

3. String은 변경 불가능하므로 멀티스레딩에 안전하며 단일 문자열 인스턴스를 여러 스레드 간에 공유할 수 있습니다. 스레드 안전을 위해 동기화 문자열은 암시적으로 스레드로부터 안전합니다.

4. 문자열은 Java 클래스 로더에서 사용되며 불변성은 클래스 로더에 의해 올바른 클래스가 로드된다는 보안을 제공합니다. 예를 들어, java.sql을 로드하려고 하는 인스턴스를 생각해 보십시오. 연결 클래스가 연결되었으나 참조된 값이 myhacking으로 변경됩니다. 데이터베이스에 불필요한 작업을 수행할 수 있는 연결 클래스입니다.

5. 문자열은 변경할 수 없으므로 해당 해시코드는 생성 시 캐시되며 다시 계산할 필요가 없습니다. 이는 맵의 키에 대한 좋은 후보가 되며 다른 HashMap 키 개체보다 빠르게 처리됩니다. 이것이 String이 HashMap 키에 가장 일반적으로 사용되는 객체인 이유입니다.

6. Final, finally, Finalize의 차이점은 무엇인가요?

이 질문이 제가 가장 좋아하는 질문입니다.

final키워드는 한 번만 할당할 수 있는 엔터티를 정의하기 위해 여러 상황에서 사용됩니다.

Java finally 블록은 연결 닫기, 스트림 닫기 등과 같은 중요한 코드를 실행하는 데 사용되는 블록입니다. 예외 처리 여부에 관계없이 Java finally 블록은 항상 실행됩니다. Java finally 블록은 try 또는 catch 블록을 따릅니다.

Finalize는 정리 작업을 수행하기 위해 가비지 수집 대상 개체를 삭제/파기하기 전에 GarbageCollector(가비지 수집기)에서 호출하는 메서드입니다.

7. 다이아몬드의 문제점은 무엇입니까?

다이아몬드 문제는 Java에서 다중 상속이 허용되지 않는 이유를 반영합니다. 특정 메서드를 사용하는 공유 슈퍼클래스가 있는 두 개의 클래스가 있는 경우 두 하위 클래스 모두에서 재정의됩니다. 그런 다음 두 하위 클래스 모두에서 상속하기로 결정하면 호출하려는 메서드를 언어에서 결정할 수 없습니다.

이 문제를 다이아몬드 문제라고 부릅니다. 그 이름은 경고를 묘사하는 위의 이미지에서 따왔습니다.

8. 어떻게 클래스를 불변으로 만들 수 있나요?

이건 꽤 어려운 문제인 것 같아요. 불변성을 달성하려면 클래스를 일부 수정해야 합니다.

1 클래스를 확장할 수 없도록 최종 클래스로 선언합니다.

2. 모든 필드를 비공개로 설정하여 직접 접근을 허용하지 마세요.

3. 변수에 대해 setter 메소드를 제공하지 마세요.

4. 해당 값이 한 번만 할당될 수 있도록 모든 변수 필드를 최종적으로 만듭니다.

5. 전체 복사를 수행하는 생성자를 통해 모든 필드를 초기화합니다.

6. getter 메소드에서 객체 복제를 수행하여 실제 객체 참조 대신 복사본을 반환합니다.

9. 싱글턴이란 무엇을 의미하나요?

싱글턴은 자신의 인스턴스를 하나만 생성할 수 있도록 허용하고 생성된 인스턴스에 대한 액세스를 제공하는 클래스입니다. 여기에는 고유한 개인 인스턴스를 보유할 수 있는 정적 변수가 포함되어 있습니다. 사용자가 클래스의 인스턴스화를 하나의 개체로 제한하려는 경우 사용할 수 있습니다. 이는 시스템 전체의 작업을 조정하기 위해 단일 개체가 필요할 때 종종 유용합니다.

10. 의존성 주입이란?

Java EE나 Spring에서 작업할 때 가장 먼저 알아야 할 질문입니다. IoC(제어 반전)는 컴퓨터 코드 간의 결합을 줄이는 데 사용할 수 있는 객체 지향 프로그래밍의 설계 원칙입니다. 가장 일반적인 방법은 DI(종속성 주입)라고 하며 다른 방법은 종속성 조회라고 합니다. 제어 역전을 통해 객체가 생성되면 시스템의 모든 객체를 제어하는 외부 엔터티가 자신이 의존하는 객체의 참조를 전달합니다. 의존성이 객체에 주입된다고도 말할 수 있습니다.

구성 요소는 위치 지정 쿼리를 수행하지 않으며 컨테이너가 종속성을 확인하기 위한 일반 Java 메서드만 제공합니다. 컨테이너는 JavaBean 속성이나 생성자를 통해 필요한 개체에 대한 종속성을 충족하는 개체를 전달하는 역할만 담당합니다. JavaBean 속성을 통해 종속성을 주입하는 방법을 Setter 주입이라고 합니다. 종속성을 생성자 매개변수로 전달하는 방법을 생성자 주입이라고 합니다.

Summary

이 기사에서 논의할 내용은 다음과 같습니다. 내 경험상 이것이 오늘날 가장 중요한 질문이다. 이 사실을 알고 계시다면 채용과정에서 큰 이점을 얻으실 수 있을 것이라 믿습니다.

이 주제와 관련해 비슷한 경험이 있거나 성공 사례가 있다면 아래 댓글로 공유해 주세요.

관련 권장 사항:java 비디오 튜토리얼

위 내용은 자주 묻는 10가지 Java 인터뷰 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!