일단 결과 나옴, 탈락.
진행 : 비대면 면접
//회사에서 진행할 프로젝트에 대한 설명 및 관련 스택에 대한 이야기//
진행했던 프로젝트들에 대해서 설명
협업 시 사용했던 소통 툴에 대해서
자신이 사용하는 기술 스택에 대해서
리액트의 장단점
리액트 쿼리의 기능
scss의 장단점
zustand의 장단점
성능 최적화에 대해서
useMemo, useCallback에 대한 견해
js기술적인 질문들이나 cs관련 질문은 없었다.
회사에서 사용하게 될 스택과 내가 사용하는 스택이랑 어떤 장단점이 있고 왜 사용하는지에 대한 고찰을 묻는 위주의 질문이었다.
면접관님이 말하길, 사용하는 기술에 대한 장단점을 아는게 중요하다고 생각해서 물어보는거다. 라고 하였다.
이거랑 이거랑 비교해서 어떤 상황에서 이게 뭐가 좋아서 쓰고, 저게 뭐가 안좋아서 안쓰고 이런 것들을 중요하게 여기는거 같았다.
생각보다 많이 당황하긴 했다. 사실 사용하면서 크게 고심하지 않은 부분들이었다.
리액트의 장단점에 대해서
장점 : META라는 대기업을 등에 업고 있는 점, 커뮤니티가 크다는 점, 리액트 hook을 사용하다는 점, 컴포넌트를 분리해서 재사용성이 좋다는 점
단점 : 이때 단점에 대해서는 딱히 없는거 같다고 말했는데, seo관련해서 피드백을 받았다...알고 있던 내용이었지만 생각이 안났음. 아 맞다! 이러면서 프로젝트 설명중에 react에서 nextjs로 마이그레이션 했던 이유에 대해서 커뮤니티 사이트이기 때문에 검색어 상위 노출에 대한 seo 때문에 nextjs로 마이그레이션 했었다는 이야기를 바로 덧붙였다.
협업 시에 사용했던 소통 툴
slack, discord, notion을 사용했다고 했으면 추후에 피드백으로 jira를 사용해보지 않은게 아쉽다는 피드백을 받음.
자신이 사용하는 기술 스택에 대해서
html, css, js, react, nextjs, typescript, zustand, emotion, styled-component 등을 언급
리액트 쿼리의 기능
비동기 데이터 패칭, 캐싱, 서버 상태 관리에 도움을 주는 라이브러리
주요 기능으로는 자동리패칭, 쿼리 캐싱, 쿼리 무효화, 무한스크롤링, 페이징 등을 언급
scss의 장단점
먼저 깊이있게 사용해보지 못해서 경험에 기반하여 설명 이후 추가적으로 당시에 보안했으면 좋았을 점에 대해서 이야기를 시작함
예를 들어 mixin을 사용했는데 @import를 통해서 사용하는 파일을 통째로 불러와서 사용했다. 하지만 추후에 공부를 해서 보니 지양하는 방식으로 scss 파일에 언더바를 사용하여 파셜 파일로 사용하여 @use를 사용해서 해당 네임스페이스를 불러오는게 나은 방식이다라는 설명과 css와는 다르게 js처럼 @function이나 @if조건문, @for, @while같은 반복문을 사용할 수 있다는 점을 언급했다. 아, 추가적으로 BEM 방법론을 사용해서 중첩적으로 스타일을 지정해서 일관적으로 사용할 수 있다고 함.
단점으로는 위에 말한 scss에서 사용되는 함수 등 여러가지 기능을 사용함에 있어서 러닝 커브가 큰거 같다 라고 함.
여기서 받은 피드백으로는 앞으로 scss에 대해서 공부하고 사용하는걸 추천하는 것과 단점으로는 css와는 다르게 컴파일 과정이 필요하고 이로인한 설정이 필요하다고 하였다.
(포케허브 할 때는 따로 설정 안했는데, 라고 생각하고 찾아보니깐 webpack이나 vite, next 번들러를 사용하면 별도의 설정없이 컴파일을 해준다고 한다.)
zustand의 장단점
장점 : 낮은 러닝커브, 리덕스나 다른 상태관리 라이브러리와는 다르게 직관적으로 쉽게 구성할 수 있는 store
단점 : 대규모 프로젝트에서 상태관리 시에 store구성이 복잡함
피드백으로는 단점에 말한 내용에 대한 프로젝트 시에 구성되는 예제?에 대한 설명을 하였음
성능 최적화에 대해서
정확하게 뭐라 말했는지 기억이 안나지만 코드 스플리팅에 대한 이야기를 빼먹음, 피드백으로는 코드 스플리팅에 대해서 이야기를 하고 코드 스플리팅이 뭔지에 대해서 꼬리질문을 받음. (chuck 파일을 나누는 것이라고 들음)
그렇다면 어떻게 chuck 파일을 나누는가? 라는 꼬리질문 추가
vite를 예시로 들어서 plugin을 사용할 수 있다고 하였음.
피드백으로는 plugin 이전에 라우팅이나 suspense를 이용해서 가능하다고 함.
개인적으로 코드 스플리팅에 대한 깊이 개념적으로 생각하지 않았음.
그냥 막연하게 사용하던 것들인데 개념적으로 생각을 하지 않았다보니 설명을 못 함.
useMemo, useCallback에 대한 견해
두 훅은 메모제이션을 통해 성능 최적화를 이끌어 낼 수 있다고 하였다.
하지만 개인적으로 두 훅의 필요성이 떨어진다고 말하였다.
그 이유에 대해서 리액트 19에서 지나가듯이 보았는데, 19버젼에서는 두 훅이 사라진다는 글을 토대로 설명함.
피드백으로는 개발자로써 주도적인 의견을 갖는건 좋다 라고 들음 ㅋㅋㅋ...
하지만 useMemo나 useCallback같은 경우 반복되는 작업에 대해서 1/n 만큼의 연산을 방지할 수 있는데 큰 규모의 프로젝트에서 안 쓸 이유는 없다 라는 피드백을 받음.
추가로 프로젝트에서 사용되는 상태관리 라이브러리로는 recoil을 채택이라고 함.
zustand의 경우 위에 말했듯이 대규포 프로젝트에서 부적합하다고 생각해서 recoil을 채택했다 하였음.
개인적인 생각을 말하진 않았지만, 리코일의 경우 META에서 내놓은 자식이라고 생각이 들어서 같은 atomic 패턴의 jotai를 쓰는게 더 낫지 않을까 라고 생각하였음.. 차마 입밖으로 꺼내지 못 함.
댓글