[ 백엔드 면접준비 : Java&Kotlin + SpringBoot ] Java 면접 질문 정리_02
Ⅰ. "추상클래스" 와 "인터페이스" 의 차이점은 무엇인가??
▼ 추상 클래스
: 일부 메소드들이 정의 부분만 제공하여서, 클래스들이 공통의 구조나 메소드를 공유하지만
구현이 다를 때 사용하고, 다중 상속을 제공하지 않습니다.
▼ 인터페이스.
: 메소드 구현을 제공할 수 없습니다.
: 구현 클래스가 제공해야 하는 메소드들이 정의 되어 있음
: 다중 상속을 제공합니다.
"추상 클래스" 와 "인터페이스"는 객체 지향 프로그래밍에서 "추상화"를 구현하는 방법이지만,
그 목적과 특성에 중요한 차이가 있습니다.
◇ 존재 목적.
● 추상 클래스 : "IS-A" 관계로, 상속을 통해 기능을 확장하고 공통된 기능을 제공합니다.
● 인터페이스 : "CAN-DO" 관계로, 구현 객체의 동일한 동작을 보장하고 계약을 정의합니다.
◇ 구조적 차이.
◇ 사용 시점.
◎ 추상 클래스 사용 :
● 연관된 클래스들의 공통 기능을 구현할 때.
● 상속 계층 구조에서 기본 구현을 제공할 때.
● 일부 메서드의 구현을 강제하고 싶을 때
◎ 인터페이스 사용 :
● 서로 관련 없는 클래스들에 공통 동작을 정의할 때
● 다중 구현이 필요할 때
● 특정 동작을 보장하고 싶을 때
★ 다중 상속의 한계 해결.
:: 자바는 클래스의 다중 상속을 지원하지 않지만,
인터페이스를 통해 다중 구현을 가능하게 함으로써 이 한계를 극복합니다.
// 추상 클래스
abstract class Animal {
// 공통 구현 메서드
public void eat() {
System.out.println("동물이 먹습니다");
}
// 추상 메서드
public abstract void makeSound();
}
// 인터페이스
interface Flyable {
void fly();
}
★ 핵심 포인트.
● 추상 클래스는 '상속을 통한 확장'에 초점.
● 인터페이스는 '동작의 계약과 다형성'에 초점.
Ⅱ. JAVA의 싱글톤 패턴의 개념은??
★ '싱글톤 패턴'은 "특정 클래스의 인스턴스를 오직 하나만 생성하여 사용하는 디자인 패턴" 입니다.
{ 클래스의 인스턴스화를 하나의 '단일' 인스턴스로 제한 }
=>> 시스템 전체에서 정확히 하나의 객체가 필요한 경우 유용합니다.
◆ 주요 특징.
● 클래스의 인스턴스를 단 한 번만 생성합니다.
● 생성된 인스턴스를 전역에서 공유합니다.
● 메모리와 자원을 효율적으로 관리합니다.
◆ 구현 핵심 요소.
1. private 생성자 : 외부에서 직접 객체 생성 차단
2. static private 변수 : 단일 인스턴스 저장
3. public static getInstance() 메서드 : 인스턴스에 접근하는 유일한 방법.
◆ 사용 목적.
● 메모리 절약
● 자원 공유
● 전역 상태 관리.
● 성능 최적화.
public class Singleton {
// static private 변수로 단일 인스턴스 생성
private static Singleton instance;
// private 생성자로 외부 인스턴스 생성 방지
private Singleton() {}
// public static 메서드로 인스턴스 접근
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
◆ 주의 사항.
● 멀티스레드 환경에서 동시성 문제 고려.
● 과도한 전역 상태는 애플리케이션 복잡성 증가 가능
● 테스트와 모듈화에 제약 존재.
Ⅲ. JAVA Collection의 종류는??
★ Java Collection은 객체 그룹을 저장하고 조작하기 위한 다양한 인터페이스와 클래스를 제공합니다.
1. List ( 순서 있는 컬렉션 )
● ArrayList : 동적 배열 기반, 가장 일반적으로 사용
● LinkedList : 동적 배열 기반, 가장 일반적으로 사용
● Vector: 동기화된 동적 배열 (레거시 클래스)
● Stack: 후입선출(LIFO) 구조
2. Set ( 중복 없는 컬렉션 )
● HashSet: 해시 테이블 기반, 가장 빠른 성능
● LinkedHashSet: 삽입 순서 유지
● TreSet: 정렬된 순서로 요소 저장.
3. Queue ( 선입선출 컬렉션 )
● PriorityQueue: 우선순위 기반 큐
● ArrayDeque: 양방향 큐 구현
4. Map
● HaspMap: 키-값 쌍, 해시 테이블 기반
● LinkedHashMap: 삽입 순서 유지
● TreeMap: 키 기준 정렬
5. 특수 컬렉션.
● EnumSet : 열거형 전용 Set
● ConcurrentHashMap : 멀티스레드 환경에 최적화.
'면접준비[프론트,백,데이터,CS] > InterView 준비 [ 백엔드 ]' 카테고리의 다른 글
[ 백엔드 면접준비 : Java&Kotlin + SpringBoot ] Java 면접 질문 정리_03 (0) | 2024.12.22 |
---|---|
[ 백엔드 면접준비 : Python ] Python 면접 질문 정리_01 (0) | 2024.12.21 |
[ 백엔드 면접준비 : Java&Kotlin + SpringBoot ] Java 면접 질문 정리_01 (0) | 2024.12.20 |
[ 백엔드 면접 준비 ] 백엔드 면접 준비 _ 02. (0) | 2024.12.16 |
[ 백엔드 면접 준비 ] 백엔드 면접 준비 _ 01. (2) | 2024.12.13 |