이 기사에는 많은 사람들이 당황한 외국 Java 인터뷰 질문도 정리되어 있습니다. 인터뷰 질문을 살펴보고 무엇이 흥미로운지 살펴보겠습니다.
1. 다음 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) 메서드가 호출됩니다.
2. 다음 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 사이의 값에 대해서만 발생합니다.
3. 가비지 수집은 Java 애플리케이션의 메모리 부족을 어떻게 방지하나요?
답변:
Java 가비지 수집기는 Java 애플리케이션의 메모리 부족을 방지할 수 없습니다. 객체가 범위를 벗어나 더 이상 필요하지 않을 때 사용되지 않은 메모리를 간단히 지웁니다. 따라서 Java 애플리케이션의 메모리 부족을 방지하는 것은 보장되지 않습니다!
(학습 동영상 공유: java 동영상 튜토리얼)
4. Java는 "참조에 의한 전달"인가요 아니면 "값에 의한 전달"인가요?
답변:
Java는 항상 "값에 의한 전달"입니다. 그러나 객체의 값을 전달할 때 변수는 객체 자체가 아닌 객체 참조를 저장하므로 해당 객체에 대한 참조를 전달합니다. 그러나 이는 초보자에게 혼란을 줄 수 있는 "참조에 의한 전달"이 아닙니다.
5. 다음 코드는 몇 개의 String 개체를 생성합니까?
public class Test{ public static void main(String[] args){ String s = new String("Hello World"); } }
답변:
2 String 개체가 생성됩니다. 하나는 힙 메모리에 있고 다른 하나는 메서드 영역의 문자열 상수 풀에 있습니다.
6. 다음 코드의 출력은 무엇입니까?
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); } }
답변:
print의 첫 문장은 false를 출력하고, print의 두 번째 문장은 true를 출력합니다. 부동 소수점 숫자의 반올림 오류로 인해 간단한 이진 표기법에서는 2의 거듭제곱만 정확하게 표현할 수 있습니다. 2의 거듭제곱에 해당하지 않는 숫자는 제한된 자릿수에 맞게 반올림해야 하므로 0.1*3은 0.3과 같지 않습니다.
7. Java에서 정적 메서드를 재정의하거나 오버로드할 수 있나요?
답변:
정적 Java 메서드를 오버로드하는 것은 가능하지만 재정의하는 것은 불가능합니다. 하위 클래스에 동일한 이름을 가진 다른 정적 메서드를 작성할 수 있지만 슈퍼클래스 메서드를 재정의하지는 않습니다. 자바에서는 메소드 은닉(Method Hiding)이라고 합니다.
8. 두 개의 double 값이 같은지 테스트하는 가장 신뢰할 수 있는 방법은 무엇입니까?
답변:
Double.compare(d1, d2) == 0
9. try 또는 catch 블록이 return 문을 실행하면 finally 블록이 실행되나요?
답변:
실행됩니다. finally 블록이 실행되는 것을 방지하는 유일한 방법은 System.exit()를 사용하는 것입니다.
10. 다음 코드의 출력은 무엇입니까?
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"); } }
답변:
은 "main method"를 인쇄합니다. Java에서는 기본 메서드를 오버로드할 수 있으므로 오류나 예외가 발생하지 않습니다. 다른 메소드처럼 실행하려면 기본 메소드 내부에서 호출해야 합니다.
관련 추천: java 인터뷰 질문 및 답변
위 내용은 이러한 어려운 Java 인터뷰 질문에 답할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는
