어젯밤 외국인들이 공유 한 인터뷰 질문 몇 개를 봤는데 꽤 흥미로 웠습니다. 두 차례의 문제를 살펴 보겠습니다 외국인에게 어떤 문제가 어려운가요? 당신이라면 모든 답을 올바르게 얻을 수 있습니까?
원본 텍스트에 관심이 있으시면 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의 자체 개발 상하이 브랜드 대리 경매 사업, 바로 클릭
과거에 추천
대부분의 IOC 컨테이너가 BeanFactory 대신 ApplicationContext를 사용하는 이유
JIRA, Confluence 및 기타 제품은 내년 2 월에 현지화 된 버전 판매를 중단 할 예정이며, 이는 중국 고객의 거의 90 %에 영향을 미칠 것입니다!
Intellij IDEA를 사용하여 Git에서 추적 할 수없는 임시 파일을 만듭니다.
국내 최초의 비트 코인 랜섬웨어 생산자가 체포됐지만 그 과정은 약간 웃겼습니다 ...
TIOBE는 11 월 목록을 발표했습니다 : Python은 멈출 수없는 Java를 능가합니다!
나를 스캔하고 따라와
함께 공부하고 함께 발전하십시오
매주 도서 기부, 지속적인 혜택
﹀
﹀
﹀
심층 콘텐츠
가입 권장