클래식 Java 기본 인터뷰 질문, 수집 및 공유에 오신 것을 환영합니다.
질문 : 기본 방법이 비공개로 선언되면 어떻게됩니까?
답변 : 정상적으로 컴파일 할 수 있지만 실행할 때 "기본 메소드가 공개되지 않습니다"라는 메시지가 표시됩니다.
질문 : Java의 통과 참조와 전달 값의 차이점은 무엇입니까?
답변 : 참조를 전달한다는 것은 값 자체가 아닌 주소를 전달하는 것을 의미하며 값을 전달하는 것은 값의 사본입니다.
질문 : 객체의 평등 메소드를 다시 작성하려면 무엇을 고려해야합니까?
답 : 해시 코드.
질문 : Java의 "한 번 쓰기, 모든 곳에서 실행"은 어떻게 구현됩니까?
답변 : Java 프로그램은 모든 플랫폼에서 실행될 수있는 바이트 코드로 구성된 클래스 파일로 편집되므로 Java는 플랫폼 독립적입니다.
질문 : 공개 정적 무효 메인 (String Args []) 문에서 각 키워드의 역할을 설명하십시오.
답변 : 대중 : 주요 방법은 Java 프로그램이 실행될 때 호출 된 첫 번째 방법이므로 Java 환경에 보이 봐야합니다. 가시성은 Pulic으로 설정됩니다.
정적 : Java 플랫폼은이 메소드를 호출 할 때이 클래스의 인스턴스를 생성하지 않으므로이 방법은 정적으로 선언되어야합니다.
void : 기본 메소드에는 리턴 값이 없습니다.
문자열은 명령 줄에 전달되는 매개 변수 유형이며 Args는 명령 줄에 전달되는 문자열 배열을 나타냅니다.
질문 : == 평등과의 차이
답 : == 두 객체가 메모리에서 동일한 객체인지 비교합니다. 즉, 메모리의 스토리지 위치가 동일하다는 것을 의미합니다. 두 문자열 객체에 의해 저장된 값은 동일하지만 메모리의 다른 위치에 저장 될 수 있습니다.
== 비교는 참조이며, Equals 메소드는 내용을 비교합니다. Public Boolean Equals (Object OBJ)이 방법은 객체 객체에 의해 제공되며 서브 클래스로 다시 작성할 수 있습니다. 기본 구현은 객체 자체와 비교 될 때만 TRUE를 반환하며 현재는 ==와 같습니다. 문자열, 비트, 날짜 및 파일은 모두 동일 메소드를 재정의합니다. 두 개의 문자열 객체의 경우 동일한 값은 동일한 문자 순서를 함유 함을 의미합니다. 기본 유형의 래퍼 클래스의 경우 동일한 값은 해당 기본 유형의 값이 동일하다는 것을 의미합니다.
public class EqualStest {public static void main (String [] args) {String s1 = "abc"; 문자열 s2 = s1; 문자열 s5 = "abc"; 문자열 s3 = 새 문자열 ( "abc"); 문자열 s4 = 새 문자열 ( "abc"); System.out.println ( "== 비교 :" + (S1 == S5)); System.out.println ( "== 비교 :" + (S1 == S2)); System.out.println ( "Equals Method 사용 :" + S1.equals (S2)); System.out.println ( "== 비교 :" + s3 == S4); System.out.println ( "Equals 메소드 사용 :" + s3.equals (s4)); }}결과:
== 비교 : 참
== 비교 : 참
Equals Method 사용 : true
거짓
Equals Method 사용 : true
질문 : 기본 메소드의 정적 수정자가 제거되면 어떻게됩니까?
답변 : 프로그램은 정상적으로 컴파일 할 수 있습니다. 런타임 중에 Nosuchmethoderror 예외가 발생합니다.
질문 : Oracle Type4 드라이버가 왜 얇은 드라이버라고 불리는가?
답변 : Oracle은 타입 4 JDBC 드라이버 (얇은 드라이버)를 제공합니다. 이 드라이버에는 Java에서 완전히 구현 된 Oracle에서 TCP/IP Net8 구현이 포함되어 있습니다. 따라서 플랫폼 독립적이며 런타임에 브라우저에서 다운로드 할 수 있으며 클라이언트의 Oracle 구현에 의존하지 않습니다. 클라이언트 연결 문자열은 데이터베이스 이름의 tnsname이 아닌 TCP/IP 주소 포트를 사용합니다.
질문 : 최종 방법을 소개하겠습니다
답변 : 최종 : 지속적인 선언. 마지막으로 : 예외를 처리합니다. 마무리 : 쓰레기 수집을 도와줍니다.
인터페이스에서 선언 된 변수는 기본적으로 최종입니다. 최종 클래스는 상속 될 수 없으므로 서브 클래스가 없음을 의미합니다. 이것은 문자열 및 정수와 같은 기본 유형의 보안상의 이유로 수행됩니다. 또한 컴파일러는 일부 최적화를 만들고 스레드 보안을보다 쉽게 보장 할 수 있습니다. 최종 방법을 다시 작성할 수 없습니다. 최종 변수의 값을 변경할 수 없습니다. 객체가 파괴되고 재활용되기 전에 Finalize () 메소드가 호출됩니다. 마지막으로, 예외가 발생하는지 여부에 관계없이 일반적으로 예외 처리에 사용됩니다. 예를 들어, 연결을 닫는 것은 일반적으로 최종 블록에서 수행됩니다.
질문 : Java API는 무엇입니까?
답변 : Java API는 GUI 구성 요소와 같은 많은 유용한 기능을 제공하는 많은 소프트웨어 구성 요소 모음입니다.
질문 : GregorianCalendar 클래스는 무엇입니까?
답변 : GregorianCalendar는 전통적인 서부 달력을 지원합니다.
질문 : ResourceBundle 클래스는 무엇입니까?
답변 : ResourceBundle은 지정된 로케일에 자원을 저장하는 데 사용됩니다. 응용 프로그램은 런타임 로케일에 따라 이러한 리소스를로드하여 다른 언어를 표시 할 수 있습니다.
질문 : Java에 전역 변수가없는 이유는 무엇입니까?
답변 : 글로벌 변수는 전 세계적으로 보이며 Java는 전 세계적으로 가시 변수를 지원하지 않습니다. 글로벌 변수는 참조 투명성의 원리를 파괴하기 때문입니다. 글로벌 변수는 네임 스페이스 충돌을 일으 킵니다.
질문 : 문자열 유형을 숫자 유형으로 변환하는 방법은 무엇입니까?
답 : 정수 클래스의 메소드의 가치는 문자열을 숫자로 변환 할 수 있습니다. 코드 예는 다음과 같습니다.
문자열 numstring = "1000";
int id = integer.valueof (numstring) .intValue ();
질문 : SimpleTimezone 클래스는 무엇입니까?
답변 : SimpleTimezone은 Gregorian 날짜 지원을 제공합니다.
질문 : Wird 루프와 DO 루프의 차이점은 무엇입니까?
답변 : WERD 구조는 다음 반복이 루프의 시작 부분에서 계속되어야하는지 여부를 결정합니다. DO/BUD 구조는 다음 반복이 루프 끝에서 계속 될지 여부를 결정합니다. DO 구조는 루프 본체를 적어도 한 번 실행합니다.
질문 : 로케일 클래스는 무엇입니까?
답변 : 로케일 클래스는 로케일 환경에 따라 프로그램의 출력을 동적으로 조정하는 데 사용됩니다.
질문 : 객체 지향 프로그래밍의 원칙은 무엇입니까?
답변 : 다형성, 상속 및 캡슐화의 세 가지 주요 요점이 있습니다.
질문 : 상속 원칙 소개
답변 : 상속은 한 개체가 다른 객체의 속성을 얻을 수 있도록합니다. 상속을 사용하면 테스트 된 기능을 재사용하고 한 번에 수정할 수 있으며 모든 상속 장소는 동시에 적용됩니다.
질문 : 암시 적 유형 변환이란 무엇입니까?
답변 : 암시 적 유형 변환은 컴파일러에 변환이 발생했음을 명시 적으로 알리지 않고 단순히 한 유형을 다른 유형에 할당하는 것입니다. 모든 유형이 암시 적 유형 변환을 지원하는 것은 아닙니다.
Code example:
int i = 1000;
긴 j = i; // 암시 적 주조
질문 : Java의 키워드 크기입니까?
답 : 아니요.
질문 : 기본 방법은 무엇입니까?
답변 : 기본 방법은 비 Java 코드 구현 방법입니다.
질문 : System.out.println ()에서 System, Out 및 Println은 무엇입니까?
답 : 시스템은 시스템에서 제공하는 사전 정의 된 최종 클래스입니다. Out은 PrintStream 객체이며 Println은 Out Object의 과부하 메소드입니다.
질문 : 캡슐화, 상속 및 다형성은 무엇입니까?
답 : 간단히 말해서 다형성은 한 이름의 여러 구현을 말합니다. 다형성을 통해 엔티티는 공통된 방식으로 다른 작업을 구현할 수 있습니다. 특정 작업은 실제 구현에 의해 결정됩니다.
Java에는 다형성을 나타내는 세 가지 방법이 있습니다. 메소드 과부하는 Java 인터페이스를 통해 상속 및 메소드 재 작성을 통해 구현됩니다.
질문 : 명시적인 유형 변환이란 무엇입니까?
답변 : 명시 적 유형 변환은 명시 적으로 컴파일러에게 객체를 변환하도록 지시합니다.
Code example:
긴 i = 700.20;
int j = (int) i; // 명시 적 주조
질문 : Java 가상 머신이란 무엇입니까?
답변 : Java Virtual Machines는 다른 하드웨어 플랫폼으로 포팅 할 수있는 소프트웨어 시스템입니다.
질문 : 유형 DownConversion이란 무엇입니까?
답변 : 다운 변환은 공통 유형에서 상속 구조에서 아래쪽으로 수행되는 특정 유형으로 변환하는 것을 의미합니다.
질문 : Java의 액세스 수정자는 무엇입니까?
답변 : 액세스 수정자는 클래스 멤버의 액세스 유형을 나타내는 키워드입니다. 이 키워드를 사용하여 프로그램의 메소드 또는 변수에 대한 액세스를 정의하십시오. 그들은 다음을 포함합니다.
공개 : 모든 클래스에 액세스 할 수 있습니다.
질문 : 모든 수업의 부모 수업은 무엇입니까?
답 : 물체.
질문 : Java의 기본 유형은 무엇입니까?
답변 : 바이트, 문자, 짧은, int, 길고, 플로트, 이중, 부울.
질문 : 정적 유형의 특성은 무엇입니까?
답 : 정적 변수는 클래스의 인스턴스 개체가 아니라 클래스에 바인딩됩니다. 각 인스턴스 객체는 동일한 정적 변수를 공유합니다. 즉, 클래스는 객체의 수에 관계없이 하나의 정적 변수 만 있습니다. 클래스 변수 또는 정적 변수는 키워드 정적을 통해 선언됩니다. 클래스 변수는 일반적으로 상수로 사용됩니다. 정적 변수는 일반적으로 클래스 이름으로 액세스합니다. 프로그램이 실행될 때이 변수는 프로그램이 완료되고 파괴되지 않을 때까지 생성됩니다. 클래스 변수의 범위는 인스턴스 변수의 범위와 동일합니다. 초기 값은 멤버 변수와 동일합니다. 변수가 초기화되지 않으면 데이터 유형에 따라 기본값이 있습니다. 마찬가지로 정적 방법은 클래스 객체가 아닌 클래스에 속하는 방법입니다. 그들의 통화는 클래스 객체에서 작동하지 않으며 클래스 인스턴스를 만들 필요가 없습니다. 정적 메소드 자체는 최종적입니다. 다시 쓰기는 클래스 인스턴스에서만 발생하기 때문입니다. 정적 메소드는 객체가 아니라 클래스에 묶여 있습니다. 부모 클래스의 정적 메소드는 원래 방법이 최종으로 선언되지 않는 한 아동 클래스의 정적 방법에 의해 차단됩니다. 비 정적 메소드는 정적 메소드를 무시할 수 없습니다. 즉, 정적 메소드를 서브 클래스의 인스턴스 메소드로 변경할 수 없습니다.
비 정적 변수는 각 객체 인스턴스에서 별도의 값 사본을 가지고 있습니다.
질문 : & 운영자와 && 운영자의 차이점은 무엇입니까?
답변 : AN & 표현이 평가되면 두 피연산자가 평가되고 &&는 작업자에게 바로 가기와 비슷합니다. AN && 표현이 평가되면 첫 번째 피연산자가 먼저 계산되며 TRUE가 반환되면 두 번째 피연산자가 계산됩니다. 첫 번째 피연산자가 False로 간주되면 두 번째 피연산자는 평가되지 않습니다.
질문 : Java는 정수의 오버플로와 언더 플로우를 어떻게 처리합니까?
답변 : Java는 계산의 해당 저차 바이트를 유형의 크기에 따라 해당 값으로 저장합니다.
질문 : 공개 정적 공극이 정적 공개 공허로 작성되면 어떻게됩니까?
답변 : 프로그램은 정상적으로 편집되어 실행됩니다.
질문, 변수 선언과 변수 정의의 차이점은 무엇입니까?
답 : 변수 선언 변수의 유형과 이름 만 제공하고 초기화하지 않습니다. 정의에는 두 단계가 포함됩니다 : 선언 및 초기화 문자열 s; 변수 선언, 문자열 s = 새 문자열 ( "bob"); 또는 문자열 s = "bob"; 가변 정의입니다.
질문 : Java는 어떤 매개 변수 전달 유형을 지원합니까?
답 : Java 매개 변수는 모두 전달 된 값입니다. 객체의 경우, 전달 된 값은 객체에 대한 참조, 즉 원래 참조의 사본 및 매개 변수 참조는 동일한 객체를 가리 킵니다.
질문 : 객체 캡슐화의 원리는 무엇입니까?
답 : 캡슐화는 데이터와 데이터를 별도의 단위로 조작하는 코드를 바인딩하는 것입니다. 이를 통해 데이터의 보안을 보장하고 외부 코드의 잘못된 사용을 방지합니다. 객체를 사용하면 잠재적 간섭을 줄이기 위해 프로그램과 데이터가 캡슐화 될 수 있습니다. 캡슐화에 대한 또 다른 이해는 보호 계층 외부의 코드에 대한 임의의 액세스를 방지하기 위해 데이터 및 코드의 보호 계층으로 작용하는 것입니다.
질문 : 변수를 어떻게 이해합니까?
답변 : 변수는 프로그램별로 액세스 할 수있는 메모리 영역입니다. 변수는 데이터를 저장하는 데 사용되며 프로그램이 실행되면 저장된 데이터도 변경 될 수 있습니다.
질문 : 수치 개선이란 무엇입니까?
답변 : 수치 향상은 정수 또는 부동 소수점 작업을 위해 더 작은 데이터 유형에서 더 큰 데이터 유형으로 데이터를 변환하는 것을 말합니다. 숫자 증가 과정에서 바이트, 숯, 짧은 값이 int 유형으로 변환됩니다. 필요한 경우 int 유형이 길게 홍보 될 수도 있습니다. 길고 플로트는 이중 유형으로 변환 될 수 있습니다.
질문 : Java의 유형 변환은 무엇입니까?
답 : 한 데이터 유형에서 다른 데이터 유형으로 변환하는 것을 유형 변환이라고합니다. Java는 두 가지 유형의 변환 방법을 가지고 있으며, 하나는 명백한 유형 변환이고 다른 하나는 암시 적입니다.
질문 : 기본 메소드의 매개 변수에서 문자열 배열의 첫 번째 매개 변수는 무엇입니까?
답변 : 어레이는 요소없이 비어 있습니다. C 또는 C ++와 달리 첫 번째 요소는 기본적으로 프로그램 이름입니다. 명령 줄이 매개 변수를 제공하지 않으면 기본 메소드의 문자열 배열은 비어 있지만 NULL은 아닙니다.
질문 : 배열이 무효인지 또는 비어 있는지 확인하는 방법은 무엇입니까?
답 : 배열의 출력 값. 0이면 배열이 비어 있습니다. NULL이면 NULL 포인터 예외가 발생합니다.
질문 : 여러 클래스가 동시에 소유하고 프로그램에 주요 방법을 가질 수 있습니까?
답 : 예. 프로그램이 실행되면 실행중인 클래스 이름을 지정합니다. JVM은 지정한 클래스에서만 주요 방법을 찾습니다. 따라서 주요 방법을 가진 여러 클래스 간에는 명명 충돌이 없습니다.
질문 : 정적 변수는 언제로드됩니까? 컴파일 또는 런타임? 정적 코드 블록 로딩의 타이밍은 얼마입니까?
답변 : 클래스 로더가 클래스를 JVM에로드하면 정적 변수가 생성되며, 이는 객체가 생성되는지와 관련이 없습니다. 정적 변수가로드되면 메모리 공간이 할당됩니다. 정적 코드 블록의 코드는 클래스가 처음으로 초기화 될 때만 한 번만 실행됩니다. 클래스는 여러 정적 코드 블록을 가질 수 있으며 클래스의 구성원이 아니며 반환 값이 없으며 직접 호출 할 수 없습니다. 정적 코드 블록은 이것 또는 슈퍼를 포함 할 수 없으며 일반적으로 정적 변수로 초기화됩니다.
질문 : 수업에 여러 가지 주요 방법이있을 수 있습니까?
답변 : 예, 그러나 하나의 주요 방법 만 다음과 같은 시그니처를 가지고 있습니다.
public static void main (String [] args) {}
그렇지 않으면 프로그램이 컴파일되지 않습니다. 컴파일러는 주요 방법이 이미 존재한다고 경고합니다.
질문 : JVM의 작동 방식을 간단히 소개하겠습니다.
답 : JVM은 추상 컴퓨터입니다. 실제 컴퓨터와 마찬가지로 먼저 .java 파일을 .class 파일로 컴파일 한 다음 (.class 파일은 Bytecode 파일입니다) 통역사를 사용하여 바이트 코드를로드합니다.
질문 : 두 변수의 값이 교환되면 어떻게됩니까?
답 : 먼저 두 값을 추가하고 첫 번째 변수에 값을 할당 한 다음 결과에서 두 번째 변수를 빼고 값을 두 번째 변수에 할당합니다. 그런 다음 첫 번째 변수로 두 번째 변수를 빼고 동시에 첫 번째 변수에 값을 할당하십시오. 코드는 다음과 같습니다.
int a = 5, b = 10; a = a+b; B = AB; a = ab;
XOR을 사용하여 전환하십시오. 첫 번째 방법은 오버플로를 유발할 수도 있습니다. xor의 방법은 다음과 같습니다. int a = 5, b = 10; a = a+b; B = AB; a = ab;
int a = 5; int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
질문 : 데이터 캡슐화 란 무엇입니까?
답변 : 데이터를 캡슐화하는 한 가지 방법은 클래스에서 세트를 작성하고 메소드를 가져 오는 것입니다. 일반적으로 변수는 비공개이며 Get and Set 메소드는 공개됩니다. 캡슐화는 또한 데이터를 저장할 때 데이터를 확인하거나 데이터를 계산하거나 내성으로 사용하는 데 사용될 수도 있습니다 (예 : Struts에서 Javabeans 사용 등). 데이터 및 기능을 별도의 구조로 캡슐화하는 것을 데이터 캡슐화라고합니다. 캡슐화는 실제로 데이터 및 관련 작업 방법을 독립 장치로 캡슐화하므로 이러한 관련 방법을 사용하여 데이터에 액세스 할 수 있습니다. 캡슐화는 데이터 보안을 제공하며 실제로 데이터를 숨기는 방법입니다.
질문 : 반사 API는 무엇입니까? 어떻게 구현됩니까?
답 : 반사는 런타임 중 클래스의 상태와 특성을보고 동적 관리를 수행 할 수있는 기능을 말합니다. 이러한 기능은 클래스, 메소드, 필드, 생성자 등과 같은 일부 내장 클래스 반사 API를 통해 제공됩니다.
질문 : JVM 자체가 캐시를 유지합니까? 힙에 객체를 할당 했습니까, 아니면 운영 체제의 힙 또는 힙이 JVM 자체가 관리하고 있습니까? 왜?
답 : 예, JVM 자체는 캐시를 관리하여 힙에 객체를 생성 한 다음 해당 객체를 스택에서 참조합니다.
질문 : 가상 메모리 란 무엇입니까?
답변 : 가상 메모리를 확장 메모리라고도하며 실제로 실제 메모리는 없습니다.
질문 : 메소드가 정적 및 동시에 동시에 동기화 될 수 있습니까?
답 : 예. 이렇게하면 JVM 은이 개체와 관련된 java.lang.class 인스턴스의 잠금을 획득합니다. 그렇게하는 것은 다음과 같습니다.
동기화 (xyz.class) {
}
질문 : String과 StringTokenizer의 차이점은 무엇입니까?
답변 : StringTokenizer는 문자열을 분할하는 데 사용되는 도구 클래스입니다.
StringTokenizer st = new StringTokenizer ( "Hello World"); while (st.hasmoretokens ()) {system.out.println (st.nextToken ());}
산출:
안녕하세요
세계
질문 : 과도 변수의 특성은 무엇입니까?
답 : 과도 변수는 직렬화되지 않습니다. 예를 들어, 직렬화 가능한 인터페이스를 구현하는 클래스가 ObjectStream에 직렬화되면 Type Transient의 변수는 스트림에 기록되지 않습니다. 동시에, 다시 철회되면, 해당 변수 값은 null입니다.
질문 : 기본 레이아웃으로 테두리 레이아웃을 사용하는 컨테이너는 무엇입니까?
답 : 창, 프레임, 대화 상자.
질문 : 동기화가 무엇인지 이해하는 방법은 무엇입니까?
답변 : 동기화는 여러 스레드 간의 공유 리소스 액세스를 제어하여 한 스레드 만이이 리소스에 동시에 액세스 할 수 있도록하는 데 사용됩니다. 비동기로 보호 된 다중 스레드 프로그램에서 스레드가 공유 변수를 수정하면 다른 스레드가 해당 값을 사용하거나 업데이트 할 수도 있습니다. 동기화는 더러운 데이터의 생성을 피합니다.
메소드 동기화 :
public synchronized void method1 () {// 적절한 메소드 관련 코드.}메소드 내부의 코드 블록을 동기화합니다.
public myfunction () {synchronized (this) {// 동기화 된 코드는 여기에 있습니다. }}위는 Java 인터뷰 질문에 대한 정보를 편집 한 것입니다. 우리는 향후 관련 정보를 계속 추가 할 것입니다. 이 사이트를 지원 해주셔서 감사합니다!