>  기사  >  Java  >  Java 면접 질문에서 가장 흔히 저지르는 8가지 실수

Java 면접 질문에서 가장 흔히 저지르는 8가지 실수

(*-*)浩
(*-*)浩원래의
2019-11-11 14:21:362004검색

Java 면접 질문에서 가장 흔히 저지르는 8가지 실수

1. static과 final의 사용법

static의 역할은 정적 변수, 정적 메서드, 정적 클래스라는 세 가지 측면에서 논의할 수 있습니다.

정적 변수: 정적으로 선언된 정적 변수는 본질적으로 전역 변수입니다. 객체가 선언되면 정적 변수의 복사본이 생성되지 않지만 클래스의 모든 인스턴스 변수는 동일한 정적 변수를 공유합니다. 즉, 이 정적 변수는 한 번만 로드되고 저장 공간 중 일부만 할당됩니다.

정적 메서드: static으로 선언된 정적 메서드는 다음과 같은 특징을 갖습니다.

(1) 정적 메서드는 정적 메서드만 호출할 수 있습니다.

(2) 정적 메서드는 정적 데이터에만 액세스할 수 있습니다. 어떤 방식으로도 this 또는 super를 참조할 수 없습니다.

정적 클래스:

일반적으로 일반 클래스는 정적으로 선언할 수 없으며 내부 클래스만 가능합니다(기본 메서드는 일반적인 예입니다). 그러면 선언된 정적 클래스는 사용할 수 있습니다. 외부 클래스를 인스턴스화하지 않고 일반 클래스로 직접 사용합니다. final의 역할은 변수, 메서드 및 클래스의 세 가지 측면에서 이해될 수 있습니다.

final로 수정된 변수의 값은 수정될 수 없으며

final로 수정된 메서드는 재정의될 수 없습니다.

final에 의해 수정된 클래스

2. 클래스가 여러 클래스를 상속할 수 있습니까? 클래스가 여러 인터페이스를 상속할 수 있습니까?

추상 클래스나 인터페이스 모두 직접 인스턴스화할 수 없습니다. 인스턴스화하려면 추상 클래스 변수는 모든 추상 메서드를 구현하는 하위 클래스 개체를 가리켜야 하며, 인터페이스 변수는 모든 인터페이스 메서드를 구현하는 클래스 개체를 가리켜야 합니다.

추상 클래스는 하위 클래스로 상속되어야 하며, 인터페이스는 클래스로 구현되어야 합니다.

인터페이스는 메서드 선언만 할 수 있지만 추상 클래스는 메서드 선언과 메서드 구현을 만들 수 있습니다.

인터페이스에 정의된 변수는 공개 정적 상수만 가능하며 추상 클래스의 변수는 일반 변수입니다.

추상 클래스의 모든 추상 메서드는 하위 클래스에서 구현되어야 합니다. 하위 클래스가 상위 클래스의 모든 추상 메서드를 구현할 수 없는 경우 하위 클래스는 추상 클래스만 될 수 있습니다. 마찬가지로, 클래스가 인터페이스를 구현할 때 모든 인터페이스 메서드를 구현할 수 없다면 클래스는 추상 클래스만 될 수 있습니다.

추상 메소드는 선언만 가능하고 구현은 불가능합니다. abstract void abc()는 abstract void abc(){}로 작성할 수 없습니다.

추상 클래스에는 추상 메소드가 있을 수 없습니다.

클래스에 추상 메서드가 있는 경우 이 클래스는 추상 클래스만 될 수 있습니다.

추상 메소드는 구현되어야 하므로 정적이거나 비공개일 수 없습니다.

인터페이스는 인터페이스를 상속할 수 있고 여러 인터페이스를 상속할 수 있지만 클래스는 단일 루트에서만 상속할 수 있습니다.

3. this 및 super

this:

(1) 생성자를 제외한 모든 속성 및 메서드에 액세스할 수 있으며 this를 통해 메서드 및 속성을 호출할 수 있습니다.

(2) 아니요 사용할 수 있습니다. 정적 메서드에서

(3) 생성자 메서드에서 이(매개변수 목록)를 사용하여 이 클래스의 다른 생성자 메서드를 호출합니다. 이 메서드는 생성자 메서드의 첫 번째 문장에 배치되어야 합니다.

super:

부모 클래스의 메서드 및 속성에 액세스(1) 부모 클래스의 메서드 및 속성에 액세스

(2) 다음에서 super(매개변수 목록)를 통해 부모 클래스의 생성자를 호출합니다. 생성자는 이를 서브클래스 생성자의 첫 번째 줄로 배치해야 합니다.

4. final, finally, finalize의 차이점은 무엇인가요?

final: 수정자(키워드)에는 세 가지 용도가 있습니다. 클래스가 final로 선언되면 더 이상 새 하위 클래스를 파생할 수 없다는 의미입니다. 즉, 상속될 수 없습니다. 변수를 final로 선언하면 사용 중에 변경되지 않습니다. final로 선언된 변수는 초기화 후에 읽기만 가능하고 참조에서 수정할 수 없습니다. final로 선언된 메서드는 하위 클래스에서만 사용할 수 있으며 재정의할 수 없습니다.

finally: 일반적으로 try...catch 뒤에 위치하며 코드 블록은 항상 실행됩니다. 즉, 프로그램이 정상적으로 실행되거나 예외가 발생하더라도 JVM이 닫히지 않는 한 여기의 코드가 실행될 수 있습니다. . 외부 리소스를 해제하는 코드는 finally 블록에 작성할 수 있습니다.

finalize: Object 클래스에 정의된 메서드입니다. Java에서는 가비지 수집기가 메모리에서 개체를 지우기 전에 finalize() 메서드를 사용하여 필요한 정리 작업을 수행할 수 있습니다. 이 메서드는 개체를 삭제할 때 가비지 수집기에 의해 호출됩니다. finalize() 메서드를 재정의하면 시스템 리소스를 구성하거나 기타 정리 작업을 수행할 수 있습니다.

5. 오류와 예외의 차이점은 무엇인가요?

오류는 프로그램이 처리할 필요가 없는 시스템 수준 오류 및 예외를 나타냅니다. 오버플로, 불가능 프로그램이 이러한 상황을 처리할 수 있다고 기대할 수 있습니다.

Exception은 프로그램에서 포착해야 하거나 처리해야 하는 예외를 나타냅니다. 이는 설계 또는 구현 문제입니다. 프로그램이 정상적으로 실행되면 절대 발생하지 않습니다.

6. 서블릿의 생명주기와 서블릿과 CGI의 차이점을 말해 보세요.

서블릿이 서버에 의해 인스턴스화되면 컨테이너는 init 메소드를 실행하고 요청이 도착하면 서비스 메소드를 자동으로 요청에 해당하는 doXXX 메소드(doGet, doPost)를 디스패치합니다. 서버가 destroy() 메소드를 파괴하기로 결정하면 이를 호출합니다.

CGI와의 차이점은 서블릿이 서버 프로세스에 있으며 멀티 스레딩을 통해 서비스 방법을 실행한다는 것입니다. 하나의 인스턴스는 여러 요청을 처리할 수 있으며 해당 인스턴스는 일반적으로 파괴되지 않지만 CGI는 각 요청에 대해 새 인스턴스를 생성합니다. 프로세스와 서비스는 완료 후 소멸되므로 서블릿에 비해 효율성이 떨어집니다.

7. 캐시 사태를 방지하는 방법은 무엇인가요?

원인:

캐시 눈사태는 데이터가 캐시에 로드되지 않거나 넓은 영역에서 캐시가 동시에 실패하여 모든 요청이 데이터베이스를 확인하게 하여 데이터베이스 CPU 및 메모리에 문제가 발생하기 때문에 발생할 수 있습니다. 부하가 너무 높거나 심지어 가동 중지 시간이 발생하는 경우도 있습니다.

해당 해결 방법:

잠금 횟수를 사용하거나 합리적인 수의 대기열을 사용하여 캐시 실패 시 데이터베이스에 너무 많은 부담을 주지 않도록 하세요. 이 방법을 사용하면 데이터베이스에 대한 부담을 줄일 수 있지만 시스템 처리량도 감소합니다.

사용자 행동을 분석하고 실패 시점을 균등하게 분배하도록 노력하세요. 캐시 눈사태를 피하세요.

특정 캐시 서버가 다운된 경우 redis 기본 및 백업과 같은 기본 및 백업을 고려할 수 있습니다. 그러나 이중 캐싱에는 업데이트 트랜잭션이 포함되며 업데이트는 해결해야 할 더티 데이터를 읽을 수 있습니다.

8. MVC에 대한 이해를 말해 보세요

MVC는 Model-View-Controler의 약어입니다. 그것은 모델-뷰-컨트롤러입니다. MVC는 애플리케이션의 입력, 처리, 출력을 분리하도록 하는 디자인 패턴입니다.

MVC의 모델, 뷰 및 컨트롤러는 다양한 작업을 담당합니다.

보기: 보기는 사용자가 보고 상호 작용하는 인터페이스입니다. 보기는 사용자에게 관련 데이터를 표시하고 사용자의 입력을 받아들입니다. 뷰는 비즈니스 논리 처리를 수행하지 않습니다.

모델: 모델은 JavaBean과 동등한 비즈니스 데이터 및 비즈니스 처리를 나타냅니다. 모델은 여러 보기에 데이터를 제공할 수 있습니다. 이를 통해 애플리케이션 재사용성이 향상됩니다.

컨트롤러: 사용자가 웹 페이지에서 제출 버튼을 클릭하면 컨트롤러가 요청을 수락하고 해당 모델을 호출하여 요청을 처리한 다음 해당 뷰를 호출하여 처리 결과에 따라 처리 결과를 표시합니다.

MVC 처리 프로세스: 먼저 컨트롤러가 사용자의 요청을 수락하고 비즈니스 처리를 위해 해당 모델을 호출한 후 컨트롤러에 데이터를 반환합니다. 컨트롤러는 해당 뷰를 호출하여 처리 결과를 표시합니다. 뷰를 통해 사용자에게 표시됩니다.

위 내용은 Java 면접 질문에서 가장 흔히 저지르는 8가지 실수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.