목록기술면접 (8)
가치투자자
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/v9XgA/btsmfMNpetO/ZEDq0Mk7BtVEJDOBwWQm20/img.jpg)
생명 주기 (Life Cycle) 혹시 컴포넌트도 수명이 있다는 것을 알고 있나요? 사람이 태어나서 성장하고 생명을 다하는 것처럼 리액트 컴포넌트도 이러한 과정을 겪으며, 이를 생명주기(Life Cycle)라고 한다. 1. 생명 주기 React 컴포넌트에는 생명 주기(라이프사이클)가 존재한다. 생명 주기는 생성(mounting) - 업데이트(updating) - 제거(unmounting) 단계로 구성되어져 있으며, 각 단계마다 특정한 이벤트가 발생하며 그 때마다 사용되는 메서드가 있다. 이러한 생명주기 함수는 클래스형 컴포넌트에서만 사용할 수 있으며, 함수형 컴포넌트에서는 사용할 수 없다. 함수형 컴포넌트에서는 Hooks으로 유사한 기능을 활용할 수 있으므로, 이 부분은 Hooks에서 다뤄볼 것이다. 2..
시멘틱 태그 (Semantic Tag) 1. 시멘틱 태그란? 혹시 여러분은 검색의 원리가 어떻게 되는지 알고 있나요? 검색엔진(Search Engine)은 매일 여러 웹 페이지의 정보를 크롤링하여 수집하고, 그 정보에다가 이용자들이 검색할 만한 키워드에 맞게 인덱스(index)를 붙여주는 인덱싱 작업을 한다. 이때 이용자들이 검색하는 사이트들이 HTML 문서이기에 검색 엔진은 HTML 코드를 기반으로 웹 사이트의 컨텐츠를 분석하고 인덱싱한다. 예시를 통해 좀 더 이해도를 높여보자. 아래 두 코드 모두 제목을 만들기 위한 코드고, 겉으로 보이는 결과물도 유사하지만 검색 엔진은 서로 다르게 인식한다. 첫 번째 코드는 제목 요소(h1 태그)로 인식되지만, 두 번째 코드는 32px 크기의 요소로 받아들여진다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/VZeCy/btsjJU8vEqq/yvG3XJrTFao2pepnmKZJ11/img.jpg)
State와 Props * 기술면접 질문은 맨 아래에 적혀 있습니다 웹 브라우저에서 데이터가 변경되었을 때 어떻게 반영될까? 자바스크립트에서는 DOM에 직접 접근하여 데이터 변경사항을 반영한다. 아래의 예시 코드를 보면, 버튼을 클릭해 카운트가 증가할 때마다 아이디가 count-text인 DOM 요소에 접근해 텍스트를 변경해준다. let count = 0; function handleClick() { count = count +1; rerendering(); } function rerendering() { const cntText = document.querySelector('#count-text'); cntText.innerText = `Count : ${count}`; } 그러나 count 데이터가 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WzPKH/btsjjAiLCoG/NI2n4UBFzg50RrGfegbFF1/img.jpg)
React란? * 기술면접 질문은 맨 아래에 적혀 있습니다 JavaScript만으로 큰 어플리케이션을 만들 수 있게 되면서 프론트엔드 사이드에서 돌아가는 어플리케이션 구조를 관리하기 위해 다양한 프레임워크들이 등장했다. 이 프레임워크들은 주로 모델(Model)과 뷰(View)로 구성된 아키텍처를 사용한다. 예를 들어, AngularJS의 경우에는 MVW(Model-View-Whatever) 아키텍처로 어플리케이션을 구조화했다. 여기서 모델은 앱에서 사용하는 데이터를 관리하는 영역이고, 뷰는 사용자에게 보여지는 부분이다. 따라서 데이터가 변경되면 데이터가 반영되는 부분을 찾아 수정해야 한다. 그러나 어플리케이션의 규모가 커지고 구조가 복잡해질수록 이 과정이 결코 쉽지 않다. 그래서 페이스북에서는 오직 뷰(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dRQqjE/btscyGBpJcj/Ih8PhYRjceALi1kwlTyf51/img.jpg)
동기 vs 비동기 자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택 을 가지고 있다. 이는 창구가 하나 뿐이라 한 번에 하나의 함수만 실행할 수 있다는 것을 의미한다. 즉, 자바스크립트 엔진은 한 번에 하나의 태스크(task)만 실행할 수 있는 싱글 스레드(single thread) 방식 으로 동작하므로, 이미 어떤 태스크를 실행 중일 때 다른 일은 블로킹(blocking, 작업 중단)이 된다. 이러한 환경에서 코드를 어떤 방식으로 실행할 지 결정하는 것은 중요하다. 이와 관련된 개념인 동기와 비동기에 대해 살펴보자. * 기술면접 질문은 맨 아래에 적혀 있습니다 1. 동기식 처리 모델 동기식 처리 모델 은 태스크를 순차적으로 실행하는 방식으로, 현재 실행 중인 태스크가 종료될 때까지 다음에 실행될 태스크..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eadFMp/btscfCeZfLD/I5eXea7FIaAcvXMme0eKyk/img.jpg)
* 기술면접 질문은 맨 아래에 적혀 있습니다 타이머 1. 호출 스케쥴링 일정 시간이 지난 이후에 함수를 호출하도록 하고 싶다. 이때 사용하는 함수가 타이머 함수 이며, 함수를 명시적으로 호출하지 않고 일정 시간이 지난 후에 호출하도록 함수 호출을 예약하는 것을 호출 스케쥴링 (scheduling a call) 이라 한다. 이러한 호출 스케쥴링을 구현하는 타이머 함수에는 setTimeout과 setInterval이 있다. 2. 타이머 함수 1) setTimeout / clearTimeout 먼저, setTimeout 함수 는 특정 시간(delay)이 지난 후에 콜백함수 func를 1번 실행한다. 이때 특정 시간은 ms(1/1000초) 단위로 적어줘야 하며, 적지 않을 경우 기본값으로 0이 할당된다. del..