-
안녕하세요, 약 2주일전에 아마존 온사이트 가는길이라고 올렸던 글쓴이입니다.
SDE III 포지션이며 결과부터 말씀드리면 오퍼를 받지 못했습니다.
그래도 경험을 공유해드리면 준비하시는 분들께 미력하나마 도움이 될까 몇자 남겨볼까 합니다.
저는 해외에 거주하고 있고 10년차 개발자입니다. 이번이 두번째 아마존 온사이트 인터뷰였습니다. 첫번째는 작년 5월에 시애틀에서 봤고, 이번에도 역시 시애틀에서 보았습니다.
작년같은 경우는 미국 테크회사들의 인터뷰 포맷이나 흐름을 아예 알지도 못한채 업무 경험만 믿고 (운좋게 폰인터뷰는 통과하였습니다만) 온사이트에 가서 쩔쩔 매다가 왔었어요. 해외에 있는 나를 비행기와 숙박, 보조금까지 보조해주면서 나를 초청했다는 것은 대단한 신호라며 대단한 착각으로 시원하게 인터뷰를 말아먹었습니다.NDA가 있으니 어떤 문제가 출제되었는지 여기에 남길 순 없지만 어떤 식으로 진행을 했는지 공유해드리겠습니다.
인터뷰 준비
1. LeetCode – 일주일 2~3시간씩 약 1년 (인터뷰 2달전부터 매일 2시간)
2. Geeks for Geeks – 일주일 3~4시간씩 약 1년
3. Youtube (System designs) – 약 2달인터뷰 과정
1. 폰인터뷰 – LP + 알고리즘
폰인터뷰는 아마존 뿐만 아니라 많은 기업들에게서 받아보았기 때문에 크게 걱정하지 않았습니다.
다만 이 단계에서 LP를 물어볼줄은 몰랐기 때문에 준비를 안했었는데 다행히 전 해에 보았던 경험을 살려 임기웅변으로 어떻게 대답만 간신히 했습니다.
알고리즘 난이도는 LeetCode Medium 레벨 정도의 문제가 나왔고, DFS를 이용하여 풀이했습니다. 풀이과정 후에는 코드를 복기하며 설명을 해야 했고, 시간/공간 복잡도도 확인했습니다.
분명 잘 풀었는데도, 전화를 끊고 나서는 이걸 잘못했나 저걸 잘못했나 혹시 발 동동 구르며 불안했습니다.
1주일 정도 후에 온사이트 인터뷰 초청 이메일을 받았습니다. 생각보다 결과가 나오는데 오래 걸려 의아했고 사실 반쯤 포기상태였습니다. 연락을 받고 두 해에 걸쳐 연속으로 온사이트 초청을 받아서 더할나위 없이 기뻐서 신나게 집 구석구석 뛰어다녔네요.2. 온사이트 1라운드 – LP + 자료구조 + 알고리즘
아래 남긴 글처럼, 홍콩에서 환승을 하여 시애틀로 갑니다. 인터뷰 하루 전 밤 9시에 도착을 했는데, 심카드에 우버 셋업하고 하다보니 늦어서 호텔에 도착하니 밤 12시가 되버렸습니다. 편의점에서 간단히 샌드위치를 먹고 핫샤워 후 취침했습니다.
제 온사이트 인터뷰는 다음날 오후 1시부터 5시까지 진행되었습니다.
1라운드 테크니컬 문제는 적절한 알고리즘과 자료구조들을 이용하여 풀이해 내는 문제였습니다. LeetCode Medium 레벨입니다. 익숙한 분야였기 때문에 완벽하게 풀어내었습니다. 시작이 정말 좋구나 속으로 생각하며 사력을 다해 풀었습니다.
LP는 역시 준비를 해도 마음에 들게 대답하기는 어렵네요.3. 온사이트 2라운드 – LP + 시스템 디자인
2라운드에서는 시스템 디자인을 물어봤습니다. 아마존의 시스템 디자인 문제같은 경우는 전반적인 시스템 디자인 스킬이 있다면 크게 어렵지 않게 풀어 낼 수 있는 것 같다는 개인적인 의견입니다. 질문을 받고 10분여정도 면접관과 질문 대답을 주고 받으며 requirement를 정확히 파악한 후에 화이트 보드에 그려나가기 시작했습니다.
제가 이것저것 확인차 질문했던 것들이 주효했고 면접관 또한 그에 대해 굉장히 흡족해 했습니다. 1라운드에 이어 이번 라운드도 잘 본 것 같아 속으로 쾌재를 불렀습니다.
LP는 역시 준비를 해도 마음에 들게 대답하기는 어렵네요.4. 온사이트 3라운드 – LP + 문제해결
3라운드에서는 문제 해결 능력을 물어봤습니다. 여전히 코딩을 해야하는 부분인데, 이건 자료구조를 테스트 하는 라운드는 전혀 아니었으며 알고리즘이라고 부르기도 어렵습니다.
문제 자체는 심플합니다. 이 문제를 어떤 방식으로 접근해서 어떻게 풀어나가는지, 또 코딩이 끝난 후 refactor 할 부분이 있는지 토론했습니다. 제게는 이번 라운드가 난해하게 다가왔습니다. 무언가 준비한 것으로 해결해 볼 수가 없는 어떤 복잡 미묘한…
이번 라운드에서는 내가 잘한건지 못한건지 스스로 평가를 내리기 애매 모호했습니다. 이 때부터 불안감이 살짝 엄습했지만, 첫 두라운드를 워낙 잘 보았기에 여전히 이때까지는 낙관적이었습니다.
LP는 역시 준비를 해도…5. 온사이트 4라운드 – LP + 알고리즘
마지막 라운드는 LeetCode 기준 Hard 레벨의 알고리즘 문제가 나왔습니다. 여러 풀이법이 있겠지만, 나중에 복기해보니 Two pointer/sliding window를 이용하여 풀 수 있는 문제였습니다.
사실 LeetCode 준비하며 Hard는 거의 손을 대질 않았기 때문에, 이정도 난이도의 문제를 받으니 가슴이 철렁 내려앉고 머리가 하얘졌습니다. 긍정적인 느낌을 유지하려고 했는데 “아, 못풀겠다. 떨어지겠구나.” 하는 생각이 매 초 저를 괴롭혔습니다. 인터뷰도 많이 봐보았고 이러면 안되는거 아는데도 컨트롤하기 정말 어렵네요. 한참을 설명하다 버벅대고를 반복했습니다. 면접관은 굉장히 친절한 편이셨고 저를 도와주려고 힌트도 주시고 많이 노력하셨습니다.
긴장+당황+수면부족+시차가 한꺼번에 겹치면서 정말 말 그대로 아무생각이 나질 않았습니다. 당혹스러울정도로 머리가 멈추더라구요. 이 순간을 떠올리면 지금도 가슴이 철렁 내려앉습니다. 최소한 brute force 방법으로라도 풀었어야하는데 말씀드렸던 것처럼 머리가 정지하여 그마저도 못했습니다.
LP는 역시 simba….다시 생각하고 싶지 않았지만 결국 다시 복기하고 확인해본 결과 알고리즘 문제들은 모두 LeetCode에서 경험할 수 있는 것들이고 난이도는 Medium – High 였습니다. Easy – Medium을 기대하고 준비했던 제게는 조금 충격이었죠.
여기까지가 제 온사이트 후기입니다.제가 생각하는 개발자는 두 부류가 있다고 생각합니다.
– 정말 타고난 머리를 가지고 있어서 적은 노력으로 알고리즘 / 자료구조를 손쉽게 이해하고 다루며 생소한 문제를 받아도 쉽게 응용해낼 수 있는 부류.
– 그리고 저처럼 평범한 능력치를 가지고 온전히 시간과 노력을 투입하여 근근히 따라가는 타입. 전에 비슷하게라도 경험해 보지 않은 문제라면 당황하는…그래서 저같은 부류의 사람은 실력빨보다는 준비빨에 더 의존을 해야해서, 운7기3이 참 크게 작용한다 생각합니다. 제가 준비했고 자신있게 풀 수 있는 문제들을 받는다면 오퍼를 받을 확률이 오를 것이고, 그렇지 못한 경우는 응용력이 부족한 탓에 이번처럼 또 고배를 마셔야 하는 것 같습니다.
작년 첫 온사이트에서 떨어졌을 때는 뭣도 모르고 그냥 도전했던 거니까 잠시 기분 나쁘고 말았어요. 이번엔 1년여의 시간동안 짬을 내어 차분히 준비했고 자신감도 꽤 붙어 있었습니다. 와? 내가 이제 이런 문제를 풀어? Easy 묻고 Medium 더블로 가! 이러면서 말이죠. (물론 그 1년 사이에 수많은 인터뷰를 봤습니다. 온사이트까지 간 것도 몇 개 있지만 아마존 인터뷰만큼 스스로 준비가 잘 되었다고 느낀 것은 없습니다.)
온사이트 마지막 라운드에서 문제를 받았을때 머리가 하얘지던 경험에서 제가 느낀 것은 단순히 문제를 풀지 못해서 오는 당혹스러움이 아니라, 제 능력의 한계를 느끼게 되는 그런 종류의 어떤 절망감이 아니었나 싶습니다.도대체 어떻게 더 준비를 해야하는걸까?
나는 진정 훌륭한 개발자가 될 수는 없는걸까?
미국의 테크회사들은 내겐 넘을 수 없는 큰 산인걸까?
나같은 사람은 LeetCode 1000문제를 다 풀어보고 가야 붙을 수 있는걸까?
준비를 더하면 붙을 수나 있는걸까? 더 준비하는게 의미가 있을까?스스로를 힘들게 하는 많은 부정적인 생각들이 아직 후유증이 되어 저를 휘감고 있습니다. 며칠 더 속앓이를 할 것 같아요. 그렇게 시간이 지나고 나면 제가 다시 한번 도전할 힘이 생길지는 지켜 봐야할 것 같습니다. 체력적, 정신적으로 지쳤고 또 가장 큰 부분은, 스스로의 한계와 마주하고 나니 자신감이 많이 떨어져 재도전은 사실 잘 모르겠습니다.
제 인터뷰 경험의 공유와 짧은 푸념 읽어주셔서 감사합니다. 혹 더 정보가 필요하신 분들은 이메일 남겨주시면 제가 따로 이메일 드리겠습니다.
준비하시는 모든분들께 행운을 빕니다!p.s: 전에 올렸던 게시글에 응원 댓글 달아주신 분들께 진심으로 감사드립니다.