자바 디자인 패턴 인터뷰 주제 및 답변

1. JDK에서 일반적으로 사용되는 몇 가지 디자인 패턴을 나열하십시오.

Singleton 패턴 (Singleton 패턴)은 Runtime, Calendar 및 기타 클래스에서 사용됩니다.
팩토리 패턴은 Boolean.valueOf와 같은 Boolean과 같은 다양한 불변 클래스에 사용됩니다.
관찰자 패턴은 Swing 및 많은 이벤트 모니터링에 사용됩니다.
데코레이터 디자인 패턴 (Decoratordesign 패턴)은 여러 Java IO 클래스에서 사용됩니다.

2. 디자인 패턴이란 무엇입니까? 코드에 디자인 패턴을 사용한 적이 있습니까?

디자인 패턴은 특정 디자인 문제를 해결하기 위해 전 세계의 다양한 프로그래머가 사용하는 시도 및 테스트 방법입니다. 디자인 패턴은 코드 가용성의 확장입니다.

3. Java의 싱글 톤 디자인 패턴은 무엇입니까? Java로 스레드로부터 안전한 싱글 톤 패턴을 작성하십시오.

싱글 톤 모드는 전체 시스템에서 생성 될 때 더 많은 리소스를 소비하는 일부 개체를 공유하는 데 중점을 둡니다. 전체 응용 프로그램에서 하나의 특정 클래스 인스턴스 만 유지되며 모든 구성 요소에서 사용됩니다. Java.lang.Runtime은 싱글 톤 패턴의 전형적인 예입니다. Java5부터 열거 형을 사용하여 스레드로부터 안전한 싱글 톤을 구현할 수 있습니다.

4. Java에서 옵저버 디자인 패턴 (옵저버 디자인 패턴)은 무엇입니까?

관찰자 모드는 객체의 상태 변화와 관찰자의 통신을 기반으로하여 해당 작업을 수행 할 수 있습니다. 간단한 예로 날씨 시스템을들 수 있는데, 날씨가 변하면 대중에게 표시되는 뷰에 반영되어야합니다. 이보기 개체는 주제이며 다른보기는 관찰자입니다.

5. 공장 모델 사용의 주요 이점은 무엇입니까? 어디에 사용됩니까?

팩토리 패턴의 가장 큰 장점은 개체를 만들 때 패키징 수준을 높이는 것입니다. 팩토리를 사용하여 객체를 만드는 경우 나중에 호출 수준에서 수정하지 않고 원래 제품 구현 또는 클래스를보다 고급 및 고성능 구현으로 대체 할 수 있습니다.

6. Java로 구현 된 데코레이터 디자인 패턴을 제공합니까? 개체 수준 또는 클래스 수준에서 작동합니까?

장식 모드는 단일 개체의 능력을 향상시킵니다. 데코레이션 패턴은 Java IO의 모든 곳에서 사용됩니다. 일반적인 예로는 BufferedReader 및 BufferedWriter와 같은 Buffered 클래스 시리즈가 있습니다.이 클래스는 버퍼 수준 읽기 및 쓰기 성능을 향상시키기 위해 Reader 및 Writer 개체를 향상시킵니다.

7. Java에서 정적 메서드에서 비 정적 변수에 액세스 할 수없는 이유는 무엇입니까?

비 정적 변수는 특정 객체 인스턴스와 연관되어 있지만 정적 변수는 인스턴스와 연관되지 않기 때문에 Java의 정적 컨텍스트에서 비 정적 데이터에 액세스 할 수 없습니다.

8. ATM을 디자인하려면 디자인 아이디어를 알려주세요.

예를 들어, 금융 시스템을 설계 할 때 어떤 상황에서도 정상적으로 작동 할 수 있어야한다는 것을 알아야합니다. 정전이나 기타 상황에 관계없이 ATM은 올바른 상태 (트랜잭션)를 유지하고 잠금, 트랜잭션, 오류 조건, 경계 조건 등을 고려해야합니다. 특정 디자인을 생각할 수는 없지만 비 기능적 요구 사항을 지적하고 몇 가지 질문을하고 경계 조건에 대해 생각할 수 있다면 좋을 것입니다.

9. Java에서는 언제 오버로딩을 사용하고 언제 다시 쓰기를 사용합니까?

클래스의 다른 구현에 동일한 작업을 수행하는 다른 방법이있는 경우 재정의를 사용해야하며 오버로딩은 다른 입력으로 동일한 작업을 수행하는 것입니다. Java에서 오버로드 된 메서드 서명은 다르지만 오버라이드는 다릅니다.

10. 인터페이스 대신 추상 클래스를 사용하기를 원할 때 예시를 제공합니까?

인터페이스와 추상 클래스는 모두 "구현 코딩이 아닌 인터페이스 지향"의 설계 원칙을 따르므로 코드의 유연성을 높이고 변화하는 요구에 적응할 수 있습니다. 이 질문에 답하는 데 도움이되는 몇 가지 사항이 있습니다.

Java에서는 하나의 클래스 만 상속 할 수 있지만 여러 인터페이스를 구현할 수 있습니다. 따라서 클래스를 상속하면 다른 클래스를 상속 할 기회를 잃게됩니다.
인터페이스는 일반적으로 Runnable, Clonable, Serializable 등과 같은 보조 설명 또는 동작을 나타내는 데 사용됩니다. 따라서 추상 클래스를 사용하여 동작을 나타낼 때 클래스는 동시에 Runnable과 Clonable이 될 수 없습니다 (참고 : Runnable 등을 추상 클래스로 구현) Java에서는 두 클래스를 상속 할 수 없지만 인터페이스를 사용할 때 클래스는 동시에 여러 가지 동작을 가질 수 있기 때문입니다.
시간 요구 사항이 높은 일부 응용 프로그램에서는 인터페이스보다 약간 빠른 추상 클래스가 사용되는 경향이 있습니다.
클래스 상속 계층 구조에서 일련의 동작을 표준화하고 같은 위치에서 더 나은 코드를 작성할 수 있다면 추상 클래스가 더 나은 선택입니다. 때로는 인터페이스와 추상 클래스를 함께 사용할 수 있으며, 함수는 인터페이스에서 정의하고 기본 구현은 추상 클래스에서 정의합니다.

확장 된 연결 : 대담한 스타일을 보려면 여기를 클릭하십시오 .

블로거의 공개 계정 프로그래머 Xiaoyang 은 인터뷰 관련 트윗 만 게시합니다.
여기에 사진 설명 삽입

추천

출처blog.csdn.net/weixin_44395707/article/details/106406593