브라우저가 웹 페이지를 렌더링하는 과정을 설명해주세요.
브라우저는 HTML을 파싱해 DOM을 만들고, CSS를 파싱해 CSSOM을 만든 뒤 둘을 결합해 Render Tree를 생성합니다. 이후 레이아웃 계산과 페인팅, 합성 과정을 거쳐 화면에 표시합니다.
쿠키와 세션의 차이를 설명해주세요.
쿠키는 클라이언트에 저장되는 데이터이고, 세션은 서버가 사용자 상태를 저장하는 방식입니다. 보통 세션 ID를 쿠키에 담아 서버 세션과 연결합니다.
HTTP 상태 코드를 어떻게 분류하고 자주 쓰는 상태 코드를 설명할지 말해주세요.
상태 코드는 `1xx` 정보, `2xx` 성공, `3xx` 리다이렉션, `4xx` 클라이언트 오류, `5xx` 서버 오류로 나뉩니다. 자주 쓰는 것은 `200`, `201`, `204`, `301`, `302`, `400`, `401`, `403`, `404`, `409`, `500`, `503` 정도입니다.
웹 서버와 WAS의 차이를 설명해주세요.
웹 서버는 정적 리소스 전달과 리버스 프록시 역할에 강하고, WAS는 비즈니스 로직 실행과 동적 페이지 처리에 강합니다. 실무에서는 Nginx 같은 웹 서버 앞단과 Spring Boot 같은 WAS 뒤단을 함께 두는 경우가 많습니다.
OAuth 2.0이 무엇이고 어떤 상황에서 사용하는지 설명해주세요.
OAuth 2.0은 사용자의 비밀번호를 직접 받지 않고도 제3자 애플리케이션이 제한된 권한을 위임받게 하는 표준입니다. 소셜 로그인이나 외부 API 연동에서 자주 사용합니다.
JWT가 무엇이고 장단점을 설명해주세요.
JWT는 사용자 정보를 서명된 토큰 형태로 담아 전달하는 방식입니다. 서버가 세션 저장소 없이 인증 정보를 검증할 수 있다는 장점이 있지만, 토큰 탈취 시 무효화가 어렵고 토큰 크기가 커질 수 있다는 단점이 있습니다.
인증(Authentication)과 인가(Authorization)의 차이를 설명해주세요.
인증은 "당신이 누구인가"를 확인하는 과정이고, 인가는 "당신이 무엇을 할 수 있는가"를 판단하는 과정입니다. 로그인과 권한 체크를 구분해서 설명하면 됩니다.
CSR과 SSR의 차이를 설명해주세요.
CSR은 브라우저에서 JavaScript가 UI를 렌더링하고, SSR은 서버가 HTML을 만들어 내려줍니다. CSR은 사용자 상호작용이 유리하고, SSR은 초기 로딩과 SEO에 유리합니다.
CSRF와 XSS가 무엇이고 각각 어떻게 방어할 수 있는지 설명해주세요.
CSRF는 사용자가 의도하지 않은 요청을 보내게 만드는 공격이고, XSS는 악성 스크립트를 페이지에 삽입하는 공격입니다. CSRF 토큰, SameSite Cookie, Origin 검증으로 CSRF를 막고, 출력 인코딩과 입력 검증, CSP로 XSS를 방어합니다.
대칭키 암호화와 비대칭키 암호화의 차이를 설명해주세요.
대칭키는 암복호화에 같은 키를 쓰고 빠르지만 키 교환이 어렵습니다. 비대칭키는 공개키와 개인키를 나눠 쓰기 때문에 키 교환은 쉽지만 연산 비용이 큽니다.
Same-Origin Policy가 무엇인지 설명해주세요.
SOP는 프로토콜, 호스트, 포트가 같은 출처에서만 리소스 접근을 허용하는 브라우저 보안 정책입니다. 다른 출처 자원을 다루려면 CORS 같은 별도 정책이 필요합니다.
브라우저 캐시, 프록시 캐시, CDN 캐시의 차이를 설명해주세요.
브라우저 캐시는 사용자 로컬에 저장되고, 프록시 캐시는 네트워크 중간 서버가 저장하며, CDN 캐시는 전 세계 엣지 서버에 콘텐츠를 분산 저장합니다. 셋 다 응답 속도와 원본 서버 부하를 줄이기 위한 캐시지만 위치와 범위가 다릅니다.
LocalStorage, SessionStorage, Cookie의 차이를 설명해주세요.
LocalStorage는 브라우저에 영구 저장되고, SessionStorage는 탭 세션이 끝나면 사라집니다. Cookie는 서버와 자동으로 함께 전송될 수 있어 인증 상태 관리에 쓰이지만 크기 제한과 보안 설정이 중요합니다.
REST와 GraphQL의 차이를 설명해주세요.
REST는 자원 중심 URL과 HTTP 메서드 기반 설계이고, GraphQL은 하나의 엔드포인트에 필요한 데이터 구조를 클라이언트가 직접 요청하는 방식입니다. REST는 단순하고 캐시 친화적이며, GraphQL은 복잡한 데이터 조합에 유리합니다.
멱등성과 안전한 메서드가 웹 API 설계에서 왜 중요한지 설명해주세요.
멱등성은 같은 요청을 여러 번 보내도 결과가 같다는 성질이고, 안전한 메서드는 서버 상태를 바꾸지 않는 메서드입니다. 재시도, 캐시, 장애 복구 설계에서 매우 중요하기 때문에 HTTP 메서드 의미를 정확히 지키는 것이 좋습니다.