편집자는 2017 년 Java 프로그래머를 인터뷰하는 친구들을위한 매우 인기있는 인터뷰에서 필기 시험 질문을 작성했습니다. Java 프로그래머 인터뷰를 준비하는 독자라면 빨리 배우십시오.
1. 다음 진술은 정확합니다 ()
A. 파일에 동시에 두 개의 공개 수정 클래스가 존재할 수 있습니다.
B. 생성자가 재정의 될 수 있습니다
C. 서브 클래스는 부모 클래스에서 공개 및 보호에 의해 수정되지 않은 속성에 액세스 할 수 없습니다.
D. 기본 수정 클래스를 상속받을 수 있습니다
답 : c
Java 소스 파일에는 하나의 공개 클래스 만있을 수 있습니다. 공개 클래스가 있으면 소스 파일 이름은 그와 일치해야합니다. 그렇지 않으면 컴파일 할 수 없습니다. 소스 파일에 공개 클래스가없는 경우 파일 이름과 클래스 사이에 일관성 요구 사항이 없습니다. Main ()은 프로그램을 실행하기 위해 공개 클래스에 배치 할 필요가 없습니다.
재 작성은 아동 수업이 상위 클래스에서 상속 된 후 부모 클래스의 메소드를 수정하는 것입니다. 메소드 이름, 매개 변수 및 반환 값은 동일해야합니다. 최종적으로 표시된 메소드는 다시 작성할 수 없습니다. 메소드를 상속받을 수 없으면이 메소드를 무시할 수 없습니다.
확장 : 재 작성 재정의 과부하 오버로드의 차이
Java 메소드 과부하
이름은 동일한 클래스에서 여러 가지 메소드를 만들 수 있지만 매개 변수와 다른 정의가 다릅니다. 메소드를 호출 할 때 특정 방법은 전달 된 다른 매개 변수 및 매개 변수 유형의 수에 의해 결정됩니다. 리턴 값 유형은 동일하거나 다를 수 있으며 이는 객체 지향 다형성입니다.
Java 메소드를 다시 작성합니다
부모 클래스와 아동 계급 사이의 다형성은 부모 클래스의 기능을 재정의합니다. 서브 클래스로 정의 된 메소드가 부모 클래스와 동일한 이름과 매개 변수를 갖는 경우 메소드가 재정의된다고 말합니다. Java에서 서브 클래스는 동일한 메소드를 다시 작성하지 않고 부모 클래스에서 메소드를 상속받을 수 있습니다. 그러나 때때로 서브 클래스는 부모 클래스의 메소드를 온전한 상속을 원하지 않고 오히려 특정 수정을 만들고 싶어하며,이 방법을 다시 작성해야합니다. 메소드 덮어 쓰기를 메소드 덮어 쓰기라고도합니다.
서브 클래스의 메소드가 상위 클래스의 메소드와 동일한 메소드 이름, 리턴 유형 및 매개 변수 테이블을 갖는 경우 새 메소드는 원래 메소드를 대체합니다. 상위 클래스에 원래 메소드가 필요한 경우 현재 클래스의 상위 클래스를 나타내는 Super 키워드를 사용할 수 있습니다.
서브 클래스 함수의 액세스 수정 권한은 부모 클래스의 액세스 권한보다 작을 수 없습니다.
상속 관계에만 다시 쓰기 방법이 존재할 수 있으며, 다시 쓰기 방법은 부모 클래스에서 비공개가 아닌 메소드를 다시 작성할 수 있습니다.
2. for (int x = 0, y = 0; (y! = 0) && (x <4); x ++) 루프의 실행 시간 수는 ()
A. 무제한 시간
B. 4 번 실행하십시오
C. 3 번 실행하십시오
D. 한 번 실행하지 마십시오
답 : d
y의 초기 값은 0입니다. 루프의 전체에서 y의 값은 변경되지 않으므로 판단 진술 (y! = 0)은 사실이 아니므로 한 번에는 실행되지 않습니다.
3. Java 힙과 관련하여 다음 진술은 잘못되었습니다 ()
A. 클래스의 모든 인스턴스 및 배열은 힙에 메모리를 할당합니다.
B. 객체가 차지하는 힙 메모리는 자동 메모리 관리 시스템에 의해 수집됩니다.
C. 힙 메모리는 생존 및 죽은 물체 및 무료 조각으로 구성됩니다.
D. 배열은 스택에 할당됩니다
답 : d
우선, 배열은 힙에 할당되므로 D의 명령문이 올바르지 않습니다.
Java 힙의 구조 : JVM의 힙은 런타임 데이터 영역이며, 클래스의 모든 인스턴스 및 배열은 힙에 메모리를 할당합니다. JVM이 시작될 때 생성됩니다. 물체가 차지하는 힙 메모리는 자동 메모리 관리 시스템, 즉 쓰레기 수집기에 의해 수집됩니다. 힙 메모리는 생존하고 죽는 물체로 구성됩니다. 살아남은 물체는 응용 프로그램에 액세스 할 수 있으며 쓰레기가 수집되지 않습니다. 죽은 물체는 응용 프로그램에 액세스 할 수없고 쓰레기 수집기에 의해 재활용되지 않은 객체입니다. 쓰레기 수집가가 이러한 물체를 되 찾을 때까지 힙 메모리 공간을 차지할 것입니다.
4. 슈퍼 와이 키워드를 사용할 때 아래의 올바른 설명은 ()입니다.
A. 서브 클래스 생성자에서 super ()를 사용하여 부모 클래스를 호출하는 생성자를 표시합니다.
Super ()는 서브 클래스 생성자의 첫 번째 줄에 작성해야합니다. 그렇지 않으면 컴파일이 전달되지 않습니다.
b.super () 및 this ()는 생성자 방법의 첫 번째 줄에 배치 할 필요가 없습니다.
C. this () 및 super ()는 생성자에 동시에 나타날 수 있습니다.
D.이 () 및 super ()는 정적 메소드 및 정적 문을 포함하여 정적 환경에서 사용할 수 있습니다.
답 : a
Java 키워드 이것은 방법 본문에서만 사용할 수 있습니다. 객체가 만들어지면 JVM (Java Virtual Machine)은 자체를 나타내는 객체에 포인터를 할당 하며이 포인터의 이름은 이것입니다. 따라서 이것은 클래스의 비 정적 메소드에서만 사용할 수 있으며, 이는 정적 메소드와 정적 코드 블록으로 표시되어서는 안됩니다.
수퍼의 키는 이와 유사합니다. 즉, 차단 된 멤버 변수 또는 멤버 메소드가 표시되거나 차단 된 멤버 변수 및 멤버 멤버 메소드를 참조하는 데 사용됩니다.
그러나 Super는 직접 부모 클래스에서 차단 된 멤버에 액세스하기 위해 서브 클래스로 사용됩니다. 직접 상위 클래스입니다 (클래스 위의 가장 최근 슈퍼 클래스).
5. 다음 중 어느 것이 맞는가 ()
A. Java 프로그램이 컴파일되면 기계 코드가 생성됩니다.
B. Java 프로그램은 바이트 코드가 컴파일 된 후에 바이트 코드를 생성합니다.
C. Java 프로그램은 컴파일 후 DLL을 생성합니다
D. 위의 어느 것도 맞지 않습니다
답 : b
Java Bytecode는 Java 소스 파일 컴파일에 의해 생성 된 중간 파일입니다.
Java Virtual Machines의 크로스 플랫폼 특성은 Java 바이트 코드를 실행할 수있는 가상 컴퓨터입니다. 또한 다른 프로그래밍 언어와 비교적 비슷합니다.
먼저 C 언어의 컴파일 프로세스를 소개하겠습니다. C 파일은 C 컴파일러 프로그램에 의해 컴파일되어 Windows 실행 파일 실행 파일을 생성 한 다음 Windows에서 실행합니다.
Java 컴파일 프로세스를 소개하겠습니다. Java 파일은 Java 컴파일러에서 컴파일됩니다. Java Bytecode 파일은 Java Virtual Machine의 클래스 파일입니다. 기계 코드는 CPU에 의해 실행됩니다. Java는 바이트 코드로 컴파일됩니다.
컴퓨터는 기계 코드 만 실행할 수 있습니다. Java가 실행되면 바이트 코드를 기계 코드로 바꿉니다. C/C ++는 컴파일 할 때 기계 코드로 직접 컴파일됩니다
6. 다음 중 어느 것이 맞습니다 ()
A. 초록 수정자는 필드, 메소드 및 클래스를 수정합니다
B. 추상 방법의 신체 부분은 한 쌍의 교정기 {}에 싸여 있어야합니다.
C. 초록 방법 선언, 교정기는 선택 사항입니다
D. 초록 방법은 교정기로 작성할 수 없습니다
답 : d
초록 수정자는 클래스 및 멤버 메소드를 수정하는 데 사용됩니다.
추상적으로 수정 된 클래스는 추상 클래스를 나타냅니다. 추상 클래스는 상속 트리의 추상층에 있습니다. 초록 수업은 인스턴스화 할 수 없습니다.
추상 방법은 추상적 인 방법을 표현하는 데 사용되며 추상 방법에는 방법이 없습니다. 초록 방법은 시스템이 가지고있는 기능을 설명하는 데 사용되지만 특정 구현을 제공하지는 않습니다.
Abstract는 Java에서 중요한 키워드이며 클래스 또는 메소드를 수정하는 데 사용될 수 있습니다.
메소드를 수정할 때 메소드에는 기능 시그니처 (서명) 만 있고 특정 구현이 없지만 클래스를 상속하는 하위 클래스에 특정 구현을 남겨 두므로 브레이스가있을 수 없습니다.
7. 다음 진술은 정확합니다 ()
A. 클래스의 생성자는 생략 할 수 없습니다
B. 생성자는 클래스와 동일한 이름을 가져야하지만 메소드는 클래스와 같은 이름을 가질 수 없습니다.
C. 객체가 새로운 경우 생성자가 실행됩니다.
D. 클래스는 하나의 생성자 만 정의 할 수 있습니다
답 : c
여기에는 오해가있을 수 있습니다. 실제로 일반 클래스 방법은 클래스 이름과 동일한 이름을 가질 수 있습니다. 이들과 생성자의 유일한 차이점은 생성자에게 리턴 값이 없다는 것입니다.
8. GC 스레드는 데몬 스레드 ()입니다.
답 : 예
스레드는 데몬 스레드와 비 데몬 스레드 (예 : 사용자 스레드)로 나뉩니다.
현재 JVM 인스턴스에 비 데몬 스레드가없는 한 데몬 스레드가 모두 작동합니다. 마지막이 아닌 스레드가 끝나면 데몬 스레드가 JVM과 함께 작동합니다.
데몬 스레드의 가장 일반적인 적용은 GC (Garbage Collector)입니다.
9. sleep () 및 Wait ()와 관련하여 다음 오류는 ()입니다.
A. 수면은 스레드 클래스 (스레드)의 메소드이며 대기는 객체 클래스의 방법입니다.
B. 수면은 물체 잠금을 해제하지 않으며 대기 대기 객체 잠금 장치를 버립니다.
C. 수면은 스레드를 일시 중지하지만 모니터링 상태는 유지되며 종료 후 자동으로 재개됩니다.
D. 대기 후 대기 잠금 풀에 들어갑니다. 이 객체에 대한 Notify 메소드를 발행 한 후에 만 객체 잠금이 얻어지고 실행중인 상태로 들어갑니다.
답 : d
Sleep은 스레드 클래스 (스레드)의 방법 으로이 스레드가 지정된 시간 동안 실행을 일시 중지하고 다른 스레드에 실행 기회를 제공하지만 모니터링 상태는 유지되며 그 후에 자동으로 재개됩니다. 수면을 호출하면 객체 잠금이 해제되지 않습니다.
대기는 객체 클래스의 방법입니다. 이 객체에서 대기 방법을 호출하면 스레드가 객체 잠금 장치를 포기하고 대기 잠금 풀 에이 객체를 대기 대기합니다. 이 객체에 대한 알림 메소드 (또는 Notifyall)를 발행 한 후에만이 스레드는 객체 잠금 풀에 들어가 객체 잠금을 얻을 준비를하고 실행중인 상태로 들어갑니다.
10. 메소드 이력서 ()는 그 스레드 ()의 실행을 복원 할 책임이 있습니다.
a, stop () 메소드를 호출하여 중지 된 스레드.
b, sleep () 메소드를 호출하여 중지 된 스레드.
C, Wait () 메소드를 호출하여 중지 된 스레드.
d, spelend () 메소드를 호출하여 중지 된 스레드.
답 : d
일시 중단은 스레드를 일시 중단 할 수 있습니다. 즉, 스레드가 중단되는 것을 의미합니다. 자원을 차지하지만 실행되지 않습니다. 이력서를 사용하여 매달린 스레드를 복원하고 스레드가 계속 실행되도록하십시오.