면접
프론트엔드 면접(HTTP 통신)
1. HTTP 통신에 대해서 설명해주세요.HTTP는 HyperText transfer protocol로 웹에서 정보를 주고받을 수 있는 프로토콜입니다. 그래서 클라이언트와 서버간에 통신을 가능하게 합니다. 클라이언트가 서버로 웹페이지나 데이터를 요청하면 서버는 클라이언트에게 요청받은 웹페이지나 데이터를 전송하게 됩니다.2. HTTP의 stateless에 대해서 설명해주세요.HTTP 통신은 stateless의 특징을 가지고 있습니다. stateless는 이전 요청의 결과, 즉 상태를 저장하고 있지 않음을 의미합니다. 따라서 모든 요청은 독립적인 특징을 가지고 있습니다.3. HTTP 프로토콜의 request와 response 구조에 대해 설명해보세요.HTTP request를 보낼때는 구조에 맞게 보내야 하는..
프론트엔드 면접(이벤트 루프)
1. 이벤트루프에 대해 설명해주세요.이벤트 루프는 자바스크립트 엔진이 비동기 작업을 처리하는 방식입니다. 자바스크립트는 싱글스레드 기반으로 동작하기 때문에 모든 작업들은 하나씩 처리되고, 콜스택에 작업이 쌓이게 됩니다. API를 통해 데이터를 받거나 오래걸리는 작업 등의 처리를 위해 비동기 처리가 필수적으러 이루어져야 하는데요, 이때 Web API를 통해 비동기 작업이 이루어질 수 있습니다. 콜스택에 비동기 작업이 실행되면 비동기함수는 Web API를 호출하고 Web API는 Task queue라고도 하는 Callback Queue에 콜백 함수를 넣습니다. 이벤트 루프는 콜스택과 콜백큐를 계속 확인하여 콜스택에 있는 작업을 우선적으로 처리하고 콜스택이 비면 콜백큐에 있는 작업을 콜스택에 넣어 처리하는 방..
프론트엔드 면접(이미지 최적화)
1. 이미지 최적화 경험이 있던데 어떤 방식으로 진행되었는지 설명해주세요.온라인 졸업전시 사이트를 운영하며 이미지 최적화를 진행했습니다. 20MB이상의 용량이 큰 이미지를 주로 사용하고 있던 졸업작품 사이트의 특성을 고려하여 사용자가 긴 로딩없이 빠르게 작품을 감상할 수 있도록 이미지 최적화를 진행했습니다. 먼저 파일 포맷을 변경하는 작업을 진행했습니다. webp 포맷을 사용하여 용량을 개선했는데요, webp 포맷은 구글에서 발표한 포맷으로 압축 효과가 좋아 많은 용량을 줄일 수 있기 때문에 png 포맷에서 webp로 변경하게 되었습니다. 그 결과 png 포맷일때보다 31%의 용량 개선이 있었습니다. 두번째로 이미지 사이즈가 실제 웹사이트에서 사용하는 것보다 1.5배정도 큰 사이즈로 사용되고 있어서 웹..
프론트엔드 면접(실행컨텍스트, 스코프 체인)
1. 실행컨텍스트에 대해 설명해주세요.실행컨텍스트는 자바스크립트에서 코드가 실행되는 환경을 의미합니다. 함수와 같이 자바스크립트 엔진이 코드를 실행할 때, 그 코드가 실행될 때의 환경을 정의하고 관리하기 위해 실행컨텍스트가 존재합니다.실행컨텍스트는 자바스크립트가 처음 실행될 때 전역으로 먼저 생성되고, 함수가 호출될 때 역시 생성됩니다. 이러한 실행 컨텍스트는 생성될 때 콜스택에 쌓이게되며 함수가 종료되거나 프로그램이 종료될 때 사라지게 됩니다.2. 실행컨텍스트는 어떤 구성 요소로 이루어져 있나요?실행컨텍스트는 변수 객체와 스코프체인, this 로 구성되어 있습니다.먼저 변수 객체는 실행 컨텍스트 내에서 사용되는 변수와 함수의 선언을 저장하는 공간입니다.스코프 체인은 현재 실행 중인 컨텍스트와 외부 렉시..
프론트엔드 면접(reflow, repaint)
1. reflow와 repaint의 차이점에 대해 설명해주세요.reflow와 repaint는 모두 렌더링과 관련이 있습니다. 화면이 리랜더링 됐을 때, 각 상황에 따라 reflow와 repaint가 일어나게 됩니다. reflow는 브라우저가 페이지의 레이아웃을 다시 계산하는 과정을 의미하고 repaint는 계산 결과를 바탕으로 화면에 다시 그리는 과정입니다. reflow는 DOM의 구조가 변경되거나 요소의 크기나 위치가 변경될 때 일어납니다. repaint는 레이아웃은 그대로이고 색상이나 배경 등의 스타일만 변경되었을 때 일어납니다. 레이아웃을 다시 계산하는 reflow가 일어나면 repaint가 필연적으로 일어나기도 하고, reflow는 비용이 더 들기 때문에 레이아웃 계산이 다시 일어나지 않도록 관리..
프론트엔드 면접(클로저, 클로저의 단점)
1. 클로저에 대해 설명해주세요.클로저는 선언됐을때 그때의 렉시컬 스코프를 기억하는 함수입니다. 자바스크립트에서 모든 함수들을 Environment라는 프로퍼티를 가지는데 여기에 외부 함수의 변수의 참조값이 저장되어 외부 함수의 변수에 접근이 가능합니다.https://enjoydev.life/blog/javascript/6-closure JavaScript의 클로저(Closure)란? (feat. React의 useState)JavaScript의 클로저의 원리를 쉽게 배워보고 어떤 상황에 사용되는지 알아보도록 하겠습니다.enjoydev.life2. 클로저의 단점과 해결방법에 대해 설명해주세요.클로저는 외부환경의 변수를 계속 기억하고 있기 때문에 가비지컬랙터의 대상이 되지 않아 메모리 누수가 일어날 수 있..