슈코딩
[신입 기술면접] 기술면접 스터디 정리 2 본문
💡Deadlock이 무엇인지 설명해주시고 해결할 수 있는 방안에 대해 알려주세요
Deadlock
- 교착상태란 뜻으로 서로 필요한 자원 사용을 위해 상대방의 종료를 기다리며, 무한 대기에 빠지는 상황
예방 (Prevention)
- 기존 Deadlock이 프로세스들끼리 자원 사용시 서로 상호 배제한단 것이 문제가 되었으니, 자원을 공유하게 하여 대기에 빠지지 않도록 함
- 교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법
- 환형 대기, 비선점, 점유와 대기, 상호 배제 4가지 부정
회피 (Avoidance)
- 프로세스에 대한 교착 상태 가능성을 미리 판단하며 배제하지 않고 적절하게 피해나가는 방법
- 예시) 은행원 알고리즘 처럼 사전에 필요로 하는 최대 자원을 파악하여 교착상태를 최대한 피함
은행원 알고리즘이란?
[운영체제]교착상태 회피-은행원 알고리즘(Banker's Algorithm) 쉬운 예시, 안전상태, 불안전상태
[한 번에 끝내는 운영체제 목차!] Deadlock Avoidance 교착상태 회피 저번 시간에 교착상태 해결 방안 4종류를 알아봤어요 교착상태 예방, 교착상태 회피, 교착상태 탐지, 교착상태 복구! 이렇게 4가지
jhnyang.tistory.com
탐지 (Detection)
- 교착상태 발생을 허용하고 발생 시 원인을 규명하여 해결하는 방법
- 예시) 자원할당 그래프
회복 (Recovery)
- 교착상태 발견 후 환형대기를 배제시키거나 자원을 중단하는 메모리 할당 기법
- 예시) 선점, 프로세스 중지 (희생자 선택의 원칙 : 최소 비용으로 중지시키는 방법을 찾아야 함)
💡쿠키와 세션의 차이점에 대해 설명해주세요
사용 이유
- HTTP 프로토콜 환경은 "connectionless, stateless"한 특성을 가지고 있기 때문에 서버는 클라이언트가 누구인지 매번 확인 해야하고 이러한 특성이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용
쿠키
- 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
- 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지
쿠키 동작 방식
- 클라이언트가 페이지를 요청
- 서버에서 쿠키를 생성
- HTTP 헤더에 쿠키를 포함하여 전달
- 브라우저가 종료되어도 쿠키 만료 시간이 남아있다면 클라이언트에서 보관
- 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
- 서버에서 쿠키를 읽어서 이전 상태 정보를 변경 할 필요가 있을때 쿠키를 업데이트 하여 변경된 쿠키를 HTTP헤더에 포함시켜 응답
쿠키 사용 예시
- 방문 사이트에서 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
- 쇼핑몰의 장바구니 기능
- 자동로그인, 팝업에서 "오늘 더이상 이창을 보지 않음" 체크
세션
- 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 서버 측에서 관리
- 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여, 서버에 접속해서 브라우저를 종료 전까지 인증상태를 유지
- 접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않게 설정 가능
세션 동작 방식
- 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
- 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
- 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
- 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라이언트 정보를 가져와서 사용
- 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답
세션 사용 예시
- 로그인 같이 보안상 중요한 작업을 수행할 때 사용
둘의 차이점 (장단점)
- 비슷한 역할, 동작원리도 비슷, 그 이유는 세션도 결국 쿠키를 사용하기 때문
- 가장 큰 차이점은 사용자의 정보가 저장되는 위치 (쿠키: 클라이언트, 세션: 서버)
- 보안면에서 세션이 더 우수하며, 요청 속도는 쿠키가 세션보다 더 빠름(세션은 서버의 처리가 필요)
- 쿠키는 로컬에 저장되기 때문에 변질되거나 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) 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약
- 서버에서 CA를 통해 SSL 인증서를 발급하여 클라이언트에게 공개키와 함께 줌 (CA는 서버에서 만든 공개키와 개인키로 암호화 수행된 SSL 인증서발급)
- 공개키를 가지고 SSL을 복호화 성공시 인증서가 잘 되어 있다는 것
- 공개키를 가지고 데이터를 서버로 보낼 때 암호화 진행
- 서버에서 개인키로 복호화하여 데이터 확인
💡 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, 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미
'코딩공부 > 기술면접' 카테고리의 다른 글
[기술면접] Django 50문 50답 31~45 (0) | 2022.10.26 |
---|---|
[기술면접] Django 50문 50답 16~30 (0) | 2022.10.25 |
[기술면접] Django 50문 50답 1~15 (1) | 2022.10.24 |
[신입 기술면접] 기술면접 스터디 정리 3 (0) | 2022.10.22 |
[신입 기술면접] 기술면접 스터디 정리 1 (1) | 2022.10.17 |
Comments