[프롤로그]


한두달 전에 http://google.com/jobs 를 통해 Resume를 제출했고, 3월 13일날에 구글 코리아에서 전화로 연락이 왔습니다. Recruiting Coordinator라는 사람에게서 전화가 오는데, 우리 나라 말로 하면 "인사 담당자" 정도가 되겠습니다. Onsite Interview 날짜 & 시간을 잡고 메일을 보내 주는데, 면접 보기 이전에 이런 저런 내용을 학습하면 면접에 도움이 될 거라는 내용이었습니다. 내용은 예전 대학 다닐 때 배웠던 Data Structure, Discrete Mathematics, Programming 정도(DS 내용이 압도적으로 많음).


예전 학교 다닐 때 "Quick Sort에 대해서 설명하시오" 라는 시험 문제가 생각나더군요. 당시 교수님이 제시한 코드 달달 외워서 시험친 기억을 가지고 있습니다. 혹시나 하는 마음에 면접 이전에 몇개 알고리즘 외워 갔는데,  코드까지 달달 외울 필요는 전혀 없습니다. 구글 면접에서는 Well Known Algorithm은 물어 보지 않으니까요. ㅋㅋ




[면접장 고고싱]


22층으로 엘리베이터를 타고 가는데, 같은 층에서 사람들이 같이 내리는데, 딱 봐도 개발자들... ㅋㅋ 같이 묻어서 사무실로 들어 갔다가 옷에 "Security"라는 문자가 새겨진 옷을 입은 사람에게 제제를 당했습니다. 데스크 가서 인터뷰 관련 출입증부터 끊으라고 하더군요. 아 X 팔려. ㅠㅠ


면접 보기 이전에 전화상으로 연락을 했었던 Recruiting Coordinator가 면접 보는 장소로 안내를 해 주었는데 굉장히 친절했었습니다. 시간이 남아서 몇가지 질문.


경문(이하 G). "회사 구경해 봐도 되요?"

Recruit Coordinator(이하 R) : "네, 식당 가서 음료수 마음대로 드셔도 되요."


G : "사진 찍어도 되요?"

R :  "사진은 좀..."

G : "넹. ㅠㅠ"


G : "Resume 제출한다고 무조건 면접을 보는 거에요, 아니면 그중 일부만 면접을 보게 되나요?"

R : "경우에 따라 다 달라요."


G : "최종 합격률은 보통 몇 퍼센트 정도 되나요?"

A : "그것도 경우에 따라..."


G : "최종 면접 합격까지 얼마 정도 걸리나요?"

R : "SW Engineer는 최대 50일 정도 걸리고(본사에서 최종 결정을 내린다고 함), 4번의 인터뷰가 이루어 집니다. 4번 모두 기술 면접이에요."


회사 사무실은 인터넷에서만 봤던 모습보다는 약간 좁았다는 느낌이 들었고 인테리어는 확실히 이쁘다는 느낌.




[면접]


면접관이 들어 왔습니다. 나보다 몇살 많이 보였고, 맹 SW Engineer.


Interviewer(이하 I) : "Resume를 봤는데 프로젝트 많이 하셨네요."

G : "네, 프리랜서 생활을 좀 해서리..."

거짓말이 아니고 이력서에 대한 대화는 이게 전부였습니다. 예상은 했지만 너무 짧더군요, 경력엔 관심도 없는 것 같고. 대번 기술 면접 고고싱.


문제는 3문제가 제출되었습니다(문제의 자세한 내용은 NDA 사안이라 구체적 언급은 못하는 점 양해바래요)


첫번 째 문제 : Recruiting Coordinator가 보고 오라고 한 글을 읽으면 도움이 되는 문제.


화이트 보드에 그림을 그리고 간단한 코드 작성하면서 설명을 하였습니다.


I : "그런 경우에 이렇게 입력이 되면 어떻게 출력이 되나요?"

G : "어? 그러게요... 음...." [잠시 생각에 잠김]. "아, 그럼 이렇게 하면 될까요?"

I : [맞다 틀리다를 얘기하지는 않고] "그럼 그 방식대로 다시 한번 코드를 작성해서 입출력이 제대로 되는지 확인해 보세요."

G : "이러쿵 저러쿵... 제대로 되는 거 같은데요?"

I : 네, 그럼 그런 구조에서 time complexity는 어떻게 되나요?

G : 음.. 글쎄요. 일반적인 경우에는 O(1)인데 경우에 따라 O(n)이 될 수도 있네요.

I : 원래 O(1)로 처리되는 자료인데, O(n)이라면 문제가 되지 않나요?

G : [코드를 곰곰히 살펴 보면서] 특수한 케이스에서 O(n)을 O(1)로 개선하는 건 어려울 거 같은데요.

I : 네, 알겠습니다.


두번째 문제 : 전혀 듣도 보도 못한 문제(사람들 줄 세우기 문제).


Google Code Jam( http://code.google.com/codejam )에서 제시하는 문제들과 유형은 비슷하지만, 면접에서 나온 문제는 코드잼에 비하면 아주 쉬운 축에 속하였습니다. 하지만, 문제를 듣는 순간 당황했었습니다. 온라인 Contest라면 화장실 갔다 오고 담배 한대 피면서 문제를 천천히 생각하면 되겠지만, Interviewer가 문제를 내자 마자 바로 대답을 기다리고 있는 상황에서는 정말이지 당황할 수 밖에 없었습니다. '내가 이걸 제대로 답변할 수 있을까?' 하는 걱정이 먼저 들더군요. 기존 알고리즘을 외울 필요는 전혀 필요 없고, 풀이 과정을 도출해 내는 능력을 보는 문제.


G : [침착침착, 차근차근] "일단 2명이라고 하면... 3명이라고 하면... 이 경우는 이렇게, 저 경우는 저렇게... 엇! 이 경우에는 안되네요."

I : "네, 그렇게 하면 incorrect하죠."

G : "그럼 일단 요로콤 조로콤..." 


그림 그려 가며 문제 풀이를 약 15분에 걸쳐 설명을 해 나갔습니다. Interviewer는 조용히 듣기만 하고(부처님 손바닥 ㅋㅋ).


G : "아하, 이렇게 하면 되는 거네요?"

I : [분위기 약간 좋아 짐] "네, 그럼 이제 간단한 코드로 적어 보세요." 

G: "[코드 작성하다가] 음, 이거 마지막에 리스트로 정답을 도출해야 하는데 Linked List가 좋을까, 아니면 Array가 좋을까나? Vector 써 버려(혼잣말)?"

I : "어떻게 생각하세요?"

G : [Array와 Linked List를 대충 비교 설명하고] "이번 문제는 저라면 Linked List를 사용하겠습니다."

I : "네... 그럼 그 전체 time complexity는 어떻게 되나요?"

G : "앞 부분은 sort를 해야 하니까 O(n log n)으로 보고, 뒷 부분은 O(n) 이겠네요. 결론적으로 O(n log n)으로 볼 수 있나요?"

I : "음..."


time complexity 얘기만 나오면 분위기가 솨~해 지니, 아놔... ㅠㅠ

Interviewer는 면접 보는 내내 내가 제시한 방식에 대해 맞다 틀리다를 한번도 얘기하지 않았습니다.


세번째 문제 시작.


I : "이런 저런 환경에서 이 작업을 하면 어떻게 하면 될까요?"

G : [곰곰히 생각하다가] "문제의 의도를 잘 모르겠는데염. ㅠ"


10분 정도 끌다가 더 이상 인터뷰 진행을 못했습니다. 원래 1차 면접으로 1시간 15분 잡혀 있었는데, 앞의 2문제만을 가지고 1시간 40분 정도를 소비했었고, Interviewer는 너무 면접 오래 봤다고 요기까지 하자고 하더군요. 면접이 끝나고 내가 그림 그려 가면서 풀이를 그리고 코드를 적었던 종이를 가져 갔는데 왜 가져 갔는지 모르겠군요.




[에필로그]


면접 끝나고 문제들이 머리에서 떠나지를 않습니다. 간단한 것을 가지고 시간을 너무 많이 끌었다는... ㅠㅠ.

  • 1번 문제에서 O(n)이 되는 상황을 O(1)로 개선하는 건 아무리 생각해도 해결이 안된다.
  • 2번 문제는 대충 정답에 접근 정도는 한 듯.
  • 3번 문제는 아직 문제의 의도조차 파악이 안됨. ㅠㅠ

오로지 기술에 대해서만 물어 봅니다. 면접 자리에서 "야근 잘해요? 술 잘 마셔요?" 라고 물어 보는 타회사 면접 보다는 낫다는 생각이 드네요.


"스쿨 버스에 골프공 몇개 들어 가요?", "맨홀 두껑은 왜 둥글까요?" 라는 식의 Brain Teaser 질문은 안 나옵니다. ^^


또한, 문제는 외우면 맞출 수 있는 알고리즘 문제도 아니었습니다. 퀴즈(문제)를 해결해 나가며 알고리즘을 스스로 도출해 보라는 식이라 보는게 맞을 거 같네요.


예상은 했지만서도, 솔직히 태어 나서 이번 만큼 인터뷰 때 진땀을 빼고 긴장을 한 적은 없었습니다.

 

Interviewer 처음 질문이 "이번에 구글 면접 처음 보세요?"였습니다. 구글에 들어 가기 위해 면접 재수, 삼수생이 실제로 존재한다는 말. ㅋㅋ


면접을 보고 난 이후 느낌은 다른 회사랑은 전혀 달랐습니다. 일반적인 회사는 기술 면접을 보고 난 이후에 "아하, 붙었구만", "떨어 졌구만"이라는 느낌을 확연히 받을 수 있는 반면에 구글 면접은 그런 분위기를 전혀 간파할 수 없었습니다. ㅠㅠ


1차 Onsite Interview 결과는 다음 주에 알려 준다고 했습니다. 면접 일정 잡고 난 이후 짧은 일주일 정도였었지만 개인적으로 공부도 하였고, 이러한 도전을 해 보았다는 사실 하나만으로도 만족하고 있습니다. 최선을 다 했다고 생각하니 떨어 져도 부끄럽지는 않을 것 같습니다. ^^


이상 후기 끝.