본문 바로가기

개발자의 logs

WIL - 면접주차 나의 TOP5 질문 정리 본문

개발자 학습노트/* 학습일기*

WIL - 면접주차 나의 TOP5 질문 정리

주인장v 2022. 8. 14. 19:26
 

 

 

항해99 공식 일정이 끝났다. 열심히해서 아쉬움은 없다 ㅎㅎ 전에 멀티캠퍼스 아쉬움은 여파가 컸는데! 

하지만 아직 넘을 산이 많아서 감상은 잠시 뒤로 미루겠다. ㅎㅎ

 

 

 

이번주는 면접을 준비하면서 준비한 or 어려웠던 키워드 5개를 정리해보겠다 ! 

 

 

1. async await

async await은 비동기처리 방식인 콜백함수와 프로미스의 단점을 보완하기위해 나온 문법이다.

async는 비동기 함수로, 동기식 코드를 짜듯이 비동기식 코드를 짤 수 있다는 장점이 있다.

await은 async에서 사용하는 키워드로 await 뒤에 오는 Promise 결과값을 가질 때까지 함수를 잠시 멈추고, Promise 결과값이 반환되면 연산을 다시 진행한다. 비동기식으로 작동하기 때문에 해당 함수가 잠시 멈췄을 다른 작업을 처리할 있다.

 

https://shin1303.tistory.com/entry/JavaScript-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC-Async-Await%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

 

[JavaScript] 비동기 처리 - Async / Await이란 무엇인가?

비동기 처리의 중요성 시간이 걸리는 코드를 비동기 처리하지 않으면 문제가 발생할 수 있음 Ex) 서버에서 Data를 받아와서 출력해야 하는 상황에 비동기 처리를 하지 않으면 Data를 받을때 까지

shin1303.tistory.com

 

2. event roof

 

type 1

 

싱글 스레드로 도는 자바스크립트가 비동기 함수를 핸들링 하기 위한 동시성 모델이자 디자인 패턴이다.

자바스크립트 엔진은 싱글스레드 기반이기 때문에 하나의 call stack만 가지고 있다. 그렇기 때문에 한번에 하나의 동작만을 처리할 수 있다.

 

하지만 브라우저와 node가 동작하는것을 보면 많은 부분이 동시에 처리 되는 것처럼 보이는데, 브라우저, Node 환경에서 각각 이벤트 루프가 존재해 비동기 작업을 처리하기 때문이다.

 

 

type 2

 

자바스크립트는 싱글쓰레드 언어이다.

 

자바스크립트 엔진은 하나의 call stack을 가지고 있기때문에 한번에 하나의 동작만을 처리할 수 있기 때문입니다. 그런데 브라우저가 동작하는것을 보면 많은 부분이 동시에 처리 되는 것처럼 느껴집니다.

 

이와같이 자바스크립트의 동시성을 지원하는 것이 이벤트 루프이다.

브라우저 환경에는 자바스크립트 엔진과 call stack 말고도 web API와 event loop 그리고 task queue가 있어 비동기 처리가 가능하다.

 

자바스크립트의 코드가 실행되면 비동기 호출에 대한 처리를 브라우저에서 web API로 넘기고 동기적인 처리를 call stack에 담아 먼저 처리하게 된다.

 

이후에 비동기 호출에 대한 처리가 끝나면 web API는 비동기 호출의 콜백 함수를 task queue에 담게 되고 Event Loop는 call stack이 비어있는지 확인하고, call stack이 비어 있다면 task queue에 있는 함수를 call stack으로 넘겨주는 역할을 한다.

 

https://mari-mo.tistory.com/218

 

event loop에 대해서 설명하세요.

자바스크립는 싱글쓰레드 언어입니다. 자바스크립트 엔진은 하나의 call stack을 가지고 있기때문에 한번에 하나의 동작만을 처리할 수 있기 때문입니다. 그런데 브라우저가 동작하는것을 보면

mari-mo.tistory.com

[승무원의 개발자되기 프로젝트:티스토리]

 

 

3. Node.js란 무엇인가?

 

Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.

 

Node.js가 나오기 전에는 자바스크립트를 구동하려면 웹 브라우저를 통해서 실행시킬 수 밖에 없었는데, Node.js는 이를 극복시켜주었다.

 

브라우저의 엔진을 사용하는 것이 아니라 서버에 Node.js를 설치하고 서버 쪽에서 자바스크립트를 구동할 수 있게 만들어 준 것이 Node.js 이다.

 

작성 언어로 자바스크립트를 사용하며 논블로킹(Non-blocking) , I/O와 단일 스레드 ,이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

 

내장 HTTP 서버 라이브러리를 포함하고 있어, 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다는 장점들이 있다.

 

 

4. 쿠키와 세션의 차이

 

쿠키(Cookie)
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다. HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.

 

세션(Session)
일정 시간 동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다. 여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다. 즉, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.

 

쿠키와 세션은 비슷한 역할을 하며, 동작 원리도 비슷하다. 그 이유는 세션도 결국 쿠키를 사용하기 때문이다. 큰 차이점은 사용자의 정보가 저장되는 위치이다. 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용한다. 보안 면에서 세션이 더 우수하며, 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스니핑 당할 우려가 있어서 보안에 취약하지만 세션은 쿠키를 이용해서 session-id만 저장하고 그것으로 구분하여 서버에서 처리하기 때문에 비교적 보안성이 높다.

 

속도 면에서 쿠키가 더 우수하며, 쿠키는 쿠키에 정보가 있기 때문에 서버에 요청 시 속도가 빠르고 세션은 정보가 서버에 있기 때문에 처리가 요구되어 비교적 느린 속도를 낸다.

 

5. REST API

 

REST란 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.

 

RESTFUL API란 REST의 원리를 따르는 API를 의미합니다. 하지만 REST기법을 사용했다 하여 모두가 RESTful 한 것은 아니다.

REST API의 설계 규칙을 올바르게 지킨 API만이 RESTful하다 말할 수 있으며,

 

모든 CRUD 기능을 POST로 처리 하는 API 또는 URI 규칙을 올바르게 지키지 않은 API는

REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있다.

 

 

 
 
 
Comments