내가 구글 인터뷰 준비한 과정 google

지난 주 목요일날 아침 10시반 구글 마운틴뷰 리쿠루터한테 전화가 왔다.
"지금 전화 가능하니?"

정확히 2주 전, 구글 마운틴 뷰 본사에 가서 풀타임 소프트웨어 엔지니어 인터뷰를 한 결과를 알려주기 위한 전화였다.
그리고 결과는,
합격..

무엇보다 아담이 가장 기뻐했다.
아담: "허니야, 우리가 구글 인터뷰를 한번만에 붙은 첫번째 커플이 아닐까?"
몽키: "그럴리...가 없지 않을까 (전산학 커플들이 갈 수있는 대기업이 몇 안되니까)?"

재미있는 것은, 내가 구글 인터뷰를 할 즈음, 나에게 구글 인터뷰 과정에 대해서 물어보고 싶어하시는 분들이 몇분 계셨다. 일부는 내가 구글 인터뷰를 하는 사실을 전혀 몰랐지만, 아담이 구글에 다니기에 여쭤보고자 하는 분들도 계셨다는 것이다. 그 분들을 위해, 내가 어떻게 준비했는지를 간략히 쓴다. 나에게 실제로 던져졌던 문제들을 적을 수는 없지만 (구글에서 절대 공공 포럼이나 블로그 등에 적지 않을 것을 강력하게 권고한다), 내가 어떻게 준비했는지, 뭐가 도움이 되었는지, 적는 것은 문제가 될 것 같지 않다.



다음 책 세권을 추천한다.

아담이 폰 인터뷰 하기 전에 읽었다길래, 나도 폰 인터뷰 하기 전에 한 3일 날을 잡고 정독했다. 주제별로 어떤 인터뷰 문제가 가능한지 잘 요약해놓은 책이다. 풀이를 바로 읽기보다는 내가 일단 Eclipse에서 코드를 짜보고, 비교해보았다. 잘 검색해보면 pdf본을 찾을 수 있다. 난 소스코드가 여러 페이지에 걸쳐서 indentation도 엉망진창으로 찍혀있는것도 싫고, 이클립스에 복사해오기도 힘들어서, 학교 도서관 ebook링크를 이용해서 읽었다.
온싸이트 인터뷰 하기 이전에 아는 중국 친구가 "난 이게 도움이 많이 되었어"하면서 pdf를 보내 주어 읽은 책이다. 마이크로소프트, 애플, 구글 등 주요 IT기업의 인터뷰를 담당했던 소프트웨어 엔지니어가 만든 책이다. 내용자체는 참 훌륭하다. 그런데, 내 개인적인 견해로는 교정을 한번 더 보기 전에 책을 출판하지 않았나? 하는 느낌이 드는 책이다. 이 책에 solution으로 제시된 소스 코드 중 일부는 잘 짜여진 것도 있지만, 일부는 컴파일이 안되는 소스코드가 꽤 있다. 그리고 라이브러리에서 data structure를 가져다 사용할 때, 왜 그 자료구조를 가져다 사용했는지 이해가 안갈때가 많다. 예를 들어 java에서 같은 기능을 하는 HashTable과 HashMap자료 구조가 있다. HashTable은 thread reliability가 좋고, HashMap은 performance가 좋다 (thread-safe하지 않기 때문에) 이걸 뒤죽박죽으로 써놓았다. 이책 예제와 실제 인터뷰 난이도를 비교하자면, 이 책 마지막 두 장에 나오는 문제들 (19. Moderate 20.Hard) 그리고 앞장에 나오는 쉬운 문제들을 골고루 온싸이트 인터뷰에서 물어본다고 생각하면 된다.


아래 소개할 steve yeggy 블로그 포스트에서 너무나 많은 사람들이 추천을 하길래 읽은 책이다. CLRS책이 이론 중심으로 알고리즘을 풀어 놓았다면, Skiena는 알고리즘을 실제로 시스템을 구축할 때 어떻게 사용해야하는지, 어떤 점을 주의해야 하고, 어떻게 일반화하여 자료구조를 접근해야 하는지 진짜 잘 분석해놓았다. 난 위에 소개한 두개의 책에 적힌 문제들을 풀면서, 문제와 연관된 자료 구조에 대해 이 책을 사용해서 분석하면서 공부하였다.

이책을 1장부터 18장까지 다 읽는데 꼬박 일주일 걸렸는데, 내가 만약 구글을 선택하지 않고 교수직을 선택할 경우, 내 자료구조 수업시간에 써야겠다는 생각을 하며 너무나도 재미있게 읽은 책이다. 어려운 부분은 아담이랑 함께 몇시간씩 토론을 해가며 책을 읽었다. 꼭 인터뷰를 위해서가 아니라도, 전산학을 업으로 하는 이에게 추천하고 싶은 책이다.


그리고 인터뷰를 준비하면서 북마크 해놓은 웹링크가 여럿 되지만, 그 중 다음 4개를 추천한다.
[1] http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
구글 인터뷰를 어떻게 준비해야하는지, 구구절절 풀어놓은 포스트이다. 포스트 자체도 유익하지만, 답글들이 진짜 유익하다. 스티브 예기를 아는 구글러들이 답글을 많이 달아놓았다. 포스트와 답글에 내가 하고 싶은 이야기가 다 써져있다. 특히, 스티브 예기가 mock-up interview의 중요성에 대해서 써 놓았는데, 만약 누군가가 나에게 "온싸이트 인터뷰를 하기 전, 이틀이 남았는데, 뭘 하는게 좋을까요?"라고 하면, 나 역시 "mock-up interview를 적어도 두번 해보세요"라고 할 것이다. 꼭 구글에 다니는 친구가 아니어도 되고, 심지어는 랩에 있는 다른 전산학 전공하는 친구를 붙잡고, 예상 문제를 설명해보는 것조차 너무나도 도움이 된다. 왜냐하면, 내가 실제로 알고 있는 것들을 조리있게 설명하는 것이, 내 머리속에 뭐라도 하나 더 채워넣는 것보다 훨씬 값지기 때문이다.

[2] http://thenoisychannel.com/2011/08/08/retiring-a-great-interview-problem/
구체적으로 실제 인터뷰 문제가 어떻고, 어떤식으로 꼬리 문제가 만들어지는지 이 웹싸이트에서 아주 잘 설명을 해 놓았다. 내가 친한 Google에 다니는 친구한테 모의 시험을 한번 진행해주면 안되겠니? 하고 물어봤을 때, 그 친구가 "이 문제는 이제 더 이상 인터뷰에 사용하지 않지만, 준비한는데 도움이 많이 되니까 해보자" 하고 가져온 인터뷰 문제였다. 내가 인터뷰를 준비하기 전 대략 4번 정도의 모의 인터뷰를 해보았는데, 그 중 가장 도움이 되는 모의 인터뷰였다. 참고로 친구와 함께 이 문제를 모의로 풀때, 나는 마지막 단계까지 가지 못하였다. O(2^n) 구현까지 완벽히 하고 나자 (버그푸리) 40분이 지났고, 메모이션을 이용한 O(n^2) 구현방법에 대해서, 그리고 기타 scalability, memory limitation등에 대해서 마지막 5분동안 디스커션먼 하였을 뿐, 실제 구현하지는 않았다.  

그대신, 난 위 웹페이지에서 다루고 있는 토론 내용 이외에도 친구와 이 간단한 문제를 가지고 대단히 많은 토론을 하였다. 난 NLP를 들었기 때문에, Context free grammer까지 시작해서, bigram, markov model, word frequency 등등 그리고 dictionary구현에 대해서까지, 모의 인터뷰를 하면서 심도 있는 이야기를 하였다. 친구의 평은, 프로그래밍을 끝까지 다 할 줄 아는 것도 중요하지만, 나의 경우 문제를 제대로 진단하고, 분석하고, 고급 기술들을 적용할 수 있는 능력에서 후한 점수를 줬을꺼라고 말해주었다.  

요지는, 구글 인터뷰 문제들을 대부분, 아주 간단한 문제부터 시작하여, 문제를 어떻게 재정의하는가를 살펴보고, 그 이후recursion, discrete math, thread safety, scalability, nlp, library api, 등등을 많은 것을 한번씩 다 건드린다. 그래서 처음 문제를 받았을 때, "이건 stack, queue 를 사용하는 거잖아?"라고 단정짓고 문제를 스스로 제한해버리면, 인터뷰어가 원했던 답의 80%를 놓치게 된다. 처음에는 stack, queue문제인 것 같다가도, graph를 사용하고, dynamic programming까지 원하는 문제이기가 십상이기 때문이다. 동시에, 자기가 문제에 관해 알고 있는 기술들이 있으면 (삼천포로 빠지지 않는 선에서) 마음껏 설명하고, 토론하고, 인터뷰어와 함께 고민을 하고 오는 것이 도움이 된다는 얘기를 하고 싶다. 

[3] http://www.careercup.com/page?pid=google-interview-questions
[4] http://interviewquestionsbank.com/tags/Google-interview-questions/?sort=active&page=1

위의 두 웹페이지는, 실제 구글에서 질문한 문제들을 사람들이 포스트해놓은 데이타뱅크이다. 그런데, 주의할 점은, 대부분 인터뷰에 낙방한 친구들이 올려놓은 문제이기 때문에, 일반 인터뷰 문제들이 a->b->c->d->e 단계로 구성되어 있다면, 이 웹싸이트에 올라온 문제들은 a 혹은 b단계의 문제만 올라와 있는 경우가 많다. 그리고 일부 퍼즐 문제들은 소프트웨어 엔지니어들한테 물어보는 질문이 아니라 마케팅하는 사람들한테 물어보는 퍼즐 문제들도 있으니, 어떤 문제가 소프트웨어 엔지니어에게 물어본 질문이었는지 잘 알아봐야한다. 이렇듯 여러 이유로 신뢰할 수 없는 데이타 뱅크이지만, 그럼에도 불구하고 내가 엄선한 인터넷 웹페이지 중의 하나인 이유는? Programming Interview Exposed와 Cracking the Coding Interview 책에 나온 문제들은 2~3년 전에 사용되었던 문제라 더 이상 질문하지 않는 경우가 많다. 그에 비해 위 웹싸이트에는 (불완전할지 몰라도) 최근 문제들이 올라와있다. 그래서 약간 눈여겨 봐야한다.


이밖에 인터뷰를 위해서 특별히 한 것은 아니지만, 인터뷰를 하면서 도움이 되었던 것들이 당연히 있다. 구글에서 배포하여 사람들이 많이 사용해본 map reduce라던가, go 프로그래밍 언어 같은 것을 알아서 나쁠 것은 없다. 인터뷰를 하면서 짜투리 답으로 내가 꺼집어 내었다가 약간 플러스가 된 것 같았었다. 또, 구글 product들을 미리 약간 알고 있어서 인터뷰가 다 끝났을 때, 내가 이미 잘 알고 있는 product그룹에서 온 인터뷰어에게 아주 핵심을 찌르는 질문을 하는 것도 플러스가 될 수 있겠다. 인터뷰 있기 한달 전쯤 심심해서 들척인 computer graphics책의 어떤 concept를 인터뷰어에게 "너에게 필요한 것이 이런 기술이 아니겠니?"라고 설명해주었는데, 인터뷰어가 바로 "우리팀에 이런이런 자리가 있는데 관심있니?"라고 묻기도 하였다. 마지막으로, 스티븐 레비의 In the plex책이 구글에 대해서 참 잘 써놨다. 난 오디오 북으로 구입하여 심심할때마다 듣곤 했었는데, 구글 회사 문화를 이해하는데, 구글러들이 생각하는 방식을 이해하는데, (간접적으로지만) 많은 도움이 되었다.

지금은 이렇게 여유롭게 지난 한달을 회상하며, 내 경험담을 쓰며 조언을 하고 있지만, 온싸이트 인터뷰가 끝난 직후, 사실 내 스스로 내린 결과는 "낙방"이었었다. 인터뷰어 중 한명은 내가 특히 약한 부분 (Design pattern, 한번도 배운 적도 없고, 따로 공부한 적도 없다) 개념을 사용한 코딩을 시키고자 하였다. 인터뷰 하는 도중 concept을 배우고, 방금 배운 개념을 적용해서 코딩을 해내야했는데, 진짜 식은땀이 났다. 인터뷰어가 나가고 나서, 탁자에 내 땀이 뚝하고 떨어지는 것을 보고서야, 내가 긴장했었다는 것을 깨달았다. 그래서 인터뷰가 모두 끝나자마자 아담에게 전화해서 질문한 것은, "인터뷰 떨어지면, 얼마나 빨리 또 인터뷰를 신청할 수 있는거야?"라는 질문을 했다. 실제로 아담이 아는 분 중, 인터뷰를 세번 낙방하고, 네번째에 붙어서 구글에 다니시는 분도 계시다. 어느 회사나 다 그렇듯이 인터뷰 프로세스는 아주 다양한 요소가 작용하여 당락이 결정되는 것이기 때문에 결과가 매우 random할 수 있고, 구글도 예외는 아닌 듯 싶다. 그래서 난 천번 만번 이렇게 생각한다. "운이 좋았을 뿐" 이라고.



핑백

  • Software Engineer Interview 준비 내용 | All is Possible :) 2014-10-25 18:02:46 #

    ... http://piniapple.egloos.com/3236258</a> - 기술면접블로그(준용이형) : http://crack-tech-interview.com/ - 구글 기술면접 재연: http://www.youtube.com/watch?v=BF3FLDAzWxo&amp;feature=youtu.be - 구글 지원방법 및 채용절차: http://www.youtube.com/watch?v=XQpFgkPj-eE&amp;feature=youtu.be &# ... more

덧글

  • soylatte 2011/09/27 02:40 # 답글

    몽키님 대단하세요. 축하드려요! 제 귀엔 다 외계어같아요!
  • 몽키 2011/09/27 02:44 #

    쏘이님 고마워여.. 큭.. 그리고 외계어 맞아요.. 원하는 잡이 안 결정되서 한동안 뜸했어요. 이제 약간 편한 마음으로 블로그를 돌아다닐 수 있게 되었어요.
  • sue 2011/09/27 03:24 # 삭제 답글

    congratulations!!!!! are you moving to mountain view??
  • 몽키 2011/09/27 06:22 #

    아직 잘 모르겠지만, 가능성이 아주 크죠. Los Altos 에 사시는군요..!! ^_^
  • 2011/09/27 04:15 # 답글 비공개

    비공개 덧글입니다.
  • 몽키 2011/09/27 06:23 #

    당케~
  • 에타 2011/09/27 06:08 # 답글

    축하드립니다 ㅎ 전산과 커플 자체가 몇명없으니 첫번째 일지도 몰라요 ㅎ
  • 몽키 2011/09/27 06:23 #

    내가 아는 구글 부부들이 좀 있어요. 근데, 구글에서 만난건지, 결혼먼저 하고 각각 입사한건지는 몰겠구요.
    부부가 다 구글에 다닐 경우, 파워커플이라 부르더군요.. 큭큭...
  • 2011/09/27 06:28 # 답글 비공개

    비공개 덧글입니다.
  • 음악소리 2011/09/27 06:52 # 답글

    누나 축하해~ 그동안 맘고생했던거 생각하면 아주 내가 다 후련하고 그래^^ 이왕 합격한거 한국 가서도 합격하고 와야지~ 안그래?^^
  • 몽키 2011/09/28 05:11 #

    그게 말야..
    한국에서 붙어도 고민이고, 못 붙어도 기분 나쁘고...
    뭐 보험이 없는 것보다 있는게 좋은거긴 하지만 말야..
  • windily 2011/09/27 07:03 # 답글

    정말 축하드립니다. 저도 그곳에 들어가는게 목표인데 정말 부럽네요. ^^
  • 몽키 2011/09/28 05:10 #

    감사합니다. 화이팅이에요. 좋은 결과 있기를 바래요.
  • 아롱이 2011/09/27 09:11 # 답글

    축하드려요~ 정말 파워커플이네요 ^^
  • 몽키 2011/09/28 05:10 #

    위험 관리차원에서는 구글 망하면 둘다 실업자.. :P
  • 성국 2011/09/28 00:39 # 삭제 답글

    와! 구글에 합격하셨군요! 정말 축하드려요^^ 역시 능력자!
  • 몽키 2011/09/28 05:09 #

    감사합니다. 좋은 결과가 있어서 떠나신다는 소식 들었어요. 축하드려요.
  • 성국 2011/09/28 13:44 # 삭제

    앗.. 딱히 떠나는 곳은 없는데, 혹시 다른 분이랑 헷갈리신건 아닌지 모르겠네요 ㅠㅠ
    저 대전에 있는 허성국입니다! ^^
  • 몽키 2011/09/28 14:05 #

    아..그렇군요.... 아는 성국씨가 하나 더 있어요...크크크..
    대전에 10월말에 간답니다. 그때봐요..
  • satie 2011/09/29 02:42 # 답글

    축하드려요!!!
  • 2011/09/29 15:20 # 답글 비공개

    비공개 덧글입니다.
  • 날랄 2011/09/29 23:09 # 답글

    축하드려요! ^^
  • 2011/12/10 06:26 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 몽키 2011/12/10 06:52 #

    축하드립니다. 언제 입사하시나요?
  • 베토벤스타일 2011/12/10 09:07 # 삭제

    1월 17일 입니다.
  • 2011/12/15 08:47 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 김도연 2014/05/30 13:47 # 삭제 답글

    안녕하세요 저는 경희대학교 1학년 김도연이라고 합니다.
    다름이 아니라 한가지 부탁을 드리고자 이렇게 댓글을 남기게 되었는데요.

    경희대학교에서는 '신입생 세미나'라는 수업을 통해
    4명의 신입생과 2학년 멘토 1명이 팀을 이루어 정부의 지원 하에 해외로 실천 프로젝트를 진행하게 됩니다.

    저희 팀은 미국의 창업문화를 주제로 실리콘 밸리로의 견학을 기획하였는데요.
    7월 2일에 구글 본사를 방문하고 구글의 유연한 기업 문화를 견학하고자 합니다.

    그러나 구글 본사를 방문하기 위해서는 구글 직원의 초대가 없으면 안된다고 하더라구요..ㅠㅠ
    그래서 저희는 구글의 한국인 직원분들을 찾아 이렇게 한분한분 초청 부탁을 드리고 있습니다.

    혹시 가능하시다면 저희가 몽키님의 초대로 구글을 방문 및 견학할 수 있도록 도와주실 수 있을까요?
    만약 그것이 가능하시다면 ineedanewcar@naver.com 으로 연락주셨으면 합니다
    감사합니다!
댓글 입력 영역


통계 위젯 (화이트)

1312
80
258913