까다로운 자바 인터뷰 질문 10 개, 올바르게 답할 수있는 질문은 몇 개입니까?

어젯밤 외국인들이 공유 한 인터뷰 질문 몇 개를 봤는데 꽤 흥미로 웠습니다. 두 차례의 문제를 살펴 보겠습니다 외국인에게 어떤 문제가 어려운가요? 당신이라면 모든 답을 올바르게 얻을 수 있습니까?

원본 텍스트에 관심이 있으시면 https://levelup.gitconnected.com/tricky-java-interview-questions-cfc546fd03ab 링크를 통해 볼 수도 있습니다.

Q1 : 다음 Java 코드의 출력은 무엇입니까?

public class Test {
  
  public static void main(String[] args) {
    method(null);
  }

  public static void method(Object o) {
    System.out.println("Object method");
  }
  
  public static void method(String s) {
    System.out.println("String method");
  }
}

답변 :

"문자열 방법"이 인쇄됩니다. 첫째, null은 Java의 객체가 아니며 Java에서는 모든 참조 유형에 null을 할당 할 수 있습니다. 그리고 Java의 문자열은 Java.lang.String 클래스의 객체입니다. 여기서 Java 컴파일러는 오버로드 된 메소드를 호출하기 위해 가장 구체적인 매개 변수 유형을 선택합니다. String 유형은 Object보다 구체적이므로 method(String s)메서드 가 호출 됩니다.

Q2 : 다음 Java 코드의 출력은 무엇입니까?

public class Test{
  public static void main(String[] args){
    Integer num1 = 100;
    Integer num2 = 100;
    if(num1 == num2){
      System.out.println("num1 == num2");
    }
    else{
      System.out.println("num1 != num2");
    }
  }
}

답변 :

"num1 == num2"를 인쇄합니다. "=="를 사용하여 두 개의 다른 개체 참조를 비교할 때마다 값은 항상 "false"입니다. 그러나 여기서는 정수 캐시로 인해 num1 및 num2가 자동으로 박스됩니다. 따라서 num1 == num2는 "true"를 반환합니다. 동시에 정수 캐싱은 -128에서 127 사이의 값에 대해서만 발생합니다.

Q3 : 가비지 수집은 Java 애플리케이션의 메모리 부족을 어떻게 방지합니까?

답변 :

Java 가비지 수집기는 Java 애플리케이션의 메모리 부족을 방지 할 수 없습니다. 개체가 범위를 벗어나 더 이상 필요하지 않을 때 사용하지 않는 메모리를 지 웁니다. 따라서 Java 응용 프로그램의 메모리 부족을 방지한다고 보장 할 수 없습니다!

Q4 : Java는 "참조에 의한 전달"또는 "값에 의한 전달"입니까?

답변 :

Java는 항상 "값에 의한 전달"입니다. 그러나 객체의 값을 전달할 때 변수가 객체 자체가 아닌 객체 참조를 저장하기 때문에 객체에 대한 참조를 전달합니다. 그러나 이것은 초보자에게 혼동을 줄 수있는 "참조에 의한 통과"가 아닙니다.

Q5 : 다음 코드로 생성 된 String 객체 수

public class Test{
  public static void main(String[] args){
    String s = new String("Hello World");
  }
}

답변 :

2 개의 String 객체를 생성했습니다. 하나는 힙 메모리에 있고 다른 하나는 메서드 영역의 문자열 상수 풀에 있습니다.

Q6 : 다음 코드의 출력은 무엇입니까?

public class Test{
  public static void main(String[] arr){
    System.out.println(0.1*3 == 0.3);
    System.out.println(0.1*2 == 0.2);
  }
}

답변 :

첫 번째 문장 인쇄는 거짓을 출력하고 두 번째 문장 인쇄는 참을 출력합니다. 부동 소수점 숫자의 오류 반올림으로 인해 2의 거듭 제곱 만 간단한 이진 표기법으로 정확하게 표현할 수 있습니다. 2의 거듭 제곱에 해당하지 않는 숫자는 제한된 수의 비트에 맞게 반올림되어야하므로 0.1 * 3은 0.3과 같지 않습니다.

Q7 : Java에서 정적 메서드를 다시 작성하거나 오버로드 할 수 있습니까?

답변 :

정적 Java 메서드를 오버로드 할 수 있지만 재정의하는 것은 불가능합니다. 서브 클래스에서 동일한 이름을 가진 다른 정적 메서드를 작성할 수 있지만 슈퍼 클래스 메서드를 재정의하지는 않습니다. Java에서 숨어있는 메소드라고합니다.

Q8 : 두 개의 double 값이 같은지 테스트하는 가장 신뢰할 수있는 방법은 무엇입니까?

답변 :

Double.compare(d1, d2) == 0

Q9 : try 또는 catch 블록이 return 문을 실행하면 finally 블록이 실행됩니까?

답변 :

실행됩니다. finally 블록 실행을 방지하는 유일한 방법은 System.exit().

Q10 : 다음 코드의 출력은 무엇입니까?

public class Test{ 
  public static void main(String[] args){ 
   System.out.println("main method");
  } 
  public static void main(String args){ 
   System.out.println("Overloaded main method");
  } 
}

답변 :

"주 방법"을 인쇄합니다. Java에서 main 메소드가 오버로드 될 수 있으므로 오류나 예외가 없습니다. 다른 메소드처럼 실행하려면 main 메소드 내에서 호출해야합니다.

좋아요, 10 개의 질문을 공유 한 후 몇 개의 답을 얻었나요?

DD의 자체 개발 상하이 브랜드 대리 경매 사업, 바로 클릭

과거에 추천

Git이 코드를 제출 한 후 몇 가지 후회하는 약

대부분의 IOC 컨테이너가 BeanFactory 대신 ApplicationContext를 사용하는 이유

JIRA, Confluence 및 기타 제품은 내년 2 월에 현지화 된 버전 판매를 중단 할 예정이며, 이는 중국 고객의 거의 90 %에 영향을 미칠 것입니다!

Intellij IDEA를 사용하여 Git에서 추적 할 수없는 임시 파일을 만듭니다.

국내 최초의 비트 코인 랜섬웨어 생산자가 체포됐지만 그 과정은 약간 웃겼습니다 ...

TIOBE는 11 월 목록을 발표했습니다 : Python은 멈출 수없는 Java를 능가합니다!

나를 스캔하고 따라와

함께 공부하고 함께 발전하십시오

매주 도서 기부, 지속적인 혜택

심층 콘텐츠

가입 권장

추천

출처blog.csdn.net/j3T9Z7H/article/details/109684871