부귀영화
토스 프론트엔드 기술면접 후기 본문
22.04.06 토스 기술면접 불같이 🔥 뜨거운 (불)합격🔥 후기
서류 전형과 기술 과제를 통과하고 기술 면접을 열심히 준비했지만 아쉽게도 뜨거운 합격을 맛보게 되었다. 사전 과제에서 답변한 항목과 관련된 JS, React 전반적인 지식과 실무 과제로 제출한 코드를 커밋 별로 혼자 리뷰하면서 준비했다.
기술 면접은 시작하기 20분 전 리쿠르팅 매니저분께서 도와주셔서 구글 미트를 통해 진행했다. 곧이어 면접관분들이 들어오셨고 간단한 인사와 함께 곧바로 사전 과제 리뷰를 시작했다. 에디터 화면을 공유하면서 문제의 요구 사항을 만족하기 위해 어떤 코드를 작성했는 지를 나름 열심히 대답했다.
긴장하지는 않았지만 처음으로 보는 기술 면접이다 보니 장황하거나 어리숙한 모습이 많이 나타난 것이 아쉬웠다. 요구 사항을 만족하기만 하는 코드가 아니라 확장성과 유지 보수까지 생각한 코드를 집중적으로 말하고, 그렇지 않은 코드에 대해서는 개선할 수 있는 방안에 대해서 언급을 했어야 하는데 단순히 어떤 부분을 구현했는 지만 말한 것이 안 좋게 보였을 것 같다.
그다음으로는 다른 사전 과제의 답변들에 대한 추가 질문을 받았는데, 응집도와 결합도를 반대로 말하거나 Redux 라이브러리를 깊게 이해하지 못하고 엉뚱한 답변을 하고 말았다. 전역 상태를 남발하면 안 된다고 답변을 했는데 이유는 잘 대답했지만 그에 대한 해결법은 무엇인지를 제시하지 못했다.
지금에서야 나름 대답하자면 전역으로 상태를 관리하는 것이 아닌 해당 상태를 공유하는 컴포넌트들을 Provider로 묶어서 관리하거나 children props를 이용해 prop drilling 하는 것을 해결법으로 제시할 수 있을 것 같다.
그리고 전역 상태 관리 라이브러리를 사용할 때의 문제점 또한 질문 받았는데 어렴풋이 기억하는 얄팍한 지식으로 서버에 있는 데이터와 클라이언트에 있는 데이터의 상태가 일관적이지 않을 수 있다는 답변을 했다. 아쉽게도 자세하기 설명하지는 못해서 이를 정리하는 글을 작성했다.
사전과제에 대한 리뷰가 끝나고 이력서에 적힌 프로젝트와 관련된 질문을 받았는데, Mount 앱을 개발하면서 스크롤이 될 때 헤더가 줄어드는 기능을 구현할 때 로컬에서 전역 상태로 변환하니 개선되었다고 답변을 했는데, 왜? 어떻게? 전역 상태로 구현하지 그러한 효과가 나타났는 지를 전혀 설명하지 못했다. 또 스크롤 시 짧은 시간 내에 많은 액션을 생성하게 될 때 전역 상태 관리 라이브러리에서 변경 사항의 순서를 보장할 수 있는 방법을 물어보셨는데 구체적인 대답을 하지 못했다.
(면접이 끝나고 해당 기능을 리팩토링 하면서 로컬/전역 상태가 원인이 아닌 React Native Animated의 useNativeDriver를 사용하지 않은 것이 원인이었다)
마지막으로 역으로 면접관분들에게 물어보는 시간이 있었는데, 평범한 질문들을 하고 난 다음 토스 사이트에서 발견했던 오류를 제보했다. https://toss.im/ 에서 콘솔을 보면 알겠지만 로드되지 않는 이미지들이 있는데, 이는 newtossim이 new tossim로 space문자가 URL Encoding 돼서 new%20 tossim로 인식되어 나타나는 문제였다. 제보해 주셔서 고맙다는 말씀을 들었다.
운 좋게 얻은 기회로 기술 면접을 보게 되었지만 아쉽게도 불합격이라는 결과를 받았다. 하지만 오히려 어떤 부분이 부족한 지를 확실히 알 수 있게 되어 다행이라고 생각한다. 이 정도 지식수준으로 합격했다면 오히려 더 힘들었을지도?(애초에 그럴 일이 없겠지만)
당근 면접을 앞두고 있는데 이번 기회를 발판으로 삼아 부족한 부분을 보완하고 다음 면접에서는 내 강점을 더 어필해보도록 하겠다.