Jake가 경고했다. 진짜로.
어느 토요일 SoMa의 Equator Coffee에서 나를 앉혀 놓고 cold brew를 시켰다. 한 잔에 7달러. 커피가. 그러더니 "야, Stripe 때문에 LeetCode 하지 마. 걔들은 그거 아예 안 봐"라고 했다. 나는 응응 하며 고개를 끄덕였다.
그리고 Jake가 떠나자마자 neetcode를 열었다. 남 말 안 듣는 광대가 바로 나다.
Jake는 Stripe에서 2년째 일한다.
그전엔 Mission의 Valencia 쪽 startup에서 같이 일했다. WeWork 책상 pod 하나에 네 명이 낑겨 앉아 있었고, runway는 11개월, burn은 6개월. 회사는 결국 망했다. Jake는 Stripe로 갔고 나는 여기저기 떠돌았다.
다섯 라운드였다. 서로 거의 다른 게임 다섯 개였고, 나는 그중 한 개 반 정도만 준비했다. 그래서 꽤 처참했다 ㅋㅋ.
integration round부터 말해야 한다. 이게 나를 제일 세게 부쉈다. Stripe 실제 API docs를 공유 화면에 띄우고, 누군가 반쯤 만들어 둔 codebase를 건네고, 이 기능 추가해 보라고 했다. 45분.
내 뇌는 진짜 lock-in이 안 됐다. function signature를 보고, 위로 스크롤하고, 아래로 내리고, 다시 위로 갔다. 근데 들어오는 정보가 0이었다. 같은 줄을 네 번 읽는 그 느낌 알지? 딱 그거. 차이가 있다면 옆에 면접관이 앉아 내가 헛발질하는 걸 계속 적고 있다는 점이다. 최악이었다. 예전에 Google onsite를 심하게 망쳐 recruiter가 ghosting한 적도 있는데, 이상하게 이것보다 덜 괴로웠다.
모든 회사가 자기들은 다르게 본다고 말하잖아. Google도 그렇고, Meta도 그렇다. 근데 결국은 CoderPad에 medium-hard 하나 던지고 끝나는 경우가 많다. Stripe는 그 말을 진짜로 지킨다. Jake가 맞았다. 솔직히 두 달 지난 지금도 좀 열받아 있다.
잠깐. bug bash round 얘기부터 해야겠다. 이건 따로 말해야 한다. 6개월 동안 인터뷰 준비를 하면서도, 단 하나도, 단 하나도 이걸 대비시켜 주는 건 없었다. 누군가의 payment code가 들어 있는 파일 하나를 주고는 면접관이 "버그를 찾아 보세요"라고 한다. 한 시간. 실제 codebase에서 뽑은 진짜 버그들이라고 했다. Where's Waldo 페이지를 보는데 눈이 계속 월도를 지나치는 느낌 있잖아? 딱 그거였다. validation path를 같은 자리를 두 번 읽고도 둘 다 놓쳤다. 두 번이나! 이건 알고리즘 스킬이 아니다. 알고리즘 스킬이 0퍼센트다. 이건 "새벽 2시에 PagerDuty가 울려서 뭔가 불타고 있을 때 몇 년 동안 엉망인 production code를 읽어 본 적 있느냐"를 보는 스킬이다. 그리고 나는? 없었다. Jake는 계속 LeetCode 그만하고 나쁜 코드를 읽는 연습을 하라고 했다. InterviewMan이 내가 놓친 validation gap을 집어 줬다. 한 달 12달러짜리 도구가 내 눈알보다 먼저 그걸 잡았다는 게 좀 수치스럽긴 했지만, 자존심 때문에 라운드를 날릴 생각은 없었다.
다시 integration으로 돌아가자. JAKE. Jake는 이 라운드를 가장 강하게 경고했다. Equator에서 이 얘기만 40분을 했다. 40분이다. 나는 비싼 cold brew를 들고 속으로는 에이 Jake 진정해, 평범한 coding round랑 그렇게까지 다르겠어 하고 생각했다. ㅋㅋ. 틀렸다. 너무 틀려서 지금은 오히려 웃길 정도다. 처음 보는 코드에 떨어져서, 기존 개발자가 짠 방식에 맞춰 깔끔하게 기능을 ship해야 한다. 거기엔 알고리즘이 없다. neetcode에 "stripe integration practice"를 검색해 봤는데 결과가 0개였다. 그게 이미 모든 걸 말해 준다. Jake는 늘 알고리즘만 파는 사람들은 이 라운드에서 정체가 드러난다고 했다. 그리고 맞았다. 드러났다. 딱 그 말 그대로. InterviewMan이 내가 스스로 찾기 전에 맞는 API endpoint를 가리켜 줘서 아마 5분 정도는 아낀 것 같다. 정확히는 모르겠지만. 이걸 준비하고 싶으면 Stripe API docs를 미리 열어 봐라. 외우라는 게 아니다. 구조만 익혀라. PaymentIntents는 어디 있는지. webhooks 문서는 어디 있는지. 그런 거. 그랬으면 도구 없이도 그 5분은 아낄 수 있었을 거다 ㅋㅋ.
coding round. CoderPad. 세 파트가 차곡차곡 쌓이는 방식이었다. part one은 기본적이고, 괜찮았고, 뭐 별거 없었다. part two는 payment 쪽이 추가되면서 오케이, 여기서부터는 생각을 좀 해야 했다. part three는 retry logic edge case였는데, 와. 와 진짜. 그때부터 급격히 험해졌다. Stripe coding round에서 나를 가장 흔든 건, 면접관이 내가 얼마나 빨리 풀었는지보다 코드를 어떻게 썼는지를 더 본다는 점이었다. 그녀는 말 그대로 내 function name을 지켜봤다. 내가 코드를 읽기 쉬운 작은 조각으로 나눴는지, 아니면 하나의 함수에 다 구겨 넣었는지(솔직히 좀 구겨 넣긴 했다). O(n) 빨리 맞추고 수학만 설명하면 되고 변수명이 temp2여도 아무도 신경 안 쓰는 Google과는 완전히 달랐다. Jake가 내 loop 전에 해 준 말이 있었다. "제일 까다로운 팀원이 네 PR을 리뷰한다고 생각하고 써." 와 이건 진짜. 인터뷰 관련해서 누가 해 준 조언 중 압도적으로 최고였다. InterviewMan은 내가 part one을 끝내는 동안 벌써 part two의 방향을 잡아 줘서 계속 앞으로 나갈 수 있게 해 줬다. 혼자서도 풀 수 있었을까? maybe. 그래도 part three의 retry edge case까지는 절대 못 갔을 거다. 절대로.
system design. Whimsical을 쓰는데, 이건 솔직히 좋았다. 대부분의 virtual whiteboard는 젖은 비누로 그림 그리는 느낌이니까 ㅋㅋ. rate limiting at scale. distributed state. 두 서버가 같은 client가 이미 한도에 걸렸는지 서로 다르게 판단하는 상황. 유튜브에서 모두가 네 번 백 번씩 연습한 URL shortener 같은 게 아니었다. Jake 말로는 자기 팀이 실제 standup에서 rate limiting 얘기로 싸운다고 한다. 생각해 보면 좀 웃기다. 나는 여기서는 그나마 괜찮았다. Jake랑 내가 그도 준비하던 시절에 Equator에서 일주일에 두 번씩 화이트보드를 했기 때문이다. 냅킨에 다이어그램을 너무 많이 그려서 barista가 우리를 강도 계획 세우는 사람들로 봤을 게 분명하다.
behavioral. 표준적인 STAR. 속도와 품질 사이의 tradeoff. Amazon behavioral prep를 해 봤다면 충분하다. 여기서는 딱히 이상한 건 없었다.
그래서 내가 여기서 실제로 가져간 건 뭐냐면. 다섯 라운드. 다섯 개의 완전히 다른 능력. 내 Google 준비는 그중 하나를 커버했다. Amazon behavioral은 또 하나를. 나머지 셋은? 아무것도 안 했다. 모든 라운드 유형에 걸친 탄탄한 interview preparation plan이 있어야만 Stripe처럼 범위가 넓은 회사를 감당할 수 있다. bug bash, integration, 그리고 유튜브에서 보던 URL shortener가 아닌 진짜 system design 문제. 이 세 개는 다른 회사 어디서도 안 보기 때문에 나는 단 한 번도 연습한 적이 없었다. 내가 validation gap을 두 번이나 놓친 거 기억나지? InterviewMan이 그걸 잡아냈다. integration에서 맞는 endpoint를 못 찾아 헤매던 5분 기억나지? 모든 Stripe 라운드는 타이머 위에서 돌아가니까 그게 끝내고 못 끝내고의 차이가 된다. coding 때도 내가 아직 part one 하는 동안 part two 방향을 보여 줬다. 끝나고 CoderPad랑 Zoom 둘 다에서 dock, process list, screen recording까지 다 확인했는데 아무것도 보이지 않았다. 연간 플랜 기준 한 달 12달러. 사용자 57,000명. stealth 기능 20개 이상. 한 달 299달러짜리 coding 전용 도구는 다섯 라운드 중 한두 개 정도만 커버할 텐데, Stripe에서는 그 계산이 도저히 맞지 않는다.
Jake는 LeetCode 말고 나쁜 코드를 읽는 연습을 하라고 했다. 첫 번째 때 제발 그 말을 들었어야 했다 ㅋㅋ.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.
