본문 바로가기
IT

[백엔드 면접] GPT4o 기반 CS 기술 면접 (2)

by 유나니나노 2024. 7. 17.
반응형

 

해시테이블(HashTable) vs 해시맵(HashMap)

동기화

  • HashTable
    • 스레드 안전하며, 모든 메서드가 동기화 되어있음
    • 멀티프로세스 환경에서 안전하게 사용이 가능
  • HashMap
    • 스레드 안전하지 않으며, 멀티프로세스 환경에서 별도의 동기화 작업이 필요

Null

  • HashTable: null을 허용하지 않음
  • HashMap: key와 value에 null 허용

성능

  • HashTable은 모든 메서드가 동기화 되어 있어 상대적으로 HashMap의 속도가 빠름

상속

  • HashTable: Dictionary
  • HashMap: AbstractMap

초기화

  • HashTable: 11개의 버킷으로 초기화, 버킷 수가 2배 증가
  • HashMap: 16개의 버킷으로 초기화, 버킷 수가 2배 증가

 

자바의 메모리 영역

메서드 영역

  • 클래스 수준의 정보가 저장되는 영역
  • 클래스 메타데이터, 상수 풀, 메서드 코드 등이 포함
  • JVM의 모든 스레드에서 공유

힙 영역

  • 동적으로 할당되는 객체와 배열이 저장되는 영역
  • 객체의 인스턴스 변수, 배열의 요소 등이 포함
  • 가비지 컬렉션의 대상이 되는 영역
  • JVM의 모든 스레드에서 공유

스택 영역

  • 메서드 호출 시 생성되는 지역변수, 매개변수가 저장되는 영역
  • 메서드 호출 시 스택 프레임 생성, 종료 시 제거
  • 각 스레드마다 자신의 스택 영역을 가짐

레지스터

  • CPU 내부에 존재하는 고속 메모리 영역
  • 자주 사용되는 데이터와 주소를 임시로 저장하여 빠른 처리가 가능
  • 자바 프로그램에서 접근할 수 없는 영역

PC 레지스터

  • 현재 실행중인 JVM 명령의 주소를 저장하는 영역
  • 각 스레드마다 자신의 PC 레지스터를 가짐

 

데이터베이스 인덱스 역할 및 장단점

역할

  • 데이터베이스 특정 열에 대한 빠른 검색을 가능하게 해 줌
  • 인덱스는 해당 열과 해당 값이 저장된 행의 위치 정보를 가지고 있음
  • 테이블 전체를 스캔하는 대신 인덱스를 참조하여 원하는 데이터를 빠르게 찾을 수 있음

장점

  • 검색 속도 향상
  • 쿼리 최적화: 쿼리 최적화 과정에서 인덱스를 사용해서 쿼리 플랜을 세울 수 있음
  • 정렬 기능: 정렬된 데이터를 빠르게 사용

단점

  • insert/update/delete 성능 저하: 인덱스가 있는 경우 데이터의 변경이 이루어지면 인덱스도 함께 업데이트가 되어야 함
  • 추가 저장 공간 필요: 별도의 저장 공간이 필요하므로 디스크 공간 사용량 증가
  • 과도한 인덱스 사용 주의: 오히려 성능이 저하될 수 있음

 

Synchronized vs Volatile

Synchronized

  • 한 번에 하나의 스레드만 임계 구역에 접근할 수 있도록 보장
  • 동기화된 메서드나 블록에 대해 스레드가 락을 얻어야 접근 가능
  • 데이터의 일관성과 상호 배제를 보장

Volatile

  • 변수의 값이 캐시에 저장되지 않고 항상 메인 메모리에서 읽고 쓰도록 함
  • 여러 스레드가 이 변수를 읽고 쓸 때 항상 최신 값을 보장
  • 원자성을 보장하지 않음

 

HTTP vs HTTPS

보안

  • HTTP: 데이터가 암호화되지 않은 일반 텍스트 전송으로 도청이나 변조가 가능
  • HTTPS: SSL/TSL 암호화 프로토콜을 사용하여 데이터 암호화를 통해 보안 강화

포트

  • HTTP: 80, HTTPS: 443

SSL/TSL 인증서

  • HTTPS는 웹 서버에 SSL/TLS 인증서가 설치되어 있어야 함

성능

  • HTTPS는 암호화 과정으로 인해 상대적으로 저하

용도

  • HTTP: 일반적인 웹 페이지 전송
  • HTTPS: 금융 거래, 로그인, 개인정보 전송 등 보안이 중요한 경우

 

RESTful vs SOAP

RESTful

  • HTTP 프로토콜을 사용하여 CRUD 작업을 수행
  • JSON이나 XML을 데이터 형식으로 사용
  • 경량화된 구조로 성능이 좋고, 웹 서비스와의 통합이 용이
  • 상태 비저장 상태를 따르며, 클라이언트-서버 구조를 유지

SOAP

  • XML 기반의 메시지 프로토콜을 사용
  • 데이터의 신뢰성과 보안을 위해 WS-Security 표준을 따름
  • REST보다 무겁고, 설정과 사용이 복잡할 수 있음
  • 상태 정보를 유지할 수 있으며, 트랜잭션과 같은 복잡한 작업을 지원

 

반응형