백엔드 면접 질문

1. Record란? Java 16에서 정식으로 도입된 Record는 불변(immutable) 데이터 객체를 생성하기 위한 특별한 형태의 클래스다.주요 특징은 아래와 같은데, 모든 필드가 private final로 선언된다.생성자, getter, equals(), hashCode(), toString()메서드가 자동 생성된다.불변성(immutability)이 보장된다.java.lang.Record를 자동으로 상속한다.final 클래스라 상속이 불가능하다. 2. 기존 DTO vs Record 비교 동일한 데이터 객체를 일반 클래스로 작성했을 때, Record로 작성했을 때를 비교해보자 일반 DTO 클래스public class UserDTO { private final String name; pr..
1. SSR(Server Side Rendering) 웹 애플리케이션에서 페이지를 렌더링하는 방식 중 하나로,서버에서 HTML을 생성하여 브라우저로 전송하는 방식이다.사용자가 요청을 보내면 서버가 데이터를 처리하고 완전한 HTML을 반환한다.브라우저는 이를 받아 바로 화면에 표시한다. 1 - 1. SSR의 장단점 1 - 1 - 1. SSR의 장점 빠른 초기 로딩: 서버에서 HTML을 제공하기 때문에 첫 화면 로딩 속도가 빠르다.SEO 최적화: 검색 엔진 크롤러가 완전한 HTML 콘텐츠를 쉽게 읽고 인덱싱할 수 있어 SEO에 유리하다.모든 디바이스에서 일관된 성능: 클라이언트의 성능에 크게 의존하지 않는다. 1 - 1 - 2. SSR의 단점 서버 부하 증가: 모든 요청에 대해 서버가 페이지를 렌더링해야 하..
1. TCP 3-way handshake TCP의 3-way handshake는 신뢰할 수 있는 연결을 설정하기 위한 3단계 과정이다.먼저 클라이언트가 서버에 SYN 패킷으로 연결 요청을 보낸다.서버는 이를 수락하며 SYN-ACK 패킷으로 응답한다.클라이언트가 ACK 패킷으로 응답하여 연결이 성립된다. 이 과정은 데이터 전송 전에 양측의 통신 준비 상태를 확인하고 초기 순서 번호를 동기화하여TCP의 신뢰성과 안정성을 보장한다. 2. SYN 패킷 첫 번째 단계에서 클라이언트는 서버에 연결을 요청하는 SYN 세그먼트(메시지, 또는 패킷)을 보낸다.이 세그먼트에는 초기 순서 번호(Sequence Number)와 윈도우 크기(Window Size) 정보가 포함되어 있다.이 때, 클라이언트는 SYN을 보내고 SY..
1. 로그(Log) 로그는 시스템, 애플리케이션, 또는 서비스에서 발생한 이벤트, 동작, 오류 등을 기록한 텍스트 기반 데이터이다.이벤트의 시간, 위치, 상태 등을 포함하고, 오류의 원인을 파악하는 데 쓰인다. 2. 메트릭(Metric) 메트릭은 시스템 또는 애플리케이션의 성능과 상태를 나타내는 수치 데이터이다.주기적으로 수집되어 시간에 따른 변화를 분석할 수 있다.대표적으로 CPU 사용률, 메모리 사용량, 스레드 풀, 데이터베이스 커넥션 풀 상태 등이 있다. 3. 로그와 메트릭을 수집해 본 적 있는가? Spring Boot Actuator를 사용해 메트릭을 생성하고 Prometheus에 저장한 다음 그라파나로 시각화한 경험이 있다.서버가 종료되거나, CPU 사용량, JVM 메모리, 톰캣 스레드 풀, 데..
1. 멱등성(Idempotent)이란 HTTP 메서드의 멱등성이란 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고,서버의 상태도 동일하게 남는 특성을 말한다.즉, 요청을 여러 번 실행해도 결과가 같아 안전하게 사용할 수 있는 성질이다.  2. 멱등성을 가진 HTTP 메서드 GET: 리소스를 조회하는 메서드로, 여러 번 요청해도 동일한 결과를 반환한다.HEAD: GET과 유사하지만 응답 본문을 제외한 헤더만 반환한다.PUT: 리소스를 수정하는 메서드로, 같은 데이터로 여러 번 요청해도 결과는 동일하다DELETE: 리소스를 삭제하는 메서드로, 여러 번 요청해도 서버의 상태는 동일하다.OPTIONS: 서버가 지원하는 메서드 정보를 반환한다. 3. 멱등성을 가지지 않는 HTT..
1. DNS 조회브라우저는 먼저 DNS(Domain Name System) 서버에 www.google.com 의 IP 주소를 요청한다. 이 과정에서 브라우저 캐시를 먼저 확인하고, 운영체제의 호스트 파일을 확인한다. 그리고 나서 ISP의 DNS 서버에 질의하게 된다.  2. TCP 연결 수립IP 주소를 얻은 후, 브라우저는 해당 IP 주소로 TCP 연결을 시도한다. 이 과정에서 3-way handshake가 이뤄진다. 클라이언트가 SYN 패킷을 보낸다.서버가 SYN_ACK 로 응답한다.클라이언트가 ACK를 보내 연결을 확립한다. 3. HTTP 요청 전송 TCP 연결이 수립되면, 브라우저는 HTTP GET 요청을 서버로 전송한다.이 요청에는 다음과 같은 정보가 포함된다. 요청 메서드 (GET)요청 경로 (..
1. Connection Pool 이란? 애플리케이션이 데이터베이스와 통신을 하기 위해서는 Database Connection(데이터베이스 연결)이 필요하다. 데이터베이스 연결 수명 주기는 아래와 같다.  데이터베이스 드라이버를 사용하여 데이터베이스에 연결하기데이터 읽기 / 쓰기를 위한 TCP 소켓 열기소켓을 통한 데이터 읽기 / 쓰기연결 종료소켓 닫기  데이터베이스 연결은 상당히 비용이 많이 드는 작업이다.따라서, 가능하면 데이터베이스 연결을 최소한으로 줄여야 한다. 커넥션 풀은 애플리케이션 서버가 시작될 때 미리 일정 수의 데이터베이스 연결을 생성하고,이를 Pool에 보관하는 기술이다. 이렇게 미리 생성된 연결들은 클라이언트의 요청이 있을 때 재사용된다. 1 - 1. 동작 방식 애플리케이션 서버 시작..
1. 자바에서 동일성과 동등성 이해하기 객체 지향 프로그래밍에서 동일성(Identity)과 동등성(Equality)은 객체를 비교하는 두 가지 중요한 개념이다.  2. 동일성(Identity) 동일성은 두 객체가 메모리 상에서 같은 위치를 차지하고 있는지, 즉 같은 객체인지를 판단한다.자바에서는 `==` 연산자를 사용하여 동일성을 확인한다. 예를 들어,Integer a = new Integer(1);Integer b = a;System.out.println(a == b); // true 이 경우 a와 b는 동일한 객체를 참조하므로 true를 반환한다. 3. 동등성(Equality) 동등성은 두 객체의 내용이나 상태가 같은지를 비교한다.자바에서는 `equals()` 메소드를 사용하여 동등성을 확인한다. 예..