본문 바로가기

TIL

TIL 23.08.03 Mockterview (4)~(9)

4CORS란 무엇이고 어떻게 허용할 수 있나요 ?

 

Cross Origin Resource Sharing 의 약자로, 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근한다는 뜻이다. 

이는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여할 수 있다. 


5. 사용자 패스워드를 전송하고 보관하는 방법을 설명해주실 수 있을까요? (이해필요)

 

유저의 패스워드를 받은 클라이언트는 평문으로 서버로 전송합니다. 평문을 받은 서버는 패스워드를 단방향 해시 함수로 암호화하여 보관합니다. 단방향 해시함수는 수학적 연산에 의해 원본 데이터를 완전히 다른 암호화된 데이터(다이제스트)로 변환하는 것을 말합니다. 원본 데이터로는 다이제스트를 구할 수 있지만 다이제스트로는 원본데이터를 구할 수 없어야 합니다. 이것을 단방향이라 합니다. 단방향 해시함수는 브루트포스 공격으로 쉽게 당할 수 있기 때문에 이를 보완하기 위해 입력된 다이제스트를 N번 반복해서 생성하는 것인 key stretching과 원문 패스워드에 임의의 문자열을 추가하여 해싱하는 것인 salting을 이용해 보안의 강도를 높힐 수 있습니다.


6. var, let, const 에 대해 설명해주실 수 있을까요?

 

var 변수를 선언할 때 사용하며, 한번 선언한 변수를 재 선언할 수 있다. (재선언, 재할당 가능)
let 은 재 선언할 수 없으나 그 할당 값을 변경할 수 있다. (재할당 가능)
const 는 상수로, 한번 정해지고 변경되지 않는 값을 정의할 때 사용한다. (재선언,재할당 불가능)

요즘에는 var 대신 let과 const 를 사용하여 이름이 중복선언되지 않도록 방지한다. 


7. Promise란 무엇인지 설명해주실 수 있을까요?

 

Promise 란 비동기함수를 호출 할 때 처리할 함수를 설정하는 모듈이다. promise 가 없어도 비동기연산은 가능하지만 콜백지옥이 발생할 수 있고 가독성과 수정이 힘든 단점이 있다. 
promise 상태에 따라서 pending(대기), fulfilled(완료), rejected(거절) 로 나뉜다.


8Hoisting이란 무엇인지 설명해주실 수 있을까요?

 

호이스팅은 코드가 실행되기 전, 변수 및 함수 선언이 스코프의 최상단으로 올라가는 것을 뜻한다. 변수는 선언부와 할당부를 나누어 선언부를 끌어올리고, 함수선언은 함수 전체를 끌어올린다. var랑 함수와는 다르게 let과 const가 호이스팅된것 같지 않은 이유는 초기화 단계 이전인 선언단계까지만 진행된 상태이므로 선언문을 만나기 전까지 변수를 사용할 수 없기 때문이다.

 


9. async/await 이란 무엇인지 설명해주실 수 있을까요?

 

async/ await 은 비동기 처리 패턴 중 최근에 나온 문법이다. 해당함수는 항상 promise 를 반환하며, await 은 promise 가 처리될 때 까지 기다린다. await 은 항상 async 안에서 쓰여야하며, 기존 비동기 처리 방식인 콜백함수 및 promise 보다 가독성이 뛰어난 코드를 작성할 수 있다.