재작년 하반기, 예전에 가르쳤던 학생 한 명이 네이버에 프론트엔드 개발자로 면접을 보게 됐다며 자신의 포트폴리오를 보고 의견을 줄 수 있겠느냐고 부탁해왔다. 꽤 좋은 아이디어라고 생각했기 때문에 흔쾌히 해주겠다고 하고 나름대로 몇 가지 조언을 해줬고 결국 합격했다는 기쁜 소식을 들었다. 물론 그 학생 본인이 열심히 노력한 덕이지만 내 조언이 유용했다고 해주어서 뿌듯했던 기억이 있다.
그 후엔 잊고 있었는데 자료를 정리하다 그때 그 학생에게 보내려고 작성해 둔 파일이 나타났다. 비록 대단한 조언은 아니었을지 모르고, 그 학생에게 맞는 조언을 한다고 해준 것이어서 어쩌면 다른 사람들에게는 크게 유용하지 않을지도 모르겠다. 하지만 내 기록을 위해서(글을 작성한 후에는 자료를 지울 예정이다), 두 번째로는 눈곱만큼이라도 도움을 받을 사람이 있을까 싶어 공개적인 장소에 약간 손을 본 후 남겨두기로 했다.
먼저
보통 신입에겐 어마어마한 기술적 소양이 있는지 물어보기보다는 다루는 기술의 기본을 충실히 알고 있는지 확인하는 경우가 많다. 따라서 면접을 앞두고 있다면 지금까지 본인이 잘 안다고 생각했던 것들을 정말 제대로 알고 있는지 확인해보는 게 중요하다.
점검할 수 있는 가장 쉬운 방법으로는 다른 사람에게 설명해보고 그 사람이 이해했는지 점검해보는 게 있다. 대상은 이왕이면 해당 분야에 대해 지식이 없는 사람이면 좋겠지만, 꼭 사람이 아니어도 좋다. 인형을 붙잡고 해도 좋으니 그저 처음부터 끝까지 잘 설명할 수 있는지 스스로 확인해보자. 설명하다 보면 자신의 이해도에 대해 되돌아볼 수 있다. 실제로 이와 비슷한 고무 오리 디버깅이라는 방법이 있다.
포트폴리오
- 가능하면 GitHub이나 BitBucket 같은 Git 호스팅 서비스에 올려두자. 요즘은 SVN이든 Git이든 VCS를 사용하지 않는 업체를 찾기 어려울 정도다. 혹시 VCS를 전혀 사용하지 않는 개발 업체가 있다면 입사를 다시 한번 고민해보라고 진지하게 말하고 싶다. 입사 지원자에게 GitHub 계정 링크를 알려달라는 곳이 해외는 물론 국내에도 꽤 있다. 가능하면 포트폴리오를 앞서 말한 두 서비스 중 하나를 택해서 올려두는 게 좋다. 개인적으로는 GitHub을 추천하는데, 사용자가 더 많아서 문제가 생겼을 때 도움을 구하기 쉽기 때문이다.
- .gitignore 파일에 .idea 폴더나 npm-debug.log 같은 불필요한 파일은 포함되지 않게 설정해두자. 코딩 능력과 상관없는 거지만 기본적인 사용법을 모르는 것처럼 보일 수 있다.
- 커밋 메시지는 의외로 많은 것을 말해준다. 신경 써서 좋은 커밋 메시지를 작성하는 게 좋다.
- 혹여 포트폴리오 소개서를 쓴다면 사용한 기술은 나열은 하되 강조하지는 않는 걸 추천한다. 신입에게는 대단한 기술 스택일지 몰라도 (아마) 면접관들에게는 그리 대단하지 않을 공산이 큰데, 그런 걸 강조하면 오히려 더 없어 보이기 때문. 반면 만에 하나라도 면접관의 관심을 끌 만한 기술이라면 굳이 강조하지 않아도 눈에 띌 것이다.
- 개인 프로젝트라 하더라도 테스트 케이스는 성의껏 작성해두자. 코딩 전에 하든 후에 하든, 어쨌든 작성해 두는 게 좋은 인상을 줄 수 있다.
예상 질문
- MVC 패턴에 관해 설명해보세요.
- 했던 프로젝트에서 nginx를 사용해 성능을 개선했다고 했는데 어떤 식으로 개선한 건가요?
- “RESTful 하다”라고 썼던데 그 말의 정확한 의미가 무엇인가요?
- 프로젝트의 프론트엔드 성능을 개선하기 위해 어떤 방법을 사용했나요?
- 또는 어떤 방법을 사용할 수 있을까요?
- 디버깅은 어떻게 했나요? 특정한 도구를 사용했으면 그것까지 얘기해주세요.
- UI와 UX의 차이점을 설명해보세요.
- 어떻게 보면 전공과 거리가 있는 직군인데, 이 직업을 선택한 이유가 무엇인가요?
- 다른 언어도 배웠던데 굳이 프론트엔드 개발자로 지원한 이유가 있나요?
- XSS(Cross-site scripting)를 설명해보세요.
- 프로젝트별로 기술적으로 가장 어려웠던 점과 극복했던 방법을 한 가지씩만 얘기해보세요.
참고로 기술과 관련한 질문은 아래 링크한 프론트엔드 면접 질문에 방대하고 상세하게 나와 있어서 위 목록에는 당시 해당 문서에 없던 질문만 추가했다.
읽어볼 만한 자료
- 프론트엔드 면접 질문: 번역본에는 빠진 부분이 있어서 가능하면 영어 원문을 참고하길 추천한다.
- 자바스크립트의 이벤트 루프
- 웹 접근성의 개념: 다른 파트까지는 읽지 않아도 괜찮다.
- 겸손한 자바스크립트의 원리
이 자료는 당시 조언을 구했던 학생에게 필요하다고 생각했던 것이므로 면접자의 상황에 따라 충분하지 않을 수 있다.
원문: 코드쓰는사람