개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. 디자인 패턴이란 무엇이며, 자바에서 사용하는 이유는 무엇인가요?
  • Q. 싱글톤 패턴(Singleton Pattern)이란 무엇이며, 이를 사용하는 이유는 무엇인가요?
  • Q.자바에서 싱글톤 패턴을 구현하는 방법에는 어떤 것들이 있나요?
  • Q. 싱글톤 패턴 사용시 발생할 수 있는 문제점은 무엇이며, 이를 어떻게 해결할 수 있을까요?
  • Q. 싱글톤 패턴이 적용된 예시로 자바의 Runtime 클래스에 대해서 설명해주세요.
  1. 디자인 패턴

싱글톤 패턴 (Singleton Pattern)

Q. 디자인 패턴이란 무엇이며, 자바에서 사용하는 이유는 무엇인가요?

디자인 패턴은 소프트웨어 개발에서 자주 발생하는 문제들을 해결하기 위해 정형화된 재사용 가능한 솔루션입니다. 자바에서 디자인 패턴을 사용하는 이유는 코드의 재사용성을 높이고, 유지보수성을 향상시키며, 시스템의 유연성을 증가시키기 위함입니다. 또한, 디자인 패턴을 사용하면 개발자 간의 의사소통이 쉬워지고, 코드 구조가 더 명확해집니다.


Q. 싱글톤 패턴(Singleton Pattern)이란 무엇이며, 이를 사용하는 이유는 무엇인가요?

싱글톤 패턴(Singleton Pattern)은 특정 클래스의 인스턴스를 하나만 생성하고, 그 인스턴스에 전역적으로 접근할 수 있도록 보장하는 디자인 패턴입니다. 이 패턴을 사용하는 이유는, 애플리케이션 내에서 전역적으로 동일한 인스턴스를 사용해야 하는 경우 예를 들어 로깅, 설정 관리, 스레드 풀, 데이터베이스 연결과 같은 경우에 유용합니다. 이를 통해 리소스를 절약하고, 애플리케이션의 일관성을 유지할 수 있습니다.


Q.자바에서 싱글톤 패턴을 구현하는 방법에는 어떤 것들이 있나요?

  • Eager Initialization : 클래스가 로드될 때 인스턴스를 생성합니다.

  • Lazy Initialization : 필요할 때 인스턴스를 생성합니다.

  • Thread-safe Singleton : 동기화 메서드를 사용하여 스레드의 안정성을 보장합니다.

  • Double-Checked Locking : 성능을 고려하여, 인스턴스가 null인지 두 번 검사하여 동기화 문제를 해결합니다.


Q. 싱글톤 패턴 사용시 발생할 수 있는 문제점은 무엇이며, 이를 어떻게 해결할 수 있을까요?

싱글톤 패턴 사용 시 발생할 수 있는 문제점으로는 멀티스레드 환경에서의 안전성이 있습니다. 예를 들어, Lazy Initialization 방식에서 동기화를 사용하지 않으면, 여러 스레드가 동시에 인스턴스를 생성할 수 있습니다. 이를 해결하기 위해 동기화 블록을 사용하거나, volatile 키워드를 활용해 인스턴스 변수에 이중 검사를 적용하는 Double-Checked Locking 방법을 사용할 수 있습니다. 또 다른 문제로는 테스트와 의존성 주입의 어려움이 있습니다. 싱글톤은 전역 상태를 가지기 때문에, 테스트 시 전역 상태가 공유되어 테스트의 독립성이 침해될 수 있습니다. 이 문제는 의존성 주입(DI) 프레임워크를 활용하거나, 싱글톤 인스턴스를 Mocking하여 해결할 수 있습니다.


Q. 싱글톤 패턴이 적용된 예시로 자바의 Runtime 클래스에 대해서 설명해주세요.

자바의 Runtime 클래스는 싱글톤 패턴이 적용된 대표적인 예시입니다. Runtime 클래스는 프로그램이 실행되는 환경과 상호작용하는 데 사용되며, 인스턴스를 직접 생성할 수 없고, 오직 getRuntime() 메서드를 통해서만 접근할 수 있습니다. 이를 통해 시스템에 대한 정보나 메모리 관리, 프로세스 생성 등을 수행할 수 있습니다. Runtime 클래스는 애플리케이션이 시스템 리소스를 관리하는 단일 진입점을 제공하며, 이는 시스템 자원의 일관성과 효율적인 관리가 필요한 상황에서 매우 유용합니다.

Previous전략 패턴 (Strategy Pattern)Next템플릿 메서드 패턴과 전략 패턴

Last updated 8 months ago