면접 준비 팁

애인님이 구글 면접 후기를 트위터에 올린 후 반응이 좋아서, 요 며칠간 굉장히 많은 사람들이 블로그에 방문했다.
이렇게 반응이 좋을 거라고 전혀 생각하지 못했는데, 생각보다 반응이 좋아서 놀랐다.
하지만 “후기”이다보니 면접에 대한 팁과는 약간 거리가 있었다.

그래서 지극히 개인적인 경험에 기반한, 지극히 개인적인 견해들과 더불어 몇 가지 자료를 공유하고자 한다.
나의 경우, 신입 사원으로 지원했기 때문에 경력직의 경우 다를 수 있음을 미리 밝혀둔다.

공개된 자료들

컴퓨터공학을 전공하는 사람이라면 이미 알고 있겠지만, 이 분야에 관련된 정보를 한국어로 검색해서는 유의미한 결과를 얻기 힘들다.
특히 구글의 경우는 본사가 미국에 있는 기업이기 때문에, 자료들도 기본적으로 영어로 작성되어 있을 것이라 생각할 수 있다.

Google Career

Google Career에는 정말 ‘모든’ 정보들이 다 모여있다.
면접 경향, 면접 예시 문제부터 공부를 위한 자료까지 전부.
How we hire이나, Students 탭에 이런 정보들이 모여있다.
이 페이지에서도 역시 “Cracking the Coding Interview”를 소개하고 있는데, 이는 구글 면접 후기에서 언급한 코딩인터뷰 완전분석의 원서이다.
영어가 한국어보다 더 편하지 않다면 번역본을 봐도 무방할 듯싶다.

특히 면접을 준비하기 위한 자료는, Students에서 “Prepare for technical roles at Google with our comprehensive guide”라고 되어 있는 Panel에 링크된 Tech Dev Guide에서 확인할 수 있다.
나는 마지막에 면접을 준비하면서 여기에 소개된 예제 문제로 CP 경력이 있는 친구에게 mock interview를 부탁했다.

잡코리아 채용설명회 정보

연세대학교에서 열렸던 채용설명회에 대한 요약인 듯싶다.
일반적으로 궁금해할 만한 내용에 대해 언급하고 있으으므로 전반적인 내용에 대해서 궁금하다면 참고하는 게 좋을 듯하다.

개인적인 견해

아래부터는 내가 준비하면서 생각했던 것들이다.
당연하지만 절대적이지도 않고, 합격을 보장하지도 않으니 참고만 할 것을 권한다.

학부 알고리즘, 자료구조

이는 어떤 회사를 가더라도, 코딩 인터뷰가 있다면 반드시 갖춰야 한다고 생각한다.
물론 알고리즘/자료구조 수업에서 다룬 내용 중에서도 절대 나오지 않을 만큼 어려운 것들도 있다.
가령 3-SAT이 NP-Complete인 걸 증명하는 문제라거나, 매트로이드 같은 내용이라거나..
하지만 정말 유명한 것들이라면 증명을 요구할지도 모르므로 기본적인 내용들은 증명까지 숙달하도록 노력했다.
예컨대 프림 알고리즘이 Minimum Spanning Tree를 구성할 수 있는가에 대한 것이라든지.

하지만 일반적인 학부 알고리즘/자료구조를 벗어나는 내용은 나오지 않는다고 봐도 좋다.
학부 수업이 특별히 부실하다고 여겨지지 않는다면, 학부 수업을 충실히 복습하고 자유롭게 응용할 수 있는 정도로 연습해야 한다.

자신이 사용하는 언어

면접을 볼 언어는 레퍼런스 없이, 컴파일 하지 않고도 짤 수 있는 수준이 되어야 한다.
언어의 자료구조에는 무엇이 있는지, 어떤 이름으로 되어 있고 어떻게 선언하며 어떤 함수를 통해 조작할 수 있는지 기억해두어야 한다.
조금이라도 틀리면 바로 불합격인 것은 아닐테지만, 적어도 한 번에 컴파일 될 거라는 자신감을 갖고 코딩할 수 있는 상태는 되어야 한다고 생각한다.

이 또한 어느 회사 면접이든 갖춰야 한다고 생각한다.
면접에서 레퍼런스 사이트 검색을 허용하는 회사도 있지만, 아닌 경우도 꽤 많기 때문이다.
또한 레퍼런스 사이트의 검색이 허용되더라도 기본적인 지식 없이는 빠르게 검색할 수 없다.

백준 온라인 저지

단계별로 풀어보기, 알고리즘 분류 등이 있어 난이도 및 알고리즘에 따라 문제를 풀 수 있다.
채점도 해줄 뿐더러 질문 게시판에 꽤나 많은 내용이 있어 벽에 부딪혔을 때 참고할 수 있다.
문제를 맞추고 난 뒤에는 다른 사람의 코드를 볼 수 있어서, 효율성 및 가독성 개선에 참고할 수 있다.
1000명 이하만 푼 문제들은 보통 어려운 경우가 많아서, 특별한 경우가 아니면 풀지 않았다.

COCI

모든 문제가 백준에 실려 있고, 꽤 많은 문제가 번역되어있다.
COCI 사이트에서 문제 해설, 예제 코드, input data 및 output data까지 제공되어 있어서 공부하기에 좋다.
다만 최근 문제는 조금 어렵고, 옛날 문제들 중에서도 뒤쪽 문제는 어려운 경향이 있다.
2006년부터 풀기 시작해서, 한 contest당 2~3시간 정도를 잡고 3~4문제를 푸는 것을 목표로 하는 것을 추천한다.

COCI 문제가 마음에 들지 않는다면, Google Kickstart 문제 등을 풀어도 좋을 것 같다.