>Java >Java시작하기 >고전적인 Java 면접 질문 모음(2)

고전적인 Java 면접 질문 모음(2)

王林
王林앞으로
2020-07-07 16:19:121946검색

고전적인 Java 면접 질문 모음(2)

1. int와 Integer의 차이점

(관련 튜토리얼 추천: java 인터뷰 질문)

1 Integer는 int의 래퍼 클래스이고 int는 java

의 기본 데이터 유형입니다. 2, 정수 변수는 사용하기 전에 인스턴스화해야 하지만 int 변수는 그럴 필요가 없습니다.

3. 정수는 실제로 개체에 대한 참조입니다. 새 정수가 생성되면 실제로 이 개체를 가리키는 포인터가 생성됩니다. int는 데이터 값을 직접 저장합니다.

4. Integer의 기본값은 0

2입니다. 각 루프에 대해 어떤 데이터 유형이 있습니까?

for 루프의 향상된 버전은 작성이 더 간결하고 오류가 덜 발생합니다(배열이 범위를 벗어나는 것에 대해 걱정할 필요가 없기 때문입니다). 맨 아래 레이어도 반복자를 사용하여 얻습니다. iterator는 jvm에 의해 완료되며 iterator를 얻을 필요가 없으므로 foreach 루프 변수 요소를 사용하는 과정에서 컬렉션 개체는 컬렉션의 요소 수를 수정할 수 없습니다.

작성:

for(String it : set){
    System.out.println("集合的元素:" + it);
}

단점:

배열 인덱스로 작업하거나 컬렉션을 추가하거나 삭제할 때 오류가 보고될 수 있습니다.

(추천 학습: Java 입문 프로그램)

3. 오버로딩과 재작성의 차이점은 무엇인가요?

1. 메소드 오버로딩

은 클래스가 다양한 유형의 데이터를 통일된 방식으로 처리하는 수단입니다. 동일한 이름을 가진 여러 함수가 동시에 존재하며 매개변수의 수/유형이 다릅니다. 오버로딩은 클래스의 다형성을 나타냅니다.

Java의 메서드 오버로드는 이름은 같지만 매개변수와 정의가 다른 여러 메서드를 만들 수 있음을 의미합니다.

메서드를 호출할 때 전달된 매개 변수의 수와 유형에 따라 사용할 메서드를 결정합니다.

오버로드 시 메소드 이름은 동일해야 하지만 매개변수 유형과 숫자가 다르고 반환값 유형도 동일하거나 다를 수 있습니다. 반환 값 유형은 오버로드된 함수를 구별하는 기준으로 사용할 수 없습니다.

2. 메소드 재작성

매개변수 목록은 재정의된 메소드와 정확히 동일해야 합니다. 그렇지 않으면 재작성이라고 할 수 없지만 오버로딩이라고 할 수 있습니다.

반환된 유형은 항상 재정의된 메서드의 반환 유형과 동일해야 합니다. 그렇지 않으면 재정의라고 할 수 없으며 오버로드라고 할 수 있습니다.

액세스 한정자의 제한은 재정의된 메서드의 액세스 한정자보다 커야 합니다(공용>보호>기본>개인)

재정의된 메서드는 새로운 확인된 예외를 발생시키지 않아야 하거나 재정의된 메서드 선언보다 넓어야 합니다. 확인된 예외 . 예를 들어 상위 클래스의 메서드는 확인된 예외 IOException을 선언합니다. 이 메서드를 재정의하는 경우 IOException의 하위 클래스에 대한 예외만 발생시킬 수 있으며 확인되지 않은 예외는 발생시킬 수 있습니다.

참고: 생성자는 상속될 수 없으므로 재정의할 수는 없지만 오버로드될 수는 있습니다.

4. 인터페이스와 추상 클래스의 차이점은 무엇인가요?

1. 추상 클래스나 인터페이스는 모두 직접 인스턴스화할 수 없습니다. 인스턴스화하려면 추상 클래스 변수는 모든 추상 메서드를 구현하는 하위 클래스 개체를 가리켜야 하며, 인터페이스 변수는 모든 인터페이스 메서드를 구현하는 클래스 개체를 가리켜야 합니다.

2. 추상 클래스는 하위 클래스로 상속되어야 하며 인터페이스는 클래스로 구현되어야 합니다.

3. 인터페이스는 메소드 선언에만 사용할 수 있습니다.

4. 인터페이스에 정의된 변수는 공용 정적 상수일 수 있으며, 추상 클래스의 변수는 일반 변수입니다.

5. 추상 클래스의 모든 추상 메서드는 하위 클래스에서 구현되어야 합니다. 하위 클래스가 상위 클래스의 모든 추상 메서드를 구현할 수 없는 경우 하위 클래스는 추상 클래스만 될 수 있습니다. 마찬가지로 클래스가 인터페이스를 구현할 때 모든 인터페이스 메서드를 구현할 수 없다면 클래스는 추상 클래스만 될 수 있습니다.

6. 추상 메소드는 구현이 아닌 선언만 가능하며, 추상 클래스는 재구성의 결과입니다.

8. 클래스의 추상 메서드인 경우 이 클래스는 추상 클래스만 될 수 있습니다

9. 추상 메서드는 구현되어야 하므로 정적이거나 비공개일 수 없습니다.

10. 인터페이스는 인터페이스와 여러 인터페이스를 상속할 수 있지만 클래스는 단일 루트에서만 상속할 수 있습니다.

클래스의 다중 상속이 허용되지 않는 주된 이유는 A가 B와 C를 동시에 상속하고, b와 c가 동시에 D 메서드를 갖는 경우 A는 어떤 메서드를 상속할지 어떻게 결정하나요?

하지만 인터페이스에는 그런 문제가 없습니다. 인터페이스는 모두 추상 메서드이며 누가 상속하든 관계가 없으므로 인터페이스는 여러 인터페이스를 상속할 수 있습니다.

(동영상 튜토리얼 추천:

java 동영상 튜토리얼

)

5. final, finally, finalize

final의 차이점: Java의 키워드와 수식어.

A) 클래스가 최종으로 선언되면 새 하위 클래스를 파생할 수 없고 상위 클래스로 상속될 수 없음을 의미합니다. 따라서 클래스를 abstract로 선언하는 동시에 final로 선언할 수 없습니다.

B) 변수나 메소드를 final로 선언하면 사용 중에 변경되지 않도록 할 수 있습니다.

(1)被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。

(2)被声明final的方法只能使用,不能重载。

finally:java的一种异常处理机制。

finally是对Java异常处理模型的最佳补充。finally结构使代码总会执行,而不管无异常发生。使用finally可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。

finalize,它是一个方法,属于java.lang.Object类,它的定义如下:

protected void finalize()throws Throwable{}

众所周知,finalize()方法是GC(garbagecollector运行机制的一部分,在此我们只说说finalize()方法的作用是什么呢?

finalize()方法是在GC清理它所从属的对象时被调用的,如果执行它的过程中抛出了无法捕获的异常(uncaughtexception,GC将终止对改对象的清理,并且该异常会被忽略;直到下一次GC开始清理这个对象时,它的finalize()会被再次调用。

위 내용은 고전적인 Java 면접 질문 모음(2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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