상반기는 안 했지만, 하반기부터는 공유 겸 기술면접만 복기한 거 올려볼게요
더 있는데 기억나면 업데이트 예정 ...

  • DDL, DML
    • DDL은 데이터 정의어로, 테이블이나 스키마의 구조를 정의하고 변경하는 데 사용합니다.
    • DML은 데이터 조작어로 테이블 내 데이터를 삽입하거나 수정, 삭제할 때 사용합니다.
    • DDL은 CREATE, DROP, ALTER 등이 있고, DML은 SELECT, INSERT, UPDATE, DELETE가 있습니다.
    • DML은 트랜잭션 처리와 롤백이 가능하지만, DDL은 대부분 롤백이 불가능합니다.
  • TRUNCATE, DELETE, DROP
    • DELETE는 특정 조건에 따라 데이터를 삭제하고, 트랜잭션 롤백이 가능한 DML입니다.
    • TRUNCATE는 테이블 내 모든 데이터를 빠르게 삭제하는 DDL이며 롤백이 불가능합니다.
    • DROP은 테이블 자체를 제거하는 명령으로, 데이터와 구조 모두 삭제됩니다.
    • DELETE는 where조건이 가능하고, TRUNCATE와 DROP은 전체 삭제만 가능합니다.
  • WHERE 구문 성능 관련 질문
    • SELECT, INSERT, DELETE는 용도 자체가 다르기 때문에 직접적인 속도 비교는 어렵습니다.
    • 하지만 일반적으로 SELECT는 인덱스가 걸려 있으면 가장 빠르고, DELETE는 삭제 대상의 제약조건 확인과 트랜잭션 로그 때문에 상대적으로 느립니다.
    • INSERT는 단순 추가일 경우 빠르지만, 제약조건이나 트리거가 많을수록 비용이 커집니다.
    • 결국 WHERE 구문이 걸렸을 때 성능은 조건문, 인덱스 유무, 데이터량, 트랜잭션 여부에 따라 달라집니다.
    • (인덱스가 잘 설정돼 있으면 SELECT가 가장 빠르고, DELETE는 트랜잭션 로그 처리나 제약조건 때문에 가장 느린 연산이 될 수 있습니다.)
  • Checked vs Unchecked Exception
    • Checked Exception은 컴파일 시점에 반드시 예외 처리를 강제하는 예외로, SQLException처럼 외부 환경과 관련된 예외가 많습니다.
    • Unchecked Exception은 RuntimeException을 상속받아, 개발자의 실수나 로직 오류로 발생하며 ,컴파일 시점에 강제되지 않습니다.
    • NullPointerException, IllegalArgumentException 등이 대표적입니다.
    • 업무 로직에서 발생하는 커스텀 비즈니스 예외는 일반적으로 Unchecked로 처리합니다.
    • (Spring의 전역 예외 처리도 RuntimeException 기반으로 설계됨)
  • 아키텍처 패턴 아는대로 말해라 (MVC패턴 언급)
    • MVC 패턴은 Model, View, Controller로 구분하여 UI와 비즈니스 로직을 분리하는 구조입니다.
    • Controller가 요청을 받고, Model로 데이터를 처리한 뒤 View로 응답을 전달합니다.
    • 스프링 MVC 구조의 기반이기도 합니다. (dispatcherServlet, FrontController언급가능)
    • 헥사고날 아키텍처는 의존성 방향을 도메인 내부 중심으로 정리해서 유지보수성과 테스트 용이성을 높이기 위한 구조입니다.
    • 외부 기술이나 시스템 변화에 유연하게 대응할 수 있는 것이 특징입니다.
  • 디자인패턴 아는대로 말해라
    • 싱글톤, 빌더, 프록시 패턴에 대해 말씀드리겠습니다.
    • 싱글톤 패턴은 인스턴스를 하나만 생성해서 공유할 때 사용하고, 스프링 빈 등록이 대표적인 예시입니다.
    • 빌더 패턴은 DTO나 Entity를 만들 때 필드가 많거나 선택적 필드가 있을 때 유용합니다.
    • 프록시 패턴은 실제 객체에 대한 접근을 제어하는 용도로 사용됩니다.
      • (JPA에서도 프록시 패턴이 사용됨. 특히 Lazy Loading 설정 시, 실제 객체 대신 프록시 객체를 먼저 리턴하고 필드에 접근할 때 실제 데이터를 조회함.)
  • JWT vs Session
    • JWT와 세션은 모두 인증 수단
    • 두 방식 모두 인증 정보를 저장하지만, 세션은 서버 메모리에 상태 정보를 저장하고 JWT는 토큰 자체에 정보를 담아 클라이언트가 보관합니다.
    • stateful, stateless
    • 서버 부하가 크고 작음
    • 세션은 서버 메모리에 상태 정보를 저장
    • 토큰은 클라이언트에 저장되기 때문에 만료되기 전까지는 중간에서 강제 폐기할 수 없다는 단점도 있음. (이때, Refresh Token Rotate 적용언급)
    • (서버 부하, 상태 중점적으로 이야기함)
    • 공통점 이야기 → 인증
  • INNER JOIN vs OUTER JOIN
    • INNER JOIN은 양쪽 테이블에 모두 매칭되는 데이터만 가져옵니다. 반면 OUTER JOIN은 한쪽에 데이터가 없어도 결과에 포함시키는 방식입니다.
  • 정규화란 무엇이라고 생각하는지?
    • 정규화는 테이블 구조를 분해해 데이터 중복을 최소화하고 삽입, 삭제, 갱신 시 발생할 수 있는 이상 현상을 방지하기 위해 사용합니다.
    • (성능을 고려해 비정규화를 하기도 합니다. - 조회 성능이 중요한 테이블은 조인을 줄이기 위해 일부 중복 허용 가능)
  • interceptor, filter 특징
    • 공통적으로 핵심 로직 이외 부가 로직 적용할 때 사용.
    • interceptor은 컨트롤러 전후 실행 (Spring MVC)
    • filter은 서블릿 전후 실행 (자바 EE)
    • (Filter → 인증, 인코딩, 로깅, 보안, CORS 등 전역 공통 처리, Interceptor → 로그인 인증, 권한 확인, 트랜잭션 시작·종료, 로깅 등 비즈니스 진입 전후 처리)
  • HTTP STATUS CODE 아는대로 설명
    • 서버가 요청에 대해 어떤 응답을 했는지 의미합니다.
    • 각 번호대별로 특징 설명
    • 2xx : 요청 성공 (200: 정상 응답, 201 Created : 자원 생성됨)
    • 3xx : 리다이렉션 (다른 위치로 이동)
    • 4xx : 클라이언트 오류 (400: Bad Request, 401: 인증 안됨, 403: 권한 없음, 404: Not Found)
    • 5xx : 서버 오류 (500: Internal Server Error, 502: Bad Gateway, 503: Service Unavailable)
  • stack, queue 설명
    • 대표적인 선형자료구조
    • stack → LIFO (가장 나중에 들어온 데이터가 먼저 나감)
    • queue → FIFO (먼저 들어온 데이터가 먼저 처리됨)
  • 언제많이씀?
    • 알고리즘풀때 주로 사용
    • queue → bfs (프로세스 스케줄링, 캐시 구조 - FIFO 방식)
    • stack → dfs (재귀 구조 처리, 괄호 유효성 검사 등)
  • MSA랑 모놀리식 차이 뭐냐
    • 모놀리식 아키텍처는 모든 기능이 하나의 애플리케이션으로 통합된 구조
    • MSA는 각 기능을 작은 단위의 독립된 서비스로 분리해서 운영하는 구조
    • 모놀리식은 배포와 관리가 간단한 대신, 일부 기능 변경이 전체 시스템에 영향을 줄 수 있습니다.
    • MSA는 서비스 간 독립성이 높아 유지보수, 확장성, 장애 격리 측면에서 유리하지만, 그만큼 복잡한 인프라 구성과 통신 관리, 데이터 정합성 고려가 필요합니다.
  • DDD?
    • 도메인별로 서비스를 나누고 역할을 명확히 하여 유지보수성과 확장성을 높이는 데 목적
    • 도메인을 중심으로 객체와 로직을 구조화
  • webclient, feign, resttemplate차이
    • 논블로킹/비동기, 블로킹/동기 (webclient, resttemplate)
    • WebFlux기반, Spring MVC 기반
    • Feign: 선언적 HTTP 클라이언트, 인터페이스로 요청 정의
  • 왜 webclient사용?
    • 외부서비스와 통신과정에서 다수 요청이 동시에 들어올 경우 대비 동기 방식인 RestTemplate보다 비동기 기반의 WebClient 선택
    • WebClient는 논블로킹 방식이라 스레드 리소스를 효율적으로 활용하면서도 트래픽이 몰려도 병렬 처리에 유리하다는 장점
    • 시스템 리소스를 효율적으로 사용하면서도 더 많은 요청을 처리할 수 있기 때문에 선택함.
    • (WebClient.Builder 주입받아 사용한 DI 리팩토링 사례 언급 못해서 아쉬움)
  • 그리고 tcp/ip 경험있냐
    • 학부시절 네트워크 프로그래밍 수업
    • 1:1 빙고게임
    • 파이썬으로 구현
  • c언어 사용 경험
    • 툴 뭐썼나요?
    • C# 경험 유무
  • 그외 질문 다수

후기

준비기간이 3일밖에 주어지지 않아 더 많이 준비하지 못했기에 아쉬웠던 것들도 존재.
그렇지만 이번 면접은 배울 게 많았고 괜찮다고 생각한 것들, 보완해야될 것들도 눈에 확실히 보여서 좋은 경험
말 잘한다고 면접 여러번 본 경험 있냐고 해주셨는데, 계속 연습해야지 .. 당장 하루 뒤에 직무, 인성 관계없이 면접이 잡혀도 술술 나올만큼
Goooooood

'CS 및 면접복기' 카테고리의 다른 글

20250807 - ALL  (3) 2025.08.07
20250806 - ALL  (3) 2025.08.06
20250805 - DB(1)  (4) 2025.08.05
20250804 - Java(2)  (4) 2025.08.04
20250803 - Java (1)  (1) 2025.08.03

+ Recent posts