슈코딩

[신입 기술면접] 기술면접 스터디 정리 2 본문

코딩공부/기술면접

[신입 기술면접] 기술면접 스터디 정리 2

Roshu 2022. 10. 21. 03:07

 

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

Deadlock

  • 교착상태란 뜻으로 서로 필요한 자원 사용을 위해 상대방의 종료를 기다리며, 무한 대기에 빠지는 상황

예방 (Prevention)

  • 기존 Deadlock이 프로세스들끼리 자원 사용시 서로 상호 배제한단 것이 문제가 되었으니, 자원을 공유하게 하여 대기에 빠지지 않도록 함
  • 교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법
  • 환형 대기, 비선점, 점유와 대기, 상호 배제 4가지 부정

회피 (Avoidance)

  • 프로세스에 대한 교착 상태 가능성을 미리 판단하며 배제하지 않고 적절하게 피해나가는 방법
  • 예시) 은행원 알고리즘 처럼 사전에 필요로 하는 최대 자원을 파악하여 교착상태를 최대한 피함

은행원 알고리즘이란?

 

[운영체제]교착상태 회피-은행원 알고리즘(Banker's Algorithm) 쉬운 예시, 안전상태, 불안전상태

[한 번에 끝내는 운영체제 목차!] Deadlock Avoidance 교착상태 회피 저번 시간에 교착상태 해결 방안 4종류를 알아봤어요 교착상태 예방, 교착상태 회피, 교착상태 탐지, 교착상태 복구! 이렇게 4가지

jhnyang.tistory.com

탐지 (Detection)

  • 교착상태 발생을 허용하고 발생 시 원인을 규명하여 해결하는 방법
  • 예시) 자원할당 그래프

회복 (Recovery)

  • 교착상태 발견 후 환형대기를 배제시키거나 자원을 중단하는 메모리 할당 기법
  • 예시) 선점, 프로세스 중지 (희생자 선택의 원칙 : 최소 비용으로 중지시키는 방법을 찾아야 함)

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

사용 이유

  • HTTP 프로토콜 환경은 "connectionless, stateless"한 특성을 가지고 있기 때문에 서버는 클라이언트가 누구인지 매번 확인 해야하고 이러한 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용

쿠키

  • 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
  • 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지

쿠키 동작 방식

  1. 클라이언트가 페이지를 요청
  2. 서버에서 쿠키를 생성
  3. HTTP 헤더에 쿠키를 포함하여 전달
  4. 브라우저가 종료되어도 쿠키 만료 시간이 남아있다면 클라이언트에서 보관
  5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
  6. 서버에서 쿠키를 읽어서 이전 상태 정보를 변경 할 필요가 있을때 쿠키를 업데이트 하여 변경된 쿠키를 HTTP헤더에 포함시켜 응답

쿠키 사용 예시

  • 방문 사이트에서 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
  • 쇼핑몰의 장바구니 기능
  • 자동로그인, 팝업에서 "오늘 더이상 이창을 보지 않음" 체크

세션

  • 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 서버 측에서 관리
  • 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여, 서버에 접속해서 브라우저를 종료 전까지 인증상태를 유지
  • 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정 가능

세션 동작 방식

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
  2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
  3. 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
  4. 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라이언트 정보를 가져와서 사용
  5. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답

세션 사용 예시

  • 로그인 같이 보안상 중요한 작업을 수행할 때 사용

둘의 차이점 (장단점)

  • 비슷한 역할, 동작원리도 비슷, 그 이유는 세션도 결국 쿠키를 사용하기 때문
  • 가장 큰 차이점은 사용자의 정보가 저장되는 위치 (쿠키: 클라이언트, 세션: 서버)
  • 보안면에서 세션이 더 우수하며, 요청 속도는 쿠키가 세션보다 더 빠름(세션은 서버의 처리가 필요)
  • 쿠키는 로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있어서 보안에 취약
  • 세션은 사용자가 많아질수록 서버 메모리를 많이 차지하게 되어 동접자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 된다. 즉, 확장성이 안좋다.

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

OSI 7계층

  • 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층간 상호 작동하는 방식을 정해 놓은 것
  • 1 물리 > 2 데이터 링크 > 3 네트워크 > 4 전송 > 5 세션 > 6 표현 > 7 응용 (물데네전세표응)

사용 이유

  • 통신이 일어나는 과정을 단계별로 파악하여 7단계중 특정한 곳에 이상이 생길시 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 문제가 생긴 단계만 고치면 되기 때문이다.

1계층 물리 계층

  • 통신 케이블, 리피터, 허브 등 전기적, 기계적, 기능적인 특성을 이용해서 데이터를 전송
  • 통신단위는 비트, 1과0으로 나타내어지는 전기적으로 On, Off 상태
  • 데이터를 전달만 하고 전송하거나 받으려는 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않음

2계층 데이터 링크 계층

  • 물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
  • MAC 주소를 가지고 통신
  • 전송되는 단위를 프레임이라 하고, 대표적인 장비 브리지, 스위치 등이 있음
  • 한마디로 브릿지나 스위치를 통해 맥주소를 가지고 물리계층에서 받은 정보를 전달함

3계층 네트워크 계층

  • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)
  • IP주소로 연결이 되며 데이터 패킷을 목적지IP주소로 라우팅

4계층 전송 계층

  • TCP, UDP 프로토콜이 해당되며 데이터 통신을 보장해준다.

5계층 세션 계층

  • 데이터가 통신하기 위한 논리적인 연결을 말함, 통신을 하기위한 대문
  • 통신하는 사용자들을 동기화하고 오류복구 명령들을 일괄적으로 다룸
  • 통신을 하기 위한 세션을 확립/유지/중단 (운영체제가 해줌)

6계층 표현 계층

  • 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화 한다.
  • MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어짐
  • 해당 데이터가 TEXT인지, 그림인지, GIF인지 JPG인지의 구분 등이 표현 계층의 몫

7계층 응용 계층

  • 최종 목적지로서 HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있다
  • 응용 계층(Application layer)은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행

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

TCP

  • OSI 계층모델의 관점에서 전송 계층(4계층)에 해당하는 통신 프로토콜
  • 3-way-handshake 과정을 통해 연결을 설정하기 때문에 높은 신뢰적인 전송을 보장, 속도가 비교적 느림
  • 연결지향성 서비스를 제공
  • 나의 데이터가 제대로 전송이 되었는가를 체크하고 패킷이 손실되었다면 재전송을 해줌
  • 신뢰성이 중요한 파일 교환

UDP

  • 전송 계층의 통신 프로토콜의 하나 (TCP에 대비됨)
  • 3-way-handshake를 사용하지 않기 때문에 신뢰성이 떨어짐
  • 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠름
  • 가상회선을 굳이 확립할 필요가 없고 유연하며 효율적 응용의 데이터 전송에 사용
  • 비연결성, 단방향성, 순서화되지 않은 Datagram 서비스 제공
  • 패킷의 손실 유무를 체크하지 못함
  • 실시간성이 중요한 스트리밍

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

HTTP

  • HTTP는 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜
  • 상태 정보를 저장하지 않는 Stateless한 특징을 지니고 해결 방안으로는 세션, 토큰, 쿠키가 있음
  • HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기때문에 비밀번호나 주민등록등을 주고받으면 제 3자가 정보를 조회할 수 있어 위험
  • 80번포트 사용

HTTPS

  • HTTP의 보안적인 문제를 해결하기 위해 등장
  • HTTP에 Secure 즉 보안적인 측면에서 데이터 암화가 추가된 프로토콜
  • HTTPS는 HTTP 프로토콜에 보안 요소가 추가된 방식으로 SSL 인증서를 이용해, 데이터를 공개키 암호화 방식으로 암호화하여 통신
  • HTTP는 TCP와 직접 통신하지만, HTTPS는 SSL과 통신하고 SSL이 TCP와 통신함으로써 암호화와 증명서, 안전성 보호를 이용할 수 있게 됨
  • 443번 포트 사용

출처: https://dev-coco.tistory.com/161 [슬기로운 개발생활:티스토리]

SSL 동작 원리

SSL(Secure Socket Layer) 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약
  1. 서버에서 CA를 통해 SSL 인증서를 발급하여 클라이언트에게 공개키와 함께 줌 (CA는 서버에서 만든 공개키와 개인키로 암호화 수행된 SSL 인증서발급)
  2. 공개키를 가지고 SSL을 복호화 성공시 인증서가 잘 되어 있다는 것
  3. 공개키를 가지고 데이터를 서버로 보낼 때 암호화 진행
  4. 서버에서 개인키로 복호화하여 데이터 확인

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

3-way-handshake

  • TCP 네트워크에서 통신하는 장치가 서로 연결이 잘되었는지 확인하는 방법
  • 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태인지 확인

4-way-handshake

  • TCP 네트워크에서 통신 하는 장치의 연결을 해제하는 방법
  • 송신자와 수신자는 총 4번에 걸쳐 데이터를 주고 받으며 연결을 끊음

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

과정

  • 사용자가 브라우저에 URL을 입력
  • DNS 서버에 도메인 네임으로 서버의 진짜 주소를 찾음
  • IP 주소로 웹서버에 TCP 3-way-handshake로 연결 수립
  • 클라이언트는 웹 서버로 HTTP 요청 메시지를 보냄
  • 웹 서버는 HTTP 응답 메시지를 보냄
  • 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력

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

GET

  • 데이터를 조회하기 위해 사용되는 방식으로 데이터를 헤더에 추가하여 전송하는 방식
  • URL에 데이터가 노출되므로 보안적으로 중요한 데이터를 포함해서는 안됨
  • 길이 제한이 있음(브라우저마다 제한이 다름)
  • 캐싱할 수 있음

POST

  • 데이터를 추가 또는 수정하기 위해 사용되는 방식으로 데이터를 Body에 추가하여 전송하는 방식
  • 완전히 안전한 것은 아니지만 URL에 데이터가 노출되지 않아 GET 보다는 안전
  • 데이터 길이에 제한이 없음
  • 캐싱할 수 없음

PUT

post와 put의 차이점은 post는 매번 새로운 리소스를 만들지만, put은 요청 시 마다 같은 리소스를 반복한다.

put은 멱등하다고 할 수 있으며, post는 멱등하지 않다고 할 수 있다.


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

HTTP 상태코드

  • HTTP 상태 코드는 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공/실패 여부를 판단
  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
    • 100 : continue
    • 102 : processing
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
    • 200 : ok, 요청이 성공적이며 정보는 그 요청에 대한 응답
    • 201 : Created, 요청이 성공적이며, 그 결과로 새로운 리소스 생성
    • 202 : Accepted, 요청을 수신하였다. 행동은 아직 할 수 없다.
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
    • 301 : Moved Permanently, 요청한 리소스의 Url이 변경되었다.
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
    • 400 : Bad Request, 잘못된 요청으로 인해 서버가 이해할 수 없음
    • 401 : Unauthorized, 비 인증 상태이기에 응답을 할 수 없다.
    • 403 : Forbidden, 클라이언트가 접근할 권리를 갖고 있지 않을 경우, 401과 다른점은 서버가 누구인지를 알고 있다는 사실
    • 404 : Not Found, 서버가 요청받은 리소스를 찾을 수 없는 경우, 서버가 인증받지 않은 클라이언트로부터 리소스를 숨기기 위해서 403대신 보낼 수 있다.
    • 405 : Method Not Allowed, 요청한 메소드는 서버에서는 알고있지만, 제거되었거나 사용할 수 없는 메소드.
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다
    • 500 : Internal Server Error**,** 웹사이트에 문제가 있지만, 서버가 제대로 설명 불가
    • 502 : Bad Gateway, 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미

 

Comments