미국 회사 취업하기

박사과정을 졸업하고 미국 회사에 취업하게 되었다. 여름에 무사히 디펜스를 한다면 가을부터 뉴욕에서 소프트웨어 개발자로 일을 한다. 구직과정에서 인터넷 블로그의 도움을 많이 받았기에, 나도 최신의 정보로 나중에 취직하려는 사람들에게 도움을 주고 싶다.

박사과정을 졸업하고는 여러가지 길이 있다. (1) 교수나 포닥이 되어 학교에 남을 수가 있고, (2) 리써치랩으로 가서 박사과정때 하던 것과 비슷한 연구를 하면서도 회사 일을 할 수가 있고, (3) 아예 회사로 가는 길도 있고, (4) 창업을 해서 아예 다른 인생을 살 수 있다. 나는 작년에 1, 2를 포기했고, 4번은 당장 생각이 없어서 3번에 올인해서 구직을 했다.

구직과정, 해주고 싶은 말, 프로그래밍 인터뷰 준비로 섹션을 나눴다. 내 경험은 글에 간간히 들어있다.

=========================

Process: 구직 과정은 보통 아래순서처럼 된다.

(1) 이력서 업데이트: 이력서는 어느 회사나 필요하니 당연히 깔끔하게 하나 준비해야 한다. 분량은 두 페이지면 된다. 한페이지로 고집을 하는 사람들이 있는데, 그건 석사에게 해당하는 거고 박사는 상관없다. 여러 회사의 HR 들에게 물어봐서 확인해봤다.

기존의 이력서를 그냥 내면 안된다. 꼭 이력서를 손봐야 한다. 회사에 취직할때에는 박사과정때와 다른 이력서가 필요하다. 박사과정때에는 Publication 을 위쪽에 두었다면, 그걸 아래로 내리던가 아예 없애야 한다. 리써치랩도 아니고 회사에 지원을 하면 아무도 논문에 관심이 없다. 수행한 프로젝트들을 상세히 기술하고, Skill Set 도 열심히 써주는게 좋다. 특히나 월가의 회사들은 프로젝트들마다 C++ 을 썼다고 해야 좋아한다.

커버레터는 필요한지는 모르겠다. 온라인으로 지원을 한다면 이력서와 함께 커버레터를 넣으라고 하는데, 그럴 때에 커버레터를 열심히 써서 같이 넣어주어야 한다. 만약, 친구나 헤드헌터를 통해서 지원을 하는거라면 필요는 없는거 같다. 커버레터는 "이력서만 보고 자르지 말고 저를 한번 열심히 봐주세요"의 용도인 것 같다. 개인적으로는 몇몇 회사에 온라인으로 지원할 때에 커버레터를 써서 넣었는데, 연락온 곳은 하나도 없다.

별도로 나는 홈페이지 업데이트도 했다. 리써치랩에 갈 꺼면 홈페이지도 볼 것 같아서 그랬는데, 리써치랩을 지원도 안했으니 완전 삽질이 되어버렸다. 회사들은 개인 홈페이지들에 관심이 없다.

(2) 지원하기: 회사를 알아보고 지원하는 데에도 시간이 엄청 많이 걸린다. 막상 지원할 때가 되면, 어떤 회사들이 존재하는지도 잘 모르고, 어떤 경로를 통해서 지원해야 하는지도 막막하다. 중요한건 최대한 많은 네트워크를 통해서 지원하고, 많이 지원하고, 온라인으로도 열심히 뿌리는거다. 그러면 그 중 몇개가 걸려서 연락을 한다.

나는 여러 경로를 통해 30여개의 회사에 지원을 했다. 우선, 헤드헌터를 통해서 월가의 회사 4곳을 지원했다. 대략 박사과정 3~4년차때 정도부터 헤드헌터들이 이메일로 나에게 연락을 했고, 나는 그럴때마다 진짜 졸업할때 쯤 다시 연락을 하겠다고 했다. 진짜 졸업할때가 가까워져서 다시 연락을 했고 그 중 가장 친절한 헤드헌터가 지원을 해줬다.

친구들을 통해서도 (Employee Referral) 지원을 많이 했다. 검색의 G회사는 친한 형님이 이력서를 넣어주셨고, 카이스트 동문 친구의 인맥을 통해 SNS 회사인 T사, 책파는 A사, 스트리밍의 N사등을 지원했다. 그 외에도 지인과 랩메이트 인도인 친구를 통해 20여개의 회사를 지원했다 (소셜의 F사, 인맥소셜 L사, 데이터베이스 O사 등, 유명한 전산회사는 다 지원한 것 같다). 이 인도인 친구가 대박인게 모든 회사에 자기 친구들이 다 있어서 이메일을 써서 넣어주었다. 평소에 인맥 좋은 친구를 사귀어두자!

학교에서 하는 회사 설명회 (Career Fair) 에서도 이력서를 많이 넣었다. 1월 말에 전산 빌딩의 로비에서 크게 했는데, 이 때에는 그냥 이력서를 뿌려주고 오는 것 이외에는 큰 의미가 없다. 엄청 많이 이력서를 뿌렸는데, 여기서 걸려서 연락온 곳은 로컬검색의 Y사 하나였다. 돌이켜보면 그냥 시간낭비였다.

이외에도 그냥 온라인으로 지원하는 방법도 있다. 나중에 연락이 하도 안와서 온라인으로도 엄청 뿌려댔는데 그래서 걸리는 것도 있었다.

(3) 전화 인터뷰: 지원을 한 후에는 연락이 오기를 마냥 기다려야한다. 30개의 회사를 지원을 해서 2주내에 연락이 오는 곳은 채 5곳이 안되었던 것으로 기억한다. 너무 초조해서 온라인으로 넣고 더 지원하고 중복으로 넣고 했었다.

이력서가 맘에들면 이메일로 전화인터뷰를 하자한다. (이 과정 전에 온라인 문제푸는 걸로 테스트를 할 수도 있다. 책파는 A사의 몇몇 부서를 포함 소수의 회사들이 이 과정을 요구한다.) 이메일로 서로가 가능한 시간을 체크하고 대략 한시간 정도의 전화 인터뷰를 한다.

전화 인터뷰는 이력서를 바탕으로 내가 수행한 프로젝트들을 물어본다. 내 일을 영어로 말하는 것은 학회나 학교에서 맨날 하던 일이라 전화로도 쉽게 했는데 다들 그렇지는 않은 듯하다. 이 과정에서 버벅이면 너무 아쉬우니 꼭 연습해두자.

이력서를 얘기하는 건 보통 10분이고 나머지 40여분은은 코딩인터뷰를 한다. 심지어 G사와 F사는 "너네 우리 어떻게 전화 인터뷰하는지 알지? 바로 코딩하자." 라고 했다. 코딩인터뷰는 G사의 경우에는 자사의 편집기를 통해서 하고, 나머지 회사들 공동편집기 사이트들을 통해서 인터뷰를 진행한다. 웹사이트에 인터뷰어와 내가 접속을 하고, 인터뷰어가 문제를 온라인으로 내 주고 내가 풀면서 코딩을 하는 방식이다.

전화 인터뷰는 아무래도 전화다보니 영어가 딸리는 우리는 너무 삽질이 심하다. 꼭 품질이 좋은 헤드셋을 사용해서 목소리가 안들려서 삽질하는 상황은 없게 하자. 나는 윈도우를 만든 M사와 통화를 할때에 전화 품질이 너무 안좋아 인터뷰어가 짜증을 내서 망친적이 있다. 전화에서 프로그래밍 문제 하나로 탈락하면 너무 아쉽지 않은가? 7년이나 박사를 했는데, 겨우 문제 하나로...

나는 전화인터뷰를 한 곳은 월가 회사 2곳, 스타트업 회사 한곳, 윈도우 M사, 검색 G사, 검색 Y사, 로컬검색 Y사, 소셜 F사였다. 지원은 30곳도 넘게했는데 전화를 한 곳이 10곳도 안되니 맘고생이 장난아니었다.

(4) 온사이트 인터뷰: 전화 인터뷰를 통과하면 여행경비를 대주면서 자기 회사에 와서 온사이트 인터뷰를 보라고 한다. 나는 동부에 살기 때문에 보통 하루전에 비행기를 타고 SFO/SJC로 간 후에 호텔에 숙박하고, 다음날 하루종일 인터뷰를 보고 저녁에 돌아오는 일정이었다. 3월에 4번이나 샌프란 지역을 갔는데, 가는데만 5시간 걸리는 비행을 왕복으로 4번이나 했으니 비행기에서만 적어도 20시간을 보낸거다. 엄청 힘들었다...

온사이트 인터뷰는 보통 하루종일이다. 45분~1시간짜리 인터뷰를 4개정도 본다. 프로그래밍 문제를 화이트보드에 풀게 하는 인터뷰가 많고, 내 리써치를 자세히 물어보는 인터뷰들도 있었다. 각각 회사들마다 온사이트 인터뷰들이 너무 다르니 맞춰서 잘 준비해야한다.

첫 온사이트 인터뷰는 스타트업이었다. 구글에서 파일시스템을 만드신 분이 나와서 창업을 한 회사다. 회사는 구글의 파일시스템보다 진보된 분산 파일 시스템을 만들려 한다. 이미 $15M이란 펀딩을 받아 나름 검증이 되어 괜찮아 보였다. 아직 직원이 10명밖에 안되는 초기 상태라서 들어가서 3~4년 버티면 백만장자가 될 가능성도 보였다.

인터뷰는 45분짜리 코딩 문제 4번이었다. 여기서는 내가 준비한 문제들이 전혀 안나왔다. 코딩으로 알고리즘을 물어보기 보다는, 시스템의 관점에서 해결하는 문제들을 냈다. 예를들어, 10 Billion document가 있고 그 안에 스트링들이 있을때에 중복되는 쌍을 어떻게 찾냐? Client가 접근할때마다 카운터를 올려주는데, 최근 1초, 1분, 1시간마다의 값을 반환하는 카운터를 어떻게 디자인할까? 등등의 문제들이 있었다. 시스템 디자인 문제들에 약했는데 첫 회사에서 디자인 문제들 공격을 받고 나니 엄청난 멘붕이 왔다.

두번째 온사이트 인터뷰는 로컬검색 Y사였다. 이 회사는 45분짜리 인터뷰 4개를 본다. 점심먹기 전에 하나, 점심을 먹고, 점심먹은 후에 3개를 본다. 모든 인터뷰의 형식이 완전 같다. 처음에는 왜 이 회사를 택했냐? 이 회사의 서비스를 써봤냐? 개선점이 있냐? 등등의 질문을 하고 내 기존 일도 20분정도 물어보면서 대화를 해나간다. 그러면 프로그래밍 문제를 풀 시간이 25분 정도밖에 안남으니 정말 간단한 문제들만 물어본다. 모두 준비해간 예상한 문제들이어서 쉽고 편하게 했다.

세번째 온사이트 인터뷰는 월가 T사였다. 4번의 인터뷰를 보긴 하지만 각각의 인터뷰가 1시간 반이다. 다른 회사들이 아침 11시쯤 천천히 부르는 반면, 여기는 아침 9시반에 불러서 아침에 두번, 점심, 오후에 두번 인터뷰를 본다. 월가 회사들은 인터뷰에 비인간적인 면도 있는데, 오전 인터뷰를 잘 못하면 점심을 먹고 바로 집으로 돌려보낸다. 후덜덜하다... 

월가의 회사들은 전통적인 코딩 문제들 이외에도, 수학문제들이나 브레인티저라 불리는 퀴즈 문제들을 내기로 유명한다. 나는 이 회사에 올인을 할 생각이 아니었기에 그런 문제들은 대충 훓어만 보고 갔는데 운좋게도 소프트웨어 문제들만 받았다. 각각의 인터뷰마다 쉬운 문제들을 여럿을 내고, 때로는 컴퓨터로 코딩을 시키기도 한다. 리눅스였음에도 이클립스가 깔려있어서 자바로 쉽게 코딩을 했다. 

월가의 회사들에는 아는 사람도 없고 정보도 없었기에 갈 마음없이 편하게 봤다. 그러다보니 의외로 좋은 결과가 나왔다.

네번째 온사이트 인터뷰는 데이터베이스 O사였다. 이 회사는 선발과정이 정말 특이하다! 서류를 넣고 한달쯤 지나 온사이트에 오라는 이메일을 받았다. 전화 인터뷰의 긴장없이 공짜 여행이 한번 더 생겼다. 

다른 회사와 또 다른 점은 나를 원하는 부서들과 인터뷰를 한다는 점이다. 다른 회사들은 랜덤 인터뷰어들이 나의 일반적인 프로그래밍, 전산 실력을 물어보는 반면, 이 회사는 나를 원하는 부서들과 그 부서에 맞는 얘기들 (잡담들) 만 한다. 다른 회사들 면접들 보다는 훨씬 편하다. 

면접을 이틀이나 봤는데 첫날은 데이터베이스 쪽의 한개 부서, 두번째 날은 자바 언어쪽의 4개 부서와 면접을 봤다. 첫날 본팀은 회사에 돈을 벌어주는 핵심 팀이고, 두번째 날 본 팀들은 자바 언어 자체의 일을 하는 팀들이라 각각의 매력이 충분히 있었다. 정말 큰 회사를 조금 엿볼 수 있는 좋은 기회였다.

마지막 온사이트 인터뷰는 소셜 F사였다. 구직 초반 가장 가고 싶은 회사가 검색 G사와 소셜 F사였는데 전화를 통화한 것은 소셜 F사여서 여기에 올인을 했었다. 이 회사는 G사처럼 사람들을 뽑고, 첫 6주동안 bootcamp 를 하면서 하고 싶은 일을 찾게 해서 배치를 시킨다. 물론 인터뷰도 랜덤의 사람들이 들어와서 완전 프로그래밍 문제들만 4번 물어본다. 개인적으로 생각하기에 G사, F사는 순수하게 프로그래밍 면접 준비를 열심히 잘 해야 갈 수 있는 곳이다.

각각의 회사들마다 쓰고 싶은 말이 훨씬 많은데 글이 쓸데없이 길어져서 내 잡담은 줄인다. 온사이트 본 곳들중에서는 F사들 빼고 나머지 4곳에서 오퍼를 받았고, 월가의 (정확히 월가는 아니고 소호에 있는) T사에 입사하기로 했다. 

=========================

Advice: 구직활동을 하면서 들은 조언들과 내가 깨달은 것들에 대해서 적어본다. 미국에서 취업하려면 이 조언들을 전부 실천하기를 권장한다.

(1) 많은 회사에 지원해라: 지원을 하는 초반에 받은 조언이다. 내 경험상 나에게 가장 중요한 조언이었고, 다른 많은 사람들에게도 중요할 것이라고 본다. 지원을 많이 해야 그 중에 몇개라도 걸려서 인터뷰 기회라도 준다. 그 중에 몇개는 물먹을꺼고, 몇개는 오퍼를 받을꺼다. 그 오퍼도 여럿이어야 협상도 가능하다.

다른 측면으로는 많이 지원해야 업계에 대해서 많이 알고, 가고 싶은 곳을 더 정확히 찾을 수 있다. 나는 월가의 회사들에 대해서는 전혀 몰랐는데 나중에 합격하고 그 업계에서 일하는 사람들과 얘기하면서 좋은 점들을 많이 알게 되었다. 더 많이 지원하고 더 많이 알아봐라.

(2) 여러 루트를 통해 지원해라: 위에 썼듯이, 친구를 통해서 지원하거나, 온라인으로 지원하거나, 회사 설명회에서 지원하는 등의 여러 방법이 있다. 나처럼 한가지 방법으로 지원했다고 다른 방법으로 지원하지 않는 실수는 하지 말았으면 한다. 회사별로 HR별로 이력서를 관리하는 방법이 너무 다르기에 한 방법으로 지원하면 아예 이력서가 무시되는 경우가 많다.

개인적으로 인터뷰 기회가 너무 적어서 맘고생을 너무 많이 했다. 박사과정 7년이나 하고 아예 인터뷰기회조차 거의 없으니 인생을 낭비한 느낌도 많이 들었다. 반면 석사만 하고 이력서를 내는 경우에는 다양한 회사들에서 금방 전화들이 온다. 삶이 허무해진다. 그래도 낙심하지 말고 여럿 지원하고 조금 천천히 기다려야 한다. 나는 2월초까지 지원을 마치고 2월에 전화인터뷰들, 3월에 온사이트들을 다녔는데... 이제서야 전화 인터뷰하자고 하는 회사들이 여럿 있다.

맘고생을 피하려면 지원할 당시에 최대한 많은 경로로 많이 넣어라.

(3) 회사에 맞춰서 준비를 해라: 이건 아무도 말해주지 않은 정말 중요한 정보다. 위에 썼듯이 회사들마다 인터뷰 과정이 너무 다르다. 대부분의 회사들이 프로그래밍 문제들을 많이 물어봤지만, 부서별로 달리 심사하는 O사가 있는 한편, 인적성을 많이 물어보고 회사의 애착심에 관한 문제를 많이 물어보는 로컬검색 Y사가 있었다. 이런것들은 미리 알고 가는게 좋다.

또한, 회사들이 좋아하는 인터뷰 문제들도 너무 다르다. 내가 본 스타트업회사는 시스템 기반의 디자인 문제를 중점적으로 물어봤고, 책장사하는 A사도 큰 스케일의 시스템 디자인 문제를 많이 물어본다고 들었다. 로컬검색 Y사는 회사가 작다보니 그 문제의 셋도 작아서 문제 리뷰사이트의 그 회사 문제들을 보면 그 안에서 거의 다 걸린다. 프로그래밍 문제가 다양하고 어렵기로 악명 높은 G사와 F사는 그저 많이 풀어보고 쉬운게 걸리기만을 바래야 한다.

(4) 스케쥴링을 잘해라: 아무래도 긴 인터뷰는 많이 해본적이 없을테니 실전 연습을 좀 해야 한다. 덜 가고 싶은 회사들을 앞으로 스케쥴해서 연습이라 생각하고 면접을 보고, 가고 싶은 회사는 나중으로 스케쥴해서 최선을 다해서 면접을 봐라. 나는 로컬검색 Y사를 앞으로 두고, G사 F사는 뒤로 놓았는데... 생각보다 별로 효과가 있진 않았다.

그리고, 온사이트 인터뷰들은 2~3주내에 한번에 다 봐버려야 한다. 회사들마다 오퍼를 주고 결정할 시간을 보통 2주를 준다. 그래서, 첫 오퍼를 받고 2주내까지 마지막 회사의 인터뷰를 끝내 놓는 것이 좋다. 아니면, 첫 몇개의 오퍼를 버려야 하는 상황이 올 수도 있다. (물론 배부른 고민이겠지만... 나름 엄청 어려운 고민이다.)

(5) 시간을 많이 투자해라: 좋은 프로그래머가 면접을 잘본다? 당연하다. 그러면 좋다... 하지만, 현실은 면접 준비를 잘하는 학부생, 석사생 애들이 박사생들보다 훨씬 면접을 잘본다. 인터뷰 몇시간에 내 평가를 끝내는데, 그 짧은 시간동안 강한 인상을 주려면 아무래도 미리 준비를 하는 수 밖에 없다.

우리 랩의 중국인 석사 학생은 여름에 샌프란의 CRM회사인 S사에서 인턴을 하며 내내 인터뷰 준비를 했다. 게다가, 가을에도 리써치를 거의 포기하고 내내 프로그래밍 인터뷰준비만 한 결과, 소셜 F사, 로컬검색 Y사, 인맥소셜 L사 등등 원하는 모든 회사에 오퍼를 받았다. 오퍼를 많이 받으니 협상도 잘해서 내가 아는 석사생들중에는 가장 좋은 조건을 받았다. 내가 아는 왠만한 박사들보다 더 높은 조건이다. 돈이 가장 중요한 것은 아니지만... 몇달 준비를 잘해서 5년 이상 박사과정을 한것보다 더 좋은 조건을 받았다고? (...) 열심히 준비하길 바란다.

(6) 협상이 중요하다: 많은 오퍼를 받으면 협상이 가능하다. A와 B회사에서 오퍼를 받았다고 하자. A가 10만불, B가 11만불의 연봉을 주고, A의 회사가 더 가고 싶다고 하면 A회사에다 B회사의 조건을 말하면 된다. 그러면 보통 기본급은 맞게 올려준다. 이 경우에는 11만불로 맞춰준다. 아주 차이가 많이 나는 경우에는 맞춰주지 않지만, 비슷하면 대략 맞춰준다고 보면 된다. 

나도 오퍼가 여럿이라 Y사의 기본급에 맞게 T사의 기본급을 올렸다. 이 과정에서 신기한게 다른 회사에서 얼마를 주기로 했다고만 말하면, 다른 회사에서 보통 맞게 올려준다. 사람들에게 알아보니 구체적인 오퍼레터를 보여주는 것은 불법이라서 문서 자체를 요구하지는 않는다고 한다. 달리 생각하면 블러핑으로 회사에게 다른 큰 오퍼가 있다고 할 수 있는데... 나는 간이 작아서 그렇게는 못할것 같다.

어쨌든 협상은 엄청 중요하다. 실제 회사에 들어가면 기본급은 일년에 1~2% 오르는 경우가 많다. 이직을 해야만 그나마 많이 올릴 기회가 생기는거다. 그런데, 초반 협상을 통해서는 만불씩 올릴수 있다면? 협상 잘하길 권장한다.

=========================

Programming Interviews: 소프트웨어 회사 면접에 가장 핵심인 프로그래밍 문제푸는 인터뷰 준비 방법이다.

(1) 프로그래밍 언어를 택해라: 프로그래밍 인터뷰는 한 언어를 정해서 본다. 보통 C++, Java, Python 중에 정해서 보는데 그 중에 하나는 자유자재로 써야 한다. 나는 박사 내내 메인으로 사용한 Java 를 택했다.

자유자재로 사용함은 여러가지 의미가 있다. 우선 기본적인 API는 달달 외워야 한다. 평소에 코딩을 할 때에 API들을 인터넷에서 찾아보고 하겠지만, 인터뷰에서는 그럴 시간이 없다. String, Array, List, Map 관련 함수들은 달달 외우고 있지 않으면 기본 문제들을 풀 수가 없다. 

가끔 언어의 내부적인 내용도 많이 물어본다. 예를들어 Java라고 하면 Java의 garbage collector 는 어떻게 구현되어 있나? interface/class 의 차이가 뭔가? hashmap 이 어떻게 구현되어 있는지 아나? iterator 가 어떻게 동작하는지 써볼 수 있어? 등등 너무 많다. 모든걸 다 준비할 수는 없겠고, 준비하는 기간만이라도 내부 소스코드들을 보는 연습을 하기를 권한다. Java 는 JDK를 깔 때에 소스코드까지 깔리니 기본 자료구조들은 소스들을 대충 봐두자.

(2) Cracking The Coding Interview (CTCI) 를 외워라. 두번 외워라: 예전에는 다른 책이 인기였지만, 요즘은 이 책이 바이블이다. 책의 최신판을 아마존에서 사서 책이 닳아버릴때까지 보기를 권장한다 (pdf 버전도 구글링 하면 받을 수 있다). 나는 실제로 그렇게 해서 온사이트 인터뷰들 전에는 모든 문제를 달달 외울 정도였다. (물론 일반 박사과정이 이런 짓을 할 시간은 없다. 나는 운이 좋아 지도교수님이 1월에서 3월까지 인터뷰에만 집중하게 해주셨다.)

책은 17단원으로 되어있어서, 1~4단원은 기본 자료구조 (array, string, list, stack, tree) 문제가 있고, 그 후에는 여러 알고리즘 문제들, 디자인 문제들이 있다. 처음에는 각각의 단원들의 설명을 훓어보며 잊고 살았던 전산학의 개념들을 다시 상기시킨다. 

그리고 문제들을 꼭 코딩을 해서 풀어라. 이 책의 문제들의 Java, Python 답들이 온라인에 있다. 꼭 컴퓨터로 코딩을 해서 돌려보고 다운로드 받은 답들과 비교를 해본다. 인터뷰들에서는 코딩을 쓰게 시키기 때문에 책만 훓어봐서는 실제 인터뷰에서 버벅이기 쉽상이다.

(3) 온라인 문제를 풀어라: leetcode라는 아주 좋은 사이트가 있다. 현재 151개의 문제가 있다. 각각의 문제는 한 페이지로 되어 있고, 그 페이지에 내가 원하는 언어로 답을 넣고 제출을 하면 정답인지 확인을 해준다. 퀴즈를 푸는 재미도 있어서 책만 보기 지루할 때에 같이 풀기에 좋다.

중국애가 자기는 여기 문제들 다 두번씩 풀어봤다고 했을 때에 엄청 놀랬다. 나는 절대 못할꺼라고 생각하고 대충 보고 면접들을 보겠다고 했는데... 역시나 대충만 풀고 면접을 보니 전화 면접들에서 엄청 삽질을 했다. 특히나 봤던 문제들이 전화 면접에서 생각이 안날 경우에는 너무 속이 상했다. 그래서 결국 나도 이 문제들을 다 두번씩 외우도록 풀었다. (...)

각각 문제로 구글링을 하면 블로그 포스팅들이 많다. 나도 몇달전부터 준비했으면 블로그에 문제들 포스팅하면서 풀었겠지만... 그럴 여유는 전혀 없었다.

(4) 친구와 준비를 해라: 면접준비는 혼자하기에 너무 고통스러운 과정이다. 유학준비를 위해 GRE공부를 할 때에도 혼자서하기는 너무 힘들지 않나? 이것도 마찬가지다.

게다가 상대방과 상호소통하는 과정은 혼자서 연습이 절대 불가능하다. 문제를 푸는것 자체도 엄청 중요하지만 (아예 못풀면 꽝이지만), 문제를 풀어도 더 효율적으로 문제를 푸는 방법이 없냐는 질문을 거의 항상 받는다. 혼자서 연습하다보면 컴파일이 되서 돌아가는데에 좋아서 만족하는데... 누군가가 그 코드를 보고 까줘야 배우는게 있다.

또한 디자인 문제들은 그게 너무 심하다. 여기서 말하는 디자인 문제는 시스템 설계를 어떻게 하냐는 것이다. 나는 박사 과정동안 OS 수업도 안듣고 시스템 관련 수업을 전혀 듣지 않아 이 부분이 너무 약했다. 몇개의 layer 로 어떤 server 를 얼마나 두고 어떤 failure 방지 시스템을 넣느냐... 이런거는 많은 지식과 경험을 바탕으로 술술 말해야 하는건데... 이게 너무 약해서 준비하면서 엄청 스트레스를 받았고 실제 면접에서도 잘 못했다. 잘하는 친구들에게 도움을 받자.

(5) 회사에 맞게 준비를 해라: 1~4의 과정을 한 후에 어느 정도 준비가 되면, 마지막으로 면접 전에는 회사별로 준비를 따로 해야 한다. 이 과정이 정말 중요하다. 앞에서도 언급했듯이 로컬검색 Y사는 인터넷 후기사이트에 나온 문제들이 거의 그대로 나오기 때문에, 후기 사이트들을 열심히 보는 것만으로 좋은 결과를 얻는게 가능하다. 물론, G사, F사는 회사도 크고 문제의 셋도 너무 다양해서 같은 문제가 걸릴 확률이 적긴 하지만... 최근의 후기들을 봐서 나쁠건 없다.

(6) 다음의 리소스를 이용해라:
  • careercup.com: 프로그래밍 인터뷰 후기 사이트. 개인적으로 너무 난잡해서 싫다.
  • glassdoor.com: 면접후기/연봉이 올라오는 사이트. 가끔 열심히 써주는 글들이 있어서 인터뷰 분위기를 잘 알고 들어갈 수 있다. 개인적으로는 회사들 면접보기 전에 이 사이트의 글들을 거의 전부 다 읽고 들어갔다.
  • geeksforgeeks.org: CTCI, leetcode 에 나오지는 않지만 잘 모르는 전산학의 기본 문제들 (e.g., finding shortest path) 이 잘 정리되어 있다. 월가의 회사들은 CTCI, leetcode 들에 있는 응용문제들도 물어보지만, 아예 전산학의 기본 문제 자체를 아느냐고 물어보기도 한다. 알고리즘책을 한권 정독하고 가면 된다... 는 원론적인 얘기고 나는 이 사이트에서 궁금할때마다 찾아봤다.
  • javarevisited: Java관련 심도있는 글들이 블로그 기사 형식으로 있다. 토픽별로 구글링해서 보면 될 듯.
  • google, stackoverflow: 그 외에 모든 궁금한 것들은 삽질로 찾아봐야 한다. 굿럭!

=========================

인생 어떻게 될 지 모른다. 반년전까지만 해도 리써치를 버리고 소프트웨어 개발을 하리라고는 생각지 못했고, 세달전까지만 해도 산호세가 아닌 뉴욕에 가리라고 생각도 안했다. 일년 후에는 소프트웨어 개발을 아예 버리고 금융을 하겠다고 할 수도 있다. :)

핑백

  • 미국내 소프트웨어 엔지니어 잡서치 후기 | Enjoy Programming Life 2015-06-17 00:26:17 #

    ... 할 수 있는 한도 내에서 최대한 알려드리겠습니다. 마지막으로 제가 도움 받았던 다른 글들 링크 걸어둡니다. art.oriented : 하나에 몰아 쓰는 구직 인터뷰 종합 정리 미국 회사 취업하기 ‘구글 개발자가 되는 방법’…구글 입사 지원 절차의 A to Z Getting a job with Microsoft The Five Essential Phone-Scr ... more

덧글

  • 불대 2014/04/16 07:50 # 삭제 답글

    처음에는 덧글 막혔던것 같은데 이제 덧글달릴수있게 되었네요!
    정말 대박 유용한 정보인것같아요! 웹상에서 누구나 접근한 공짜 정보라기엔 너무 퀄리티와 가치가 높은..
    다시한번 오퍼축하드려요~!ㅎㅎㅎ
  • tomowind 2014/04/16 10:58 #

    머리속에 있는걸 그대로 덤프한거라서 너무 길고 재미없지.
    그래도 도움되는 사람들이 있을테니 썼어.
    너 꼭 잘되면 좋겠다.. ㅎㅎ
  • 김민장 2014/04/22 08:03 # 답글

    글 정말 재밌게 잘 봤다. 월스트리트 부럽다.. 그리고 어려운 문제 좀 정리해서 알려줘.. ㅎㅎ
  • tomowind 2014/04/23 05:07 #

    형이야 프로그래밍 인터뷰만 하시면 되실텐데요... 그럼 dynamic programming, recursion 등등만 조금 연습하시면 되죠. 제가 leetcode 문제들 분류해 놓았으니 나중에 이직하실때 그것들 조금 풀어보고 가시면 될듯요. :)
  • 핑크개구리 2014/06/21 04:36 # 삭제 답글

    이글보니깐 오빠가 천재로 보인다능 @.@ 넘 많이 놀려서 후회가 되넹~~ ㅋㅋ
    월스트리트가는 남자로구낭~~~
  • 2014/06/21 04:39 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 빈돌 2015/05/22 18:00 # 답글

    너무 유익한 글이에요! 일단 먼저 축하드릴께요 ^^ 저는 한국에서 개발자 해외 취업 커뮤니티 "나가자"를 운영하고 있습니다. 너무 좋은글인것 같아 많은 분들이 보실수 있게 커뮤니티에 올리고 싶은데 괜찮을런지요~
  • Sangmin 2015/05/31 06:18 #

    네, 그럼요. 제가 몇달에 한번 들어와보는 곳인데 운좋게도 10일 이내에 답글 다네요. ㅋㅋㅋ
  • 빈돌 2015/06/02 12:10 #

    ㅎㅎ 제가 운이 좋았군요! 감사합니다~~ (이글 보시려면 또 오래 걸릴테니) 6월 내내 즐겁고 행복하세요~~ㅎ
  • 2015/08/09 21:03 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 윤혜영 2015/10/14 15:58 # 삭제 답글

    와 빡상 멋지다! 이 글은 정말 도움이 되는 글이네.. 첨에는 뉴욕에 취업한 거 보고 부럽다고만 생각했는데 이렇게 열심히 준비했구나.
    역시 멋지다!!! 나는 한국에서 최경환 경제부총리의 삽질 발언이나 듣고 있어.. ㅜㅜ 멋져!!!
  • 덜덜 2016/01/09 19:38 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:38 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:38 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
  • 덜덜 2016/01/09 19:39 # 삭제 답글

    잘보고 갑니다.저도 한번 노력해보고 싶네요.
댓글 입력 영역