240109 TIL

chillakilla·2024년 1월 10일

면접 준비를 대비한 질문

1. 상태(State) 관리를 왜 해야할까? 그리고 평소 State 관리는 어떻게 하나?

상태 관리를 진행하면 프로그램이 어떻게 구동될지 예측 가능해지며, 추후에 코드를 유지하고 보수함에 있어 용이해진다고 생각합니다.

또한 여러 컴포넌트 간의 데이터 공유 역시 용이해지며 중복 코드를 방지하고 재사용성이 증가합니다.

유지보수가 좋아지고 코드의 재사용성이 증가한다는 것은 곧 비용 절감으로도 이어진다고도 생각합니다.

redux-toolkit, react-query를 사용합니다.


2. redux란 무엇일까요? 왜 redux를 사용하시나요?

redux는 전역 상태 관리 라이브러리입니다.

여러 컴포넌트에 재사용될 필요한 것을 중앙 State 관리소에 만든 후, 각 컴포넌트에 뿌려 사용하기 용이하고 동작의 예측 및 추론이 쉬워집니다.


3. redux말고 다른 전역 상태 관리 아는 것 하나와 차이점을 말해주세요.

react recoil을 사용해봤습니다.

하나의 저장소, store를 기반으로 둔 redux와 다르게 recoil은 우선 atom을 이용해 여러 개의 저장소를 둔다고 할 수 있습니다.

이는 redux에 비해 몇 가지 장점을 지니는데, 일단 atom을 이용해 보다 모듈화 되고 세분화된 접근이 가능하다는 것입니다.

또한 원자는 특정한 state를 핸들링할 수 있으므로 앱이 덩치를 불릴 때 같이 확장하기가 보다 쉽습니다.

그리고 거대한 하나의 트리를 둔 redux보다, 선택적이고 효과적으로 리렌더링을 유도할 수 있습니다.

단점이라면 redux에 비해 러닝커브가 길고 비교적 덜 직관적이며, 대규모 프로젝트가 아니라면 오히려 복잡성을 유발할 수 있다. 고 볼 수 있을 것 같습니다.


4. 버츄얼 돔과 리얼 돔의 차이를 설명해주세요.

리얼 DOM은 웹페이지 엘리먼트를 트리 형태로 표현한 것입니다.

예를 들어 한 페이지에서 좋아요를 누르면, 문서를 구성하는 요소가 변경되었기 때문에 돔이 트리 형태를 수정하여 사용자가 보고 있는 페이지를 다시 그립니다.

하지만 좋아요 하나가 바뀌었는데 전체 페이지가 리렌더링 되는 것은 비효율적이겠죠.

그러한 점을 개선시키기 위해 등장한 녀석이 버츄얼 돔이라고 볼 수 있습니다.

버츄얼 돔은 리얼 돔의 업데이트 작업을 효율적으로 하기 위해 특정 라이브러리나 프레임워크에서 사용되는 개념입니다.

리얼 돔의 얕은 복사본으로서, 변경점이 생기면 변경 전의 버츄얼 돔과 변경 후의 버츄얼 돔을 생성해서 diffing작업을 거칩니다.

그리고 그 작업을 통해 꼭 필요한 변경사항만 리얼 돔에 적용시킵니다.

이러한 접근 방식은 성능향상과 사용자경험이 좋아집니다.


틈날 때 마다 작성한 것을 혼잣말로 중얼중얼 거리는 것이 머릿속에 오래 남는 것 같다.

profile
꾸준하려 하는 쉽덕놈

0개의 댓글