- Hoisting과 Temporal Dead Zone이 어떻게 연관되어 있는지 설명하세요.
- 브라우저 렌더링 방식에 대해 설명하세요.
- 리플로우와 리페인트에 대해 설명하세요.
- 반응형 웹은 무엇이고 장단점에 대해 설명하세요.
- 자바스크립트 엔진의 콜 스택이 무엇인지 설명할 수 있나요?
HTML 파일과 CSS 파일을 파싱해서 각각 Tree를 만든다.
두 Tree를 결합하여 Rendering Tree를 만든다.
Rendering Tree에서 각 노드의 위치와 크기를 계산한다.
계산된 값을 이용해 각 노드를 화면상의 실제 픽셀로 변환하고, 레이어를 만든다.
레이어를 합성하여 실제 화면에 나타낸다.
플로우와 페인트단계를 다시 실행하는것을 의미한다.
화면에 요소가 추가 되거나 삭제, 혹은 아예 다른 요소들을 불러와야 하는 상황이 생기면 당연히 화면에 있던 요소들의 크기가 바뀌게 되면서 렌더링 과정의 레이아웃을 반복해 수행하는 것. 리플로우 하는 과정은 렌더링을 다시 하는 것이기 때문에 배치를 위한 연산을 해야 해 실제로 CPU를 많이 차지하고, 리페인트는 페인트를 다시 하는 것이라 픽셀을 다시 화면에 찍어 그려야 하기 때문에 GPU를 많이 차지하여 프레임 드랍 이 생기므로 최적화를 통해 리플로우, 리페인트를 줄이는 편이 좋다.
브라우저의 크기에 실시간으로 반응하여 크기에 따라 레이아웃이 변하는 웹 사이트를 의미한다. 장점으로는 효율적인 유지보수, 검색엔진(SEO) 최적화 유리가 있고, 단점으로는 사이트의 속도 저하, 웹브라우저 호환성 문제가 있다. 웹페이지 내용을 수정해야 할 때도 하나의 페이지에서만 적용해도 동일하게 반영되고, 하나의 소스 코드로 관리가 가능하기 때문에 초기 개발 비용 및 유지 관리 비용의 절감 효과를 가져올 수 있다. 또한 URL이 동일하므로 접속의 관리가 효율적이다. 하지만, PC와 함께 사용하기 때문에 모바일을 전용으로 하는 사이트에 비해 무겁고, 읽어야 할 소스가 많아 사이트의 속도가 느려진다. 이미지 리사이징등의 문제도 있을 수 있다, 또한 웹 브라우저가 스펙 및 사양이 제각각이기 때문에, 호환성 문제가 생길 수 있다.
호출 스택이란 프로그램에서 우리가 어디에 있는지를 기본적으로 기록하는 데이터 구조로서, 자바스크립트는 단일 스레드 프로그래밍 언어이므로, 단일 호출 스택이 있다. 단일 호출 스택이 있다는 뜻은 한 번에 하나의 일(Task)만 처리할 수 있다는 뜻이다.
- 번들링은 왜 필요한가요?
- Virtual DOM이 무엇이고, Virtual DOM이 어떤 면에서 좋은가요?
- Class Component와 Function Component의 차이점이 무엇인가요?
- React Hook의 사용 규칙에 대해 설명하세요.
- Node.js는 싱글 스레드인가요?
- JavaScript는 싱글 스레드입니다. 어떻게 싱글 스레드 방식으로 비동기 호출을 할 수 있는 지에 대해 설명할 수 있나요?
- Event Loop에 대해 설명할 수 있나요?
- 가비지 컬렉션이란 무엇이며, 가비지 컬렉션을 가진 언어에는 무엇이 있나요?
- Stack과 Queue의 차이점은 무엇인가요?
- Tree와 Graph의 차이점은 무엇인가요?
- 이진 탐색 방법에 대해 설명할 수 있나요?