# 면접 CS 정리 Day 6 (풀스택 / Java·Spring·React)

면접 CS 정리 Day 6 (풀스택 / Java·Spring·React)

Q1. == vs equals

문제
==이랑 equals 차이 한 줄씩. (문자열 비교 기준)

  • ==: 주소(참조) 비교
  • equals: 값(내용) 비교

문자열은 equals로 비교한다.

Q2. TCP vs UDP

문제
TCP랑 UDP 차이 한 줄씩, HTTP는 보통 둘 중 뭐 위인지?

  • TCP: 연결 지향, 신뢰성 있는 전송 (순서·재전송)
  • UDP: 연결 없음, 신뢰성보다 속도. 스트리밍 등에 사용
  • HTTP는 보통 TCP 위 (HTTP/1.1, HTTP/2)

보너스: HTTP/3는 QUIC(UDP 위). 모르면 “HTTP는 보통 TCP”만 말해도 OK.

Q3. synchronized

문제
synchronized가 뭐 하는 키워드인지 한 줄, 너무 많이 쓰면 생기는 문제 하나?


코드 블록/메서드를 한 번에 한 스레드만 실행하게 잠근다.

많이 쓰면 스레드 대기가 늘어 성능이 떨어지고, 잘못 잠그면 데드락이 날 수 있다.
(주된 문제는 메모리 낭비가 아님)

Q4. Session vs JWT

문제
세션(Session) 방식 인증이랑 JWT 차이? 장단 한 가지씩.

  • 세션: 서버가 로그인 상태를 보관
    • 장점: 로그아웃·강제 만료 제어가 쉬움
    • 단점: 서버/세션저장소 부하, 다중 서버면 세션 공유 필요
  • JWT: 클라이언트가 토큰을 보유, 서버는 검증 위주
    • 장점: 서버 확장에 유리
    • 단점: 토큰 폐기가 어렵고 탈취 시 위험
      → access는 짧게, refresh로 재발급

세션은 부하를 “줄이는” 방식이 아니라, 서버에 상태를 두므로 부하가 생길 수 있다.

Q5. ArrayList vs HashSet

문제
ArrayList vs HashSet 중복 / 순서 기준으로.

  • ArrayList: 중복 허용, 순서 보장, 인덱스로 접근
  • HashSet: 중복 불허, 순서 보장 안 함

Q6. React key

문제
React 리스트에서 keyindex 대신 id를 쓰는 이유?


삽입·삭제·순서 변경 시 index key는 React가 항목을 잘못 매칭할 수 있다.
그래서 고유한 id를 쓴다.

Q7. GC

문제
GC(Garbage Collection)가 뭔지 한 줄.
개발자가 객체를 직접 메모리에서 안 지워도 되는 이유는?


더 이상 참조되지 않는 객체를 GC가 자동으로 회수한다.
그래서 C처럼 free를 직접 호출하지 않아도 된다.

오늘 한 줄 암기

  1. == 주소 / equals
  2. HTTP는 보통 TCP
  3. synchronized = 한 스레드만, 과다 사용 시 성능↓·데드락
  4. 세션 = 서버 상태 / JWT = 클라이언트 토큰
  5. ArrayList 중복O·순서O / HashSet 중복X·순서X

다음 목표

  • Session vs JWT를 “부하·확장·폐기” 키워드로 말하기
  • synchronized 부작용을 메모리로 말하지 않기