기술면접 스터디 - 2주차

코변·2022년 9월 23일
0

기술면접 스터디

목록 보기
2/3

1. Deadlock이 무엇인지 설명해주시고 해결할 수 있는 방안에 대해 알려주세요.

  • 운영체제는 공유자원을 한 프로세스가 점유하면 이 자원을 임계구역으로 설정하여 다른 프로세스가 접근할 수 없도록 막습니다.
  • 이 과정에서 서로 다른 두 개의 프로세스가 공유자원을 각자가 가지고 있고 다음 자원을 기다리고 있다고 했을 때 서로가 점유한 자원을 기다리는 상태를 교착상태 deadlock이라고 부릅니다.
  • 이 교착상태를 해결하는 방법으로는 교착상태의 예방, 교착상태 회피등이 제시 되었으나
  • 임계구역을 설정하지 않는다거나 프로세스가 한 번에 모든 자원을 가져가게 하는 방법인 예방법은 실효성이 적어 사용되지 않고
  • 자원할당량을 조절하는 방식인 회피는 자원을 어떻게 분배해야 교착상태를 피할 수 있는지 확실한 기준이 없고 자원의 낭비가 발생합니다.
  • 마지막으로 대부분의 os에서 사용하고 있는 검출은 자원할당 그래프를 모니터링하면서 교착상태가 발생하는지 살펴보는 방식이고 만약 deadlock이 발생한다면 회복단계가 진행되고 우선순위가 낮은 프로세스를 종료함으로써 교착상태를 해결합니다.

2. 쿠키와 세션의 차이점에 대해 설명해주세요.

쿠키는 웹브라우저에 저장되는 작은 정보 파일로 이 창을 다시 보지 않기 등 유저의 개인정보가 아닌 활동정보를 주로 저장하고 개인에 맞춰진 페이지를 보여주기 위해 사용됩니다. 반면에 세션은 서버에서 관리하며 사용자의 정보파일을 서버에 저장하여 보안정보를 안전하게 관리합니다.

쿠키와 세션 모두 유효시간을 명시할 수 있으나 브라우저가 종료되면 사라지는 세션과는 달리 쿠키는 유효기간만큼 유지됩니다.

쿠키는 서버의 성능에 영향을 미치지 않으나 세션은 서버에서 관리하다보니 사용자가 많아지면 서버에 과부하가 올 수도 있습니다.

3. OSI 7계층에 대해 설명해주세요.

  • 네트워크 통신과정을 7단계로 나눈것입니다.
  • 통신이 일어나는 과정을 한눈에 파악하기 쉽다는 장점이 있습니다.
  • 물-데-네-전-세-표-응
  • 물리계층 → 전기적, 기계적 신호를 이용해 데이터를 송수신. (비트)
  • 데이터-링크 → 물리계층에서 송수신되는 정보의 오류와 흐름을 관리한다. (데이터 단위 :프레임 mac주소)
  • 네트워크 → 목적지 컴퓨터로 데이터를 전송하기위해 ip주소를 이용해서 길을 찾아 데이터를 전달해준다 . (패킷)
  • 전송계층 → port를 열어 응용프로그램들이 데이터를 전송을 할 수 있게 합니다.(세그먼트)
  • 세션계층 → 통신 장치 간 연결 유지 (tcp/ip 세션 체결)
  • 표현계층 → 데이터 번역자로서의 역할을 담당한다.
  • 응용계층 → 사용자와 가장 밀접한 계층으로 인터페이스를 담당한다. http 프로토콜은 여기서 request와 response를 주고 받는다.
  • 이렇게 7가지로 구성되어 있습니다.

4. TCP와 UDP를 비교하여 설명해주세요.

  • 안정성
    • TCP 연결은 연결과 해체를 위한 프로토콜이 따로 존재한다.( 3way-handshake, 4way-handshake) 따라서 안정성이 높다.
    • UDP 연결은 연결을 설정하고 해제하는 과정이 없기 때문에 안정성이 떨어진다.
  • 속도
    • TCP는 연결과 해제에 따로 시간을 들이는 만큼 속도는 떨어진다.
    • UDP는 확인 절차보다는 데이터를 연속적으로 보내주는 만큼 속도는 더 빠르다.
  • 활용
    • TCP는 웹페이지 데이터 송수신 등에 쓰인다.
    • UDP는 DNS, streaming 서비스에 쓰인다.

5. HTTP와 HTTPS를 비교하여 설명해주세요.

  • http는 html을 주고 받기 위한 프로토콜로 개발되었다. 그러나 시간이 흐르면서 텍스트와 페이지링크만 전해주던 과거와는 달리 네트워크를 통해 개인정보를 포함한 다양한 데이터를 주고 받기 시작했습니다.
  • http는 암호화 되지 않은 방법으로 데이터를 전송하기 때문에 서버와 클라이언트가 주고받는 데이터를 감청 및 탈취하는 것이 매우 쉽다. 따라서 정보를 탈취하고 공격을 감행하는 해커들이 많아졌고 이로 인해 정보의 중간 탈취를 막을 방법이 필요해졌다.
  • 이를 보안한 것이 https다. 공인 인증기관에서 발급한 ssl인증서를 가진 웹사이트와 이를 이용하는 클라이언트는 공개키 - 개인키 쌍을 만들어 ssl핸드셰이크를 통해 확인작업을 거친 후 데이터의 송수신이 이루어진다.

6. 3-way handshake에 대해 설명해주세요.

tcp 연결에서 서로간의 패킷을 주고 받아 연결이 가능한지 확인하는 방법.

  • 3way-handshake
    • 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정 (지정된 포트가 listen 상태인지 등을 확인함)
    • 양쪽 모두 데이터를 전송할 준비가 되어있다는 것을 보장하고 실제로 데이터 전달이 시작되기 전에 서로가 준비가 되었다는 것을 알 수 있도록 한다.
    • 3way-handshake를 통해서 tcp는 데이터의 안전한 송수신이 가능해진다.
  • 4way-handshake
    • 데이터의 송수신이 완료되었는지 확인하는 절차

7. www.naver.com을 접속했을 시 화면이 출력되기까지의 과정을 설명해주세요.

  • 설명버전
    • 저는 백엔드를 중점적으로 설명해보려고 합니다. 따라서 제너럴한 부분은 간단하게 짚고 넘어가겠습니다.
    • 사용자가 입력한 도메인과 서버의 주소를 매핑해주는 DNS서버에 질의를 통해 서버의 주소를 얻습니다.
    • 얻은 서버주소를 통해서 서버컴퓨터를 찾아 데이터를 주고받기에 안전한 tcp 연결을 한다(http 80, https 443)
    • 연결이 되면 웹서버가 정적 데이터를 반환해준다. 이 때 프런트 서버와 백엔드 서버와 분리되어 있고
    • 백엔스 서버가 rest_api서버라고 가정했을 때
    • 프런트 단에서는 http request를 담아 api 요청을 보냅니다.
    • 프런트 서버에서 오는 요청은 url을 통해 이와 매칭된 웹 어플리케이션의 함수와 연결되고
    • 이 함수를 실행하여 request 헤더에 담긴 데이터, 쿼리 파라미터 등을 활용해 필요한 데이터를 확인하고
    • sql query를 통해 db의 데이터를 조회하여 json 데이터로 파싱하여 response에 담아 반환해줍니다.
    • 프런트에서는 이 response에 담겨온 데이터를 활용해 html 페이지에 그려줍니다.

8. HTTP 메소드 중 GET, POST를 비교하여 설명해주세요

  • 사용목적
    • GET은 서버에서 데이터를 요청할 때, POST는 서버에 데이터를 저장하거나 업데이트할 때 사용한다.
  • 요청에 body 유무
    • GET 은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 는 body 에 데이터를 담아 보낸다.
  • 보안
    • post가 보안이 아주 우수하다고 할 수는 없으나 캐시가 되지 않고 브라우저 히스토리로 남지 않기 때문에 이 두가지 상황 모두에 해당하는 get보다는 보안면에서 우수하다고 할 수 있다.

9. HTTP 상태코드 정의를 말씀해주시고 알고있는 상태코드 모두 설명해주세요.

http 상태코드는 http 요청에 대한 응답이 어떠한 상태로 완료되었는지를 알려주는 서버와 클라이언트의 소통방식입니다.

200번대는

  • 200 ok
  • 201 created
  • 204 no content

300번대는 리디렉션에 쓰인다고 알고 있으며

400번대는

  • 400 bad request
  • 401 unauthorized
  • 404 not found
  • 403 forbidden

500번대는

  • 500 internal server error
  • 502 bad gateway
  • 504 gateway timeout

등이 있습니다.

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글