커스텀 훅 만들기(board, like, bookmark)
반응형
기술면접 인터뷰
next는 CSR만 지원하는 리액트와 달리 SSR 및 SSG(Static Site Generation)를 지원하여 SEO에 유리하고 서버에서 렌더링을 하기 때문에 애플리케이션 초기 로딩 속도를 향상 시킬 수 있습니다. 또한 페이지 기반 파일 라우팅을 지원하여 라우팅을 하기 위해 별도의 라이브러리(react-router-dom)을 설치할 필요가 없고, 자동 코드 스플리팅으로 최적화에 유리합니다.
nosql인 firebase와 달리 여러 테이블에서 동시에 데이터를 참조할 수 있는 관계형 데이터베이스(SQL)를 지원하여 데이터 관리가 용이하고 rpc함수를 활용해 비교적 복잡한 쿼리도 한 번에 수행할 수 있으며 auth사용자 수에 제한이 있는 firebase와 달리 auth 사용자 수에 제한이 없다는 이점이 있습니다.
타입이 보장되어 앱을 보다 안정적으로 만들 수 있고 에러를 찾기 쉬워 유지보수가 쉽습니다.
리액트를 사용하면 사용자의 입력에 따라서 실시간으로 반응하고 변화하는 ui 를 만들기 쉽고 요소들을 컴포넌트화하여 재사용하거나 작은 단위로 나눠서 개발하기 쉽다는 장점이 있습니다. 또한, 버추얼 돔 사용으로 효율적인 렌더링을 할 수 있고, 쉬운 JSX문법과 다양한 라이브러리와 호환성이 좋다는 점 등의 이유로 리액트를 사용합니다.
애플리케이션의 크기가 커지면 여러 컴포넌트에서 관리해야 할 상태가 많아지고 데이터를 전달하는 과정에서 prop drilling이 생기고 오류가 났을 때도 어디서 오류가 났는지 찾기가 어려워 유지보수가 힘들어집니다. 그래서 전역 상태를 중앙에서 효율적으로 관리할 수 있는 Redux를 사용하기로 했습니다. Redux는 예측 가능한 방향으로만 상태 업데이트 하기 때문에 유지 보수가 쉽고, 중앙에서 상태를 관리하기 때문에 어느 컴포넌트에서나 데이터에 접근할 수 있어 앞서 말한 prop drilling을 피할 수 있습니다.
동기식 프로그래밍은 코드가 순차적으로 실행되는 방식이며 한 작업이 완료될 때까지 다음 작업은 실행되지 않고 기다리게 됩니다. 코드 흐름을 이해하기 쉽지만 작업 시간이 긴 코드가 있으면 다음 작업을 수행하지 않고 대기하기 때문에 그에 따른 문제가 발생할 수 있습니다.
반면 비동기식 프로그래밍은 병렬적으로 코드를 실행하여 현재 진행 중인 작업이 완료될 때까지 기다리지 않고, 다음 작업을 바로 시작하는 방식입니다. Promise, Async / Await 등을 사용한 네트워크 요청에 주로 사용됩니다.
인터뷰 전에 엄청 긴장했는데 되게 편한 분위기에서 진행돼서
준비했던 답을 편하게 말할 수 있었다
(처음인데 생각보다 대답을 잘한다고 말씀 해주셔서 뿌듯해짐 😏)
그렇지만 대답하기 어려운 질문들도 분명 있었기때문에
그 부분들을 더 공부해보려 한다
특히 CS 관련한 부분이나 프로젝트 관련한 질문들.. 😭
(할 게 너무 많네^^)