-
728x90
호이스팅,클로저,this,rest API, http/https 차이,cors에 대한 개념설명과
팀 프로젝트 중 어려웠던 점, 어떻게 극복했는지
팀 프로젝트에서 어떤 부분을 맡아서 진행했는지 등을 물어보셨던것 같다.
준비한다고 준비했는데,
너무 급하게 준비했던걸까, 제대로 답변하지못한게 많고
횡설수설 답변을 했던 것 같다.
기술면접에서 물어 보셨던
JS에 대한 질문들을 이 기회에 제대로 숙지해둬야겠다.
1. 호이스팅
면접시에 변수가 선언되고 초기화됐을 때
변수선언부분이 최상단으로 올라가는것을 의미한다고 대답했던 것 같다.
대충 어떠한 의미인지 아는것과 확실히 숙지하여 상대방에게 설명하는게 얼마나 힘든지 알게되었다.
이렇게 답변을 했다면 더 좋지 않았을까 싶다..
변수나 함수의 호출 코드가 선언 코드보다 아래쪽에 있음에도 불구하고 에러가 발생하지 않고,
마치 선언 코드가 호출 코드보다 더 위에 선언된 것과 같이 동작하는 특성을 호이스팅(Hoisting) 이라고 한다.
ex)
console.log(value); //undefined
var value = 'Hello'
console.log(value); // Hello
예제처럼 나중에 선언되는 변수에 미리 접근할수있다.
다만 호이스팅 된 변수는 초기화시킨다.
2.클로저
면접시에 클로저란
내부함수가 외부함수에 맥락에 접근할수있게 해줍니다.
사용하는 이유는 정보를 은닉할수있기 떄문입니다. 라고 대답했던 것 같다.
이것도 마찬가지로 설명이 부족했다고 생각한다.
클로저는 반환된 내부함수가 자신이 선언됐을 때의 환경(Lexical environment)인 스코프를 기억하여 자신이 선언됐을 때의
환경(스코프) 밖에서 호출되어도 그 환경(스코프)에 접근할 수 있는 함수를 말한다.
즉, 자신이 생성될 때의 환경을 기억하는 함수이다.
클로저를 쓰는 이유 :
전역변수를 줄일 수 있다(전역변수는 예상치 못한 Side Effect를 일으킬 수 있기 때문에 줄이는것이 좋다),
비슷한 형태의 코드의 재사용률을 높일 수 있다.
라고 답변했다면 더 좋았을 것 같다.
3.this
횡설수설 하게 대답했지만, this에 대해서는
어찌저찌 대답했던 것 같다.
하나하나 일때 답변을한것같은데 다시 생각해보니
this가 전역객체를 가르킬때의 경우 3개를 묶어 대답하고,
나머지 경우2가지를 따로따로 답변하는게 더 깔끔했을거같다는 생각이든다.
전역범위에서 사용될 때, 함수에서 사용될 때, 객체에 속한 메서드의 내부함수에서 사용될 때
this는 전역객체를 가르키고,
객체에 속한 메서드에서 사용될 때 this는 그 객체를 가르키고
생성자로 사용될 때 this는 생성자로 인해 생성된 객체를 가르킵니다. 라고
정리를 해둬야겠다.
4.RestAPI
프로젝트를 하면서 많이 들어봤는데
설명을 전혀하지못했다..
지금이라도 공부해두자.
REST 아키텍처 스타일의 제약 조건을 준수하고 RESTful 웹 서비스와
상호 작용할 수 있도록 하는 애플리케이션 프로그래밍 인터페이스(API 또는 웹 API)이다.
음 더 쉽게,,,
HTTP를 잘사용하기위해, URI와 HTTP메소드를 사용해서, URL로 어떤 자원에 접근할 것인지, 메소드로 어떤 행위를 할것
인지 표현하여 설계된 API를 말합니다.
여기서 URI(Uniform Resource Identifier)란
인터넷 자원을 나타내는 고유 식별자 이다. 인터넷에 있는 자료의 id 이다 , 라고 생각하면 좋을 것 같다.
다른 자료가 똑같은 이름을 가지고 있으면 안되서 URI 는 유일해야한다.
5.HTTP/HTTPS 설명
이것도 공부했는데,
막상 답변을하려니 꼬여서 답변을 제대로 못하게되었다.
평소에.. 코테문제풀이 말고 이론들도 해둬야겠다.
HTTP는 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜.
HTTPS는 HTTP + 데이터 암호화가 추가된 프로토콜이다.
HTTPS는 안전하게 데이터를 주고받을 수 있다.
하지만 암호화/복호화 과정이 필요하기 때문에
HTTP보다 속도가 느리고, 인증서 발급, 유지하는데에 추가비용이 발생한다.
6.CORS
이 질문에는 아예 답변을 못했다.
꼭 숙지하도록하자..
CORS는 도메인 혹은 포트가 다른 서버의 자원을 요청할 때 생긴다.
동일 출처 정책으로 인해 CORS같은 상황이 발생하면
외부서버에 요청한 데이터를 브라우저에서 보안목적으로 차단을 한다.
문제 해결방법은 response헤더에 "Access-Control-Allow-Origin"을 추가하던가,
서버쪽에서 처리를 해주면 된다.
모처럼 좋은기회로 면접을 보게되었는데,
제대로 답변도못하고,,, 너무 답답했다
기본이론들도 평소에 학습해서 똑같은 실수를 반복하면 안되겠다.
다음주까지 연락을 준다고하였는데,
되면 정말좋겠지만...
안된다면 좋은 경험으로 남기고
다음번에는 같은 실수를 반복하지 않아야겠다.
728x90