기술 면접 질문 리스트
- 상태관리를 왜 할까요? 그리고 평소 state 관리는 어떻게 하시나요?
- Redux가 무엇인가요? 왜 Redux를 사용하시나요?
- Redux 말고 다른 전역 상태관리 라이브러리 아는 것 하나와 차이점을 설명해주세요
1. 상태관리를 왜 할까요? 그리고 평소 state 관리는 어떻게 하시나요?
답변: 상태관리는 컴포넌트의 불필요한 리렌더링을 방지하고 앱의 유지보수성을 높입니다. 리액트는 단방향 데이터 흐름을 가지고 있으므로 컴포넌트가 복잡해 질 경우, 상위 컴포넌트에서 하위 컴포넌트로 Props를 전달해야하는 Props Drilling이 발생하는데, 이는 중간 컴포넌트의 불필요한 리렌더링을 발생시켜 웹 성능을 저하시킵니다. 이처럼 애플리케이션의 규모가 커짐에 따라 상태관리가 복잡해지므로 효율적인 상태관리는 버그를 줄이고 애플리케이션을 보다 예측 가능하게 만들 수 있습니다.
클라이언트 상태는 간단한 서비스의 경우 Context API를, 전역 상태 관리 라이브러리로 zustand, redux를 사용하며, 서버 상태는 React-Query를 이용해 관리합니다.
React-Query는 비동기 요청에 발생하는 보일러 플레이트를 간소화하고, 쿼리 키를 기반으로 응답 데이터를 캐싱하여 애플리케이션의 속도를 향상시키고 동일한 데이터에 대한 불필요한 네트워크 요청을 줄일 수 있습니다.
2. Redux가 무엇인가요? 왜 Redux를 사용하시나요?
답변: Redux는 전역 상태관리 라이브러리로 복잡한 애플리케이션의 상태를 효율적으로 관리할 수 있습니다.
Flux 아키텍처의 구현체로 Action, Dispatch, Reducer, Store의 구조로 이루어져 있습니다. 리덕스의 특징으로 3가지가 존재하는데,애플리케이션의 상태를 하나의 단일 스토어에서 중앙 집중적으로 관리하고, 리듀서는 이전 상태값과 액션객체를 전달받고 항상 동일한 입력에 대한 동일한 출력을 보장하며 새로운 상태를 반환하는 불변성을 보장하는 순수함수로 동작해야 합니다.
다른 전역 상태관리 라이브러리와 마찬가지로 규모가 큰 애플리케이션의 props drilling을 최소화하고 불필요한 리렌더링을 방지하여 성능을 최적화합니다. 또한, 형제 컴포넌트끼리 상태를 공유하기 위한 '상태 끌어올리기'등의 작업을 줄임으로서 상태를 보다 효율적으로 관리할 수 있습니다.
3. Redux 말고 다른 전역 상태관리 라이브러리 아는 것 하나와 차이점을 설명해주세요
답변:
사용해본 라이브러리로 Zustand가 있습니다. Zustand의 특징으로 낮은 러닝커브와 반복되는 보일러플레이트를 요구하지 않습니다. 또한 Provider로 감싸지 않아 렌더링 트리를 최소화 할 수 있고, useStore 훅을 사용하면 상태 업데이트가 컴포넌트 리렌더링을 발생시키지 않습니다. 라이브러리의 사이즈 또한 작으므로 더 작은 번들 사이즈를 갖습니다. 가장 큰 차이점으로 Redux는 상태변경을 리듀서에서 수행하고, 액션 타입을 정의하는 등 추가적인 코드를 작성해야하지만, Zustand는 hooks 기반의 간결한 상태관리 API를 제공합니다.
'면접준비' 카테고리의 다른 글
항해99 취업 리부트 코스 후기 (2) | 2024.03.10 |
---|---|
3/8 취준 기록 - 5일차 (0) | 2024.03.08 |
3/7 취준 기록 - 4일차 (0) | 2024.03.07 |
3/6 취준 기록 - 3일차 (0) | 2024.03.07 |
3/5 취준 기록 - 2일차 (3) | 2024.03.06 |