Daybreakin Things

Posted
Filed under 살아가기, 생각하기

※ 들어가기에 앞서, 구체적으로 어떤 문제가 나왔는지 등에 대한 정보는 공유하지 않습니다. 아래 있는 내용은 이런 면접 준비하는 분들에게는 어느 정도 일반적으로 알려져 있는 내용 위주로 작성하였습니다. 괜히 잘못했다가 NDA 조항에 걸리면...(먼산)

스웨덴에 있을 때 지원서를 보낸 것이 5월 말, 연락을 받은 것은 6월 중순, 그리고 최종 면접 날짜는 오늘이었다. 구글과 마이크로소프트, 아마존 등 유수 IT 기업들의 면접은 소위 '기술 면접'이라는 형태로 진행되는데, 간단(?)한 알고리즘 문제를 주고 그 풀어가는 과정, 코딩하는 과정을 살펴보는 것이 주요 내용이다.

구글이 다른 회사보다 면접에 나오는 문제 난이도가 어렵다는 얘기도 들었고 해서 꽤 긴장하고 있었는데, 결론부터 말하자면 '기초를 충실히 하면 어렵지 않게 할 수 있다' 정도가 되겠다.;; 비록 경시대회 출전도 거의 안 해봤고 이런 종류의 알고리즘 문제를 푸는 게 익숙하지는 않았지만, 카이스트에서 Problem Solving 수업을 들었던 것이 큰 도움이 되었다.1 위에서 말한 기초라 함은 학부생 레벨이라면 data structure만 확실하게 잡아도 반은 먹고 들어갈 것이다.

면접은 총 2시간 동안 진행되었고, 두 개의 다른 팀에서 한 명씩 나와 1시간씩 일대일로 면접이 이루어졌다. 꼭 정해진 틀이 있는지는 모르겠지만, 처음에는 비교적 가벼운 이야기(이력서에 있는 내용 물어본다거나)로 분위기를 부드럽게 하고, 2개 정도의 알고리즘 문제를 푼 다음 구글에 대해 알고싶은 것 아무거나 질의응답하는 식이었다. 두 면접관 모두 첫 문제는 비교적 쉬웠고 두번째 문제는 비교적 어려웠다.

일단 첫번째 요구사항을 해결하면 점점 더 어려운 요구사항이 붙는데, 첫번째 문제들의 경우 모두 어느 정도 수준까지 레벨(?)을 올릴 수 있었으나, 두번째 문제들의 경우 다 완성하지는 못했다. 특히 첫번째 면접관이 냈던 두번째 문제의 경우, 기초적인 정의를 하나 빠뜨리는 바람에 그 정의를 찾느라 꽤나 오랫동안 삽질을 해서 시간 내에 다 풀지 못했다. (1차 끝나고 쉬는 시간에 '이렇게 하면 될 것 같은데...'까지는 답을 찾았지만 이미 지나간 버스...-_-) 두번째 면접관의 두번째 문제는 쉽게 할 수 있는 걸 너무 어렵게 빙빙 둘러가는 바람에 시간이 조금 걸렸지만 기본 접근 방법이 맞았기 때문에 힌트를 받고 잘 일반화해서 구체적으로 알고리즘을 설명까지 하고 끝낼 수 있었다. (원래는 프로그래밍 언어로 직접 구현까지 해야 하는 것인데, 음, 제한된 면접시간 내에 완벽하게 구현하기는 쉽지 않은 문제였던 것 같다.)

이런 면접을 봤던 분들이 항상 얘기하듯 중간에 조금씩 막히는 부분이 있더라도 지금 무슨 생각을 하고 있는지 계속 말하면서 대화를 이어나가는 게 중요한 것 같다. 설령 그렇게 튀어나온 아이디어가 틀렸다고 할 지라도 그게 어떻게 해서 문제가 되는 것 같다라든가 하는 것들을 잘 설명하다보면 시간이 금방 간다(?). -_-; 그리고 자기가 남한테 뭔가 설명해주는 것에 자신이 없는 사람이라면 친구랑 같이 연습해보는 것도 도움이 될 것 같다. 충분히 문맥적으로 알아들을 것 같더라도 면접관들이 항상 확실한 설명을 요구하기 때문이다.

어쨌든 개인적으로 느끼는 만족도는 70~80% 수준. 물론 면접관들이 어떻게 느꼈을지는 모르겠지만. 얼른 결과가 나왔으면 좋겠다;;


  1. 수업이 굉장히 특이하게 진행되는데, 숙제로 내준 알고리즘 문제들을 수업 시간에 돌아가면서 자기가 어떻게 풀었는지 설명하는 식이다. 오답이든 정답이든 모두 말로 풀어서, 칠판을 이용해서 교수님과 다른 학생들이 알아듣도록 설명해야 하므로 이러한 면접을 준비하는 데 굉장히 도움이 된다.