백앤드 인터뷰 질문

anonymous·2022년 10월 13일
0

네트워크

웹 통신의 큰 흐름: https://www.google.com/ 을 접속할 때 일어나는 일

1 웹 URL에 접속하면 웹 요청을 받아서 처리하는 브라우저는 사용자가 입력한 URL 을 받아서 파싱해 HTTP Request Message 를 만들고 이를 OS에 전송하게끔 요청.
2 문자열로 요청을 보낼 수 없기 때문에 이름을 찾으러 DNS Lookup을 수행
3 DNS Lookup (브라우저 -> hosts 파일 -> DNS cache) 순서로 도메인에 매핑된 IP를 찾는다.
4 이 요청은 프로토콜 스택이라는 OS에 내장된 네트워크 제어용 SW에 의해 패킷에 담기고 패킷에 제어정보를 붙여서 LAN 어뎁터에 전송하고 이 어뎁터는 이걸 전기신호로 전환해서 송출.
5 패킷은 스위칭 허브를 경유해서 인터넷 접속용 라우터에서 ISP로 전될되고 인터넷으로 이동
6 엑세스 회선에 의해 통신사용 라우터로 운반되고 인터넷 핵심부로 전달.
7 고속 라우터들 사이로 목적지가지 패킷이 이동함.
8 이를 통과한 패킷은 목적지인 LAN에 도착하고, 방화벽이 패킷을 검사 후 캐시 서버로 보내 웹 서버에 갈 필요가 있는지 검사.
9 웹 서버에 도착한 패킷은 프로토콜 스택이 패킷을 추출해 메시지를 복원하고 WAS로 넘김. WAS는 요청에 대한 응답 데이터를 클라이언트로 회송해서 이렇게 전달 받은 방식으로 브라우저에서 보여줌.

CORS에 대한 설명

CORS는 서로 다른 도메인 간 자원을 공유한다는 뜻. 보통 브라우저에서는 이를 차단하고 서버측에서 헤더를 통해서 사용 가능한 자원을 알려줌.
preflight request는 실제 요청을 보내도 안전한지 판단하기 위해 사전에 보내는 요청. OPTIONS 메서드로 요청하고 CORS 허용 여부 확인. CORS가 허용된 웹서버면 사용 가능한 리소스를 헤더에 담아서 응답함.

데이터베이스

트랜잭션에 대해서 설명해주세요.

  • 트렌젝션이란 DB 상태를 바꾸는 논리적인 작업 단위이며 하나의 트렌젝션으로 여러개의 연산 작업을 할 수 있다.
  • 트렌젝션 수행 중 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 정상적으로 DB 상태가 변경된다.

트렌젝션 격리 수준 (Transaction Isolation Level)

격리수준은 고릭도와 성능의 trade-off를 조절한다
READ UNCOMMITTED : 다른 트랜젝션에서 커밋되지 않은 내용 참조 가능
READ COMMITTED : 다른 트랜젝션에서 커밋된 내용만 참조 가능
REPEATABLE READ : 트렌젝션에 진입 전 커밋 내용만 참조 가능
SERIALIZABLE : 트렌젝션에 진입하면 다른 트렌젝션이 접근 못하게 한다.

Redis에 대한 설명

Redis는 key-value sotre NOSQL DB. 싱글스레도로 동작하고 자료구조를 지원. 데데이터의 스냅샷 혹은 AOF 로그를 통해 복구가 가능해서 어느정도 연속성 보장
스프링에서 세션 관리, 캐싱에서 많이 사용함.

참고

https://github.com/ksundong/backend-interview-question

profile
기술블로거입니다

0개의 댓글