얼마 전 이직, 면접 준비를 직접 했습니다. 총 준비 기간은 약 3개월 정도였고, FANG과 빅테크 여러 회사에 최종 합격한 후, 연봉 협상을 거쳐 이제 현 회사를 퇴사하고 새 직장으로 이직하게 됩니다. 관련 이야기는 시리즈로 공유할 예정입니다.
대충 생각한 시리즈 내용은 다음과 같습니다.
1탄: 직접 해 본 알고리즘, 시스템 면접 단계별 공부법 그리고 직접 설계한 학습법 공유
2탄: 그 외 준비한 것들
3탄: 6년 만에 이직 준비하면서 배운 점
4탄: 알고리즘, 시스템 설계, 행동 면접 팁
5탄: 면접과 최종 합격 후 꼭 해야 할 일
이번 포스팅은 직접 해 본 준비 방법을 공유합니다.
현재 취업 준비 중인 분들에게 이 글이 조금이나마 도움 되었으면 좋겠어요.
1️⃣ 이직을 결정하게 된 이유
이직을 결정하게 된 계기는 <이직이 필요한 상황인지 판단하기>에 언급한 요소를 따져 보고 스스로 자각하게 되었습니다. (함께 읽으면 좋은 글 참고)
또한 면접은 실무와 다른 스킬이기에 너무 안 해보면 까먹을 수 있어요. 그래서 면접 연습할 겸 겸사겸사 인터뷰해 보면 좋겠다고 생각했어요. 좋은 기회를 만나면 이직하는 거고, 그렇지 못하면 현 회사에 그대로 남더라도 면접 실력을 늘릴 수 있는 좋은 기회라고 생각했습니다.
2️⃣ 면접 준비 자료 수집하기
제일 먼저 면접 자료를 수집했어요. 자료 수집에 관련된 내용은 예전에 자세히 포스팅했기 때문에 생략할게요. 이직 준비할 때 직접 사용했던 자료는 아래 포스팅에 자세하게 공유했으니까 아래 포스팅을 먼저 읽어 주세요.
잘못된 개발자 면접 준비 방법 피하기 (+ 준비 자료)
https://careerly.co.kr/comments/93358
3️⃣ 학습 계획 설계하기
학습 계획까지 설계할 필요가 있나? 라고 느끼실 수 있는데요, 확실히 하고 안 하고의 차이점이 있는 것 같아요. 특히 설계할 때 부족한 점을 객관적으로 판단하고, 이에 맞는 학습 계획을 짜놓으면 확실히 면접 결과가 더 좋은 것 같습니다.
학습 설계 시작 전에 알아둬야 할 점:
회사마다 통상 총면접 기간은 빠르면 한 달에서 길게는 두 달까지 걸린다
정형화된 면접 프로세스가 있지 않고 회사마다 다르다
직급에 따라 면접 포맷이 상당히 다르다
가장 선호하지 않는 회사에 이력서를 먼저 넣고 면접 보면서 연습하는 것도 나쁘지 않다
풀타임으로 이직 준비를 할 수 없으므로 회사와 포지션을 골라서 면접 봐야 한다
그리고 내 경력에 어떤 면접 포맷이 가장 흔한지를 조사해야 합니다. 예를 들면, 해외 취업의 경우 주니어 개발자의 경우 코딩테스트 비중이 거의 90%가 넘지만, 5~10년 차부터 설계 비중이 면접의 30%에서 50% 이상을 차지하기도 합니다(중요: 회사마다 다름!). 그렇다고 코딩테스트가 시니어+ 개발자 면접에는 중요하지 않다는 게 아니라, 코딩테스트를 완벽하게 효율적인 솔루션으로 풀 수 있다는 가정하에 설계와 행동 면접 비중이 높아집니다.
마지막으로 무조건 공부만 하고 면접을 뒤로 미루는 것보다 공부하면서 면접을 연습 삼아 해보는 걸 추천합니다. 어차피 풀타임으로 이직 준비가 불가능하기에 골라서 면접 봐야 하고, 모든 회사의 면접을 한 번에 다 같이 보기 어렵습니다. 그래서 공부하면서 면접하는 걸 함께하는 것도 나쁘지 않아요. 대신, 지원한 회사마다 선호도를 매겨보고 그중에서 선호도가 낮은 곳부터 면접을 보도록 날짜를 잡아서 면접 보면서 연습하는 것도 하나의 전략이라고 생각합니다.
학습 계획
첫 2-3주는 하루에 2-3시간씩 알고리즘 공부에만 집중
알고리즘 개념 복습
LeetCode Easy로 웜 업하기
LeetCode Medium 90%
Tree BFS/DFS
Graph BFS/DFS
Two Pointers
Binary Search
LeetCode Hard 10%
Dynamic Programming
Backtracking
그 후 알고리즘 공부 50%, 시스템 설계 공부 50%
주말에 2,3시간 정도 투자해서 행동 면접 준비
최종 면접 전
회사에 자주 출제되는 코딩테스트 리트코드 문제 10-20개 풀어 보기
최근 회사에 출제된 문제 리트코드 Discussion 섹션에서 확인해 보기
행동 면접 연습하기
4️⃣ 알고리즘 공부
알고리즘 개념 복습하기
제일 첫 단계는 자주 출제되는 코딩테스트 문제의 알고리즘 개념을 복습하는 것! 저는 알고리즘 복습한지 한 1년 반 정도 되어서 이전에 언급한 알고리즘 자료를 훑어보며 개념을 빠르게 복습했습니다. 저처럼 최근에 복습한 적이 없다면 시간을 충분히 두고 개념 공부를 처음부터 다시 천천히 시작하는 것도 좋을 것 같아요. 알고리즘 복습할 때 사용한 자료는 위 포스팅에서 공유했으니, 참조해 주세요 :)
LeetCode Easy로 웜 업하기
그다음 단계는 난이도 하 문제를 풀면서 '웜 업하기'예요. 처음부터 어려운 문제를 풀지 말고 자신감을 높이기 위해 쉬운 문제만 골라서 풀었습니다. 대체로 쉬운 문제는 빠르면 2~3시간 내에 5개 이상 풀 수 있으므로 며칠간 쉬운 문제 풀기만 했습니다. 또한 쉬운 문제를 풀면서 내가 잘 풀 수 있는 문제 유형과 그렇지 않은 유형을 나누고, 부족한 유형이 무엇인지 파악했습니다.
LeetCode Medium 90%
다음 단계는 난이도 중 수준의 문제를 집중적으로 풀어 주는 것이에요. 이때 저는 다음 순서로 주제별로 난이도 중 수준의 문제를 풀어봤어요.
Tree BFS/DFS (BST, Trie 포함)
Graph BFS/DFS
Two Pointers
Binary Search
속도는 중간 수준의 문제 중 통과율이 높거나 익숙한 패턴일 경우 하루에 한 문제당 30분씩 적게는 3개, 많게는 5개까지 풀었습니다. 주말에 하루 종일 알고리즘 공부를 하는 날에는 10개까지 풀었던 적도 있어요.
반대로 한 시간 내에 솔루션을 직접 생각해 내지 못한 경우 하루에 한 개 겨우 푼 적도 있어요. 이 경우 니트코드 영상이나 유튜브에서 솔루션 영상을 찾아서 문제 풀이법을 봤습니다. 문제 풀이법을 보더라도 며칠 지난 후 혼자서 다시 풀어보도록 문제를 모아서 저장해 놓았어요.
그 외에 다음과 같은 개념은 유튜브 채널과 공유한 공부 자료를 통해 복습을 먼저 하고 문제를 풀어봤습니다.
Topological Sort
Union Find
LeetCode Hard 10%
난이도 상 수준 문제의 비중을 크게 두지 않았어요. Backtracking과 Dynamic Programming 알고리즘 개념을 집중적으로 복습한 후 일주일에 두, 세 개 정도 관련 개념의 문제를 풀어봤습니다.
비슷한 문제의 단계별 난이도 풀어보기
Blind 75와 니트코드 150에 언급된 문제 유형도 유심히 봤습니다.
Blind 75: https://www.techinterviewhandbook.org/best-practice-questions/
NeetCode 150: https://neetcode.io/practice
근데 언급된 문제만 푸는 것이 아니라 리트코드에 비슷한 문제를 추천해 주는 기능이 있어요. 자주 언급되는 문제의 경우, 그 문제만 풀고 넘어가는 게 아니라 리트코드에 있는 '비슷한 문제 추천' 기능을 통해 어려운 문제도 함께 풀어봤어요. 난이도가 중이였다면 비슷한 문제 중에 난이도가 상인 문제가 있을시 함께 풀어 봤습니다.
회사에 자주 출제되는 리트코드 문제 10~20개 풀어 보기
예전 자료 찾기 포스팅에 알려드린 방법으로 회사당 최근 자주 출제되는 문제를 찾아보았습니다. 최종 면접 전에 자주 출제되는 문제를 10~20개 씩 2~3일에 걸쳐 풀어봤어요. 이전에 연습하면서 풀어 본 문제라도 복습할 겸 다시 풀어봤습니다.
근데 면접 중인 모든 회사에 자주 출제되는 문제를 풀지 않았고 그럴 시간도 없었어요. 회사 중 코딩테스트 문제를 어렵게 내기로 유명하거나 코딩테스트 비중이 높은 회사 그리고 제가 가장 이직하고 싶은 회사에 자주 출제되는 문제를 풀었습니다.
최근 회사에 출제된 문제 리트코드 Discussion 섹션에서 확인해 보기
예전 자료 찾기 포스팅에서 언급하지 않았지만, 리트코드에서 회사에 자주 출제되는 문제를 보여주는 페이지에 'Discussion' 탭이 있어요. 그 탭을 보면 최근 그 회사에 면접 본 지원자들이 익명으로 출제된 문제를 공유합니다. 직급별로 볼 수 있기도 하고 가장 최근 면접 본 지원자들이 직접 공유한 내용이기에 많은 도움이 되었습니다. 그뿐만 아니라 회사당 어떤 패턴의 문제를 선호하는지 파악하는 데 도움 되어서 최종 면접 전에는 꼭 확인했어요.
예: https://leetcode.com/company/amazon/discuss
그 외에 필요한 코딩테스트 문제 유형 공부하기
회사마다 다르지만 저의 경우 Concurrency 문제 유형을 따로 공부해야 했어요. 리트코드에서 Concurrency로 태그된 문제를 풀어보고 educative.io에서 Concurrency 관련 코스를 듣고 관련 개념을 복습하고 예시 문제를 함께 풀어 봤습니다.
5️⃣ 시스템 설계 공부
현 회사에서 시스템 설계(특히 라지 스케일)를 많이 해봤기에 설계 공부는 딱히 어려움이 없었고 시간이 상대적으로 많이 들지 않았어요. 대신 실무에 사용하는 개념을 다시 복습하거나 익숙하지 않은 시스템 설계법을 따로 공부했어요.
실무에 사용하는 개념 다시 복습하기
매일 자기 전 관련 개념을 자세하게 설명하는 책과 유튜브를 2시간씩 봤습니다. 대신 알고리즘 공부 시간을 줄여서 총 4시간 중에 2시간을 설계 공부에 사용하고 나머지 2시간을 알고리즘 문제 풀기에 사용했습니다 (따라서 50%, 50% 나누기). 책과 유튜브 채널 추천은 지난 포스팅에서 했기 때문에 관련 글을 참조해 주세요. 그리고 복습할 때 노트(예: 구글 도큐먼트)에 중요 개념을 메모했습니다. 시간 있을 때마다 면접에 사용해야 할 중요한 개념을 다시 훑어보며 내용을 정리했던 것 같아요.
익숙하지 않은 시스템 설계법 공부하기
educative.io에 멤버쉽을 가입해서 시니어+ 개발자를 위한 시스템 설계 면접 코스를 들었어요. 코스에 여러 가지 시스템 설계 문제에 나오는 테크닉을 가르쳐 주는데, 관련 내용을 읽고 직접 excalidraw.com에 그려 보면서 개념을 익혔어요.
최근 회사에 출제된 문제 리트코드 Discussion 섹션에서 확인해 보기
코딩테스트뿐만 아니라 시스템 설계 면접 문제도 언급될 수도 있기에, Discussion 섹션에서 어떤 설계 문제가 자주 출제되는지 확인했습니다.
6️⃣ 행동 면접 준비
예시를 노트에 짧게 적어보기
처음에는 도큐먼트에 6년간 일하며 제가 했던 일을 4,5문장으로 정리해서 리스트를 만들어봤습니다. 6년간 근무했기에 공유할 수 있는 예시가 너무 많지만, 한 번에 다 기억해 내라고 하면 의외로 어려워요. 다행히 저는 회사에서 제가 맡은 업무를 기록해 놓는 습관이 있어서 이 데이터를 참고로 리스트를 만들었어요. 참고로 이 데이터는 승진할 때 그리고 이력서를 작성할 때 큰 도움이 됩니다.
면접 보는 회사의 문화에 관해 알아보기
그다음으로 해야 할 일은 가장 선호하는 회사의 문화에 관해 알아보고 그에 맞는 예시를 찾아 보고 최종 면접 전에 말하기 연습하는 것입니다. 채용 담당자에게 물어보면 회사가 원하는 인재상과 기업 문화에 관련된 자료를 공유해줍니다. 큰 회사라면 온라인에 많이 나와 있어서 조사해 보고 그에 맞는 행동 면접 예시를 골라서 최종 면접 전에 익혀두는 것이 좋습니다. 그리고 구인 공고에는 좀 더 필요한 스킬을 자세하게 적어놓은 경우가 많아요. 행동 면접 전에 반드시 숙지하시고 관련 스킬을 사용했던 예시를 면접 전에 익혀두는 것도 좋습니다.
-------------
이번 포스팅에는 면접 통과를 위해 공부한 것을 집중적으로 공유했어요. 하지만 이직할 때 이력서 작성, 나와 맞는 포지션 찾기 등등 준비해야 할 것들이 상당히 많았어요. 이 부분은 2탄에서 자세하게 풀어보겠습니다.
🪴 함께 읽으면 좋은 글
이직이 필요한 상황인지 판단하기
https://careerly.co.kr/comments/93357
개발자가 된 후 저지른 실수들
https://careerly.co.kr/comments/94020
실력 향상을 위한 해외 유튜브 채널 10개
https://careerly.co.kr/comments/88786
기술, 개발 학습 자료 7가지
https://careerly.co.kr/comments/91555
다음 내용이 궁금하다면?
이미 회원이신가요?
2023년 12월 4일 오전 7:53
항상 좋은글 감사합니다...!
@서승혜 읽어 주셔서 감사해요 ☺️
주니어에게도 도움이 많이 되는 글이네요!
@도원 도움되었다니 다행입니당
이직 축하드립니다! 체계적인 글 감사합니다🙏
@호잇 감사합니다, 늘 읽어 주셔서 감사해요 😊
좋은글감사합니다!
너무 좋은 글입니다! 심적으로고 행동적으로도 많은 도움이 될거같아요!
직접 경험하신 이직, 면접 이야기 통해 많은 영감을 얻었습니다! 시리즈로 공유될 이야기 모두 기대됩니다! 특히 3탄 너무너무 궁금해요 🤍 새로운 시작 축하드려요!! 🍀