면접

신입 개발자 면접 준비 -백엔드 직무

moonsun623 2021. 12. 27. 20:20
반응형

Rest api 란 ?


http uri를 통해 자원을 명시하고 http method를 통해 해당 자원에 대한 crud 작업을 적용하는 것

 

특징:

  1. 서버- 클라이어트 구조 이다.
  2. stateless 여서 클라이언트의 상태를 서버에 저장하지 않는다.
  3.  api 서버는 단순히 클라이어트의 요청만 처리 (이전 요청과 연관되지 않는다.)
  4. 캐시처리 가능 ⇒ 응답시간이 빨라지고 rest server 트랜잭션이 발생하지 않아 전체 응답시간, 성능 ,서버의 자원 이용률을 향상시킨다.
  5. 계층화 → rest server는 다층 계층으로 (api server , 보안, 로드밸런싱, 암호화 , 사용화 인증 등 추가)
  6. 인터페이스 일관성 → uri로 지정한 자원에 대한 조작이 통일되었다.

구성요소:

자원 (uri) / 행위(http method) / 표현 (클라이언트가 자원의 상태에 대한 조작을 요청하면 server는 이에 대한 적절한 응답을 보낸다 주로 json 형태)

 

장점 :

  1. Open API 를 제공하기 쉽다
  2. 멀티플랫폼 지원 및 연동이 용이하다.
  3. 원하는 타입으로 데이터를 주고 받을 수 있다.
  4. 기존 웹 인프라(HTTP)를 그대로 사용할 수 있다.

단점 :

  1. 사용가능한 method가 4가지 뿐이다.
  2. http 통신모델에 대해서만 지원한다.

TCP와 UDP비교


TCP

신뢰성과 순차적인 전달 (3way-handshake)

UDP

비연결형 프로토콜로 흐름제어, 오류제어, 손상된 세그먼트 수신에 대한 재전송을 하지않음 (신뢰성 X)

 

[TCP] 3-way-handshake


  1. 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다
  2. 서버는 클라이언트 요청인 SYN(a)을 받고 클라이언트에서 요청수락한다는 ACK(a+1)와 SYN(b)이 설정된 패킷을 보낸다.
  3. 클라이언트는 서버의 수락 응답인 ACK(a+1)와 SYN(b) 패킷을 받고 ACK(b+1)를 서버로 보내면 연결이 성립된다.

 

HTTPS


http는 tcp/ip 위에서 작동하는데 암호화되지 않은 평문 데이터를 전송하기 때문에 보안 문제를 해결하기 위해 https 탄생

http 에서 암호화인 SSL이 추가된 프로토콜로 제3자가 중간에 정보를 볼 수 없도록 공개키 암호화를 지원한다.

(공개키 : 모두에게 공개가능한 키)

하지만 https는 인증서 발급하고 유지하기 위한 비용이 소요되기 때문에 단순 정보 조회에서는 http를, 민감한 데이터에는 https를 사용한다.

 

GET 방식 vs POST 방식


GET 방식 : 요청하는 데이터가 http request message 의 header 부분에 url이 담겨서 전송된다. url에 담아서 전송하기 때문에 데이터의 크기가 제한적이다. 또한 보안이 필요한 데이터에서는 url이 그대로 노출되기 때문에 적절하지 않다.

 

POST 방식 : 요청하는 데이터가 http request message의 body 부분에 담겨 전송된다. 데이터 크기가 크거나 보안면에서 유리하다.

 

프로세스와 스레드 차이


프로세스

실행 중인 프로그램으로 디스크로 부터 메모리에 적재되어 cpu를 할당 받을 수 있는 것

프로세스는 함수의 매개변수 , 복귀주소, 로컬 변수 같은 임시 자료를 갖는 프로세스 스택과 전역변수를 수록하는 데이터 섹션을 포함한다. 또한 프로세스 실행 중 동적으로 할당 되는 메모리인 힙을 포함한다.

스레드

프로세스의 실행 단위로 한 프로세스 내에 여러 스레드가 존재 하고 스레드 끼리 주소 공간이나 자원을 공유할 수 있다. 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화 하여 수행능력을 높이는 것을 멀티 스레딩이라 한다.

스레드마다 스택을 독립적으로 할당하는 이유

스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소값 및 함수 내 선언되는 변수들을 저장하기 위해 사용되는 메모리 공간이다. 스택이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 뜻이다. ⇒ 스레드의 독립적인 실행 흐름을 가능하게 해준다.