면접준비[프론트,백,데이터,CS]/InterView 준비 [ 백엔드 ]

[ 백엔드 면접준비 : Java&Kotlin + SpringBoot ] Java 면접 질문 정리_02

안다미로 : Web3 & D.S 2024. 12. 20. 18:21

 

 

 

 

[ 백엔드 면접준비 : 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 : 멀티스레드 환경에 최적화.