본문 바로가기
CS

[CS] CS 기술면접 (2)

by 주주병 2025. 3. 10.
728x90
반응형

쓰레드란?

쓰레드는 프로세스 내에서 실행되는 최소 실행 단위입니다. 하나의 프로세스는 여러 개의 쓰레드를 가질 수 있으며, 각 쓰레드는 프로세스의 메모리를 공유하면서 독립적으로 실행됩니다. 

 

  • 경량성: 프로세스보다 적은 자원으로 실행되며, 컨텍스트 스위칭 비용이 적음.
  • 메모리 공유: 동일한 프로세스 내의 쓰레드들은 코드, 데이터, 힙 메모리를 공유하지만, 각자의 스택 메모리는 별도로 할당됨.
  • 병렬 처리: 멀티 쓰레드를 활용하면 CPU를 효율적으로 사용할 수 있으며, 동시성 및 병렬성을 향상시킬 수 있음.

 

  • 멀티 쓰레드의 장점과 단점은?
    • 장점: CPU 활용 극대화, 응답 속도 향상, 작업 분리 가능
    • 단점: 동기화 문제 발생 가능(데드락), 문맥 전환 비용 발생
  • 쓰레드 동기화 문제 해결 방법은?
    • synchronized 키워드 사용
    • Lock 클래스 활용 (ReentrantLock)
    • volatile, Atomic 클래스 사용
  • 자바에서 쓰레드를 생성하는 방법은?
    • Thread 클래스 상속
    • Runnable 인터페이스 구현
    • ExecutorService 사용 (쓰레드 풀 관리)

DI란?

DI란 dependency injection의 약자로 의존성 주입을 의미합니다. 객체간의 의존관계를 설정해 두면 스프링 컨테이너가 의존관계를 자동으로 연결해 줍니다. 이에 따라 개발자는 직접 의존 관계의 객체를 생성하지 않고 검색하지 않아서 결합도를 낮추고 확장성을 높일 수 있습니다.

ORM이란?

ORM이란 관계형 데이터베이스를 OOP 언어로 변환해 주는 기술입니다.

따라서 비즈니스 코드가 관계형 테이블에 바로 접근하게 도와줍니다.

 

JPA(인터페이스)란?

ORM을 위해 자바에서 제공하는 API, 이것을 구현한 클래스가 Hibernate다.

 

ORM, JPA의 장단점 비교

구분 장점 단점
ORM - 객체 지향적인 코드 작성 가능 (유지보수성 증가)
- 데이터베이스 변경에 유연함(DB별로 sql 신경쓸 필요 X)
- SQL 대신 메서드 호출로 데이터 조작 가능
- SQL 최적화가 어렵고 성능 튜닝이 필요
- 복잡한 쿼리는 성능 저하 가능
JPA - SQL 없이 객체 중심 개발 가능
- 데이터베이스 독립성 유지 (DB 변경 시 코드 수정 최소화)
- 트랜잭션 관리 및 캐싱 기능 제공
- 내부 동작을 깊이 이해해야 함
- 학습 난이도가 높음
- 복잡한 쿼리는 Native Query 사용 필요
Hibernate - 가장 널리 사용되는 JPA 구현체 (안정적, 커뮤니티 활발)
- 1차 캐싱, Lazy Loading, Dirty Checking 등의 기능 제공
- 다양한 데이터베이스 지원
- JPA보다 더 복잡한 내부 구조
- N+1 문제 등 성능 최적화 필요
- SQL을 직접 작성하는 것보다 속도가 느릴 수 있음
728x90
반응형

'CS' 카테고리의 다른 글

[CS] DB Isolation Level  (0) 2025.03.27
[CS] JAVA의 JIT 컴파일러와 Warm Up  (1) 2025.03.12
[기술면접] CS 기술면접 질문  (2) 2024.10.06