반응형

링크드인(LinkedIn)에 가끔씩 들어가서 개인 프로파일 관리를 하다가, 지난 1월에 구글 코리아에서 소프트웨어 엔지니어 채용 과정이 열려 있다는 내용의 공지를 보게 되었다. 그 페이지를 보면서 내가 무슨 배짱(...)이었는지 모르지만, 아무튼 Apply 버튼을 누르고 링크드인의 프로파일 페이지를 변환해서 간단한 CV를 첨부해서 보냈다.


Apply 버튼을 누를 당시에는 정말로 별 생각이 없었다.


'설마 되기나 할까?'


잠시 이런 생각을 했다가, 큰 의미부여 없이 그렇게 신청해 두고는 최근까지 잊고 지냈었다. 곧이어 개인연구 실험과 제안서 작업이 닥쳐와서 지원했다는 사실을 까맣게 잊은 채 바쁘게 지냈고, 서류 검토 과정에서 떨어졌으리라 생각했을 뿐이었다.


그런데, 며칠 전에 "Hello from Google" 이라는 제목으로 영어로 된 이메일 하나가 왔다. 너무 간단한 제목에 스팸이나 피싱이 아닐까 하는 걱정을 하면서 메일을 열었는데, 신기하게도 나의 지원 정보가 구글 재팬으로 넘어가서 일본인 소프트웨어 엔지니어 한 명이 관심을 갖고 나에게 연락한 것이었다.


그 엔지니어가 가까운 시간 내에 전화로 얘기를 해 보자고 해서 일단 바로 다음날로 시간을 정하고 전화통화를 하였다. 나는 내 지메일 계정에 행아웃으로 영상통화를 걸어올 줄 알았는데, 그냥 +81로 시작하는 국제전화가 걸려 왔다. ㄷㄷㄷ

메일을 받았을 때, 메일 내용에는 그저 conversation이라고 되어 있었지 면접이라고 적혀 있지 않았기에 나는 준비도 긴장도 없이 (물론 낯선 사람과의 통화에 긴장이 안될 수는 없지만, 국내 대기업 기술면접을 준비했을 때에 비하면 긴장이 아니었다) 전화를 받았다. 그런데 알고 보니 기술면접을 포함하는 전화 면접이었다. (...) 일본인이니까 영어로. 연습도 못해 보고 실전 전화영어라니... 그래도 담당 일본인 엔지니어가 영어를 명확하게 잘 해줘서 알아듣는 데 큰 어려움이 없어서 정말 다행이었다.


처음에는 무엇을 해 봤는지, 언제 졸업하는지, 언제부터 일할 수 있는지 등을 물어보다가, 몇몇 기술요소(예를 들어 자바 프로그래밍 언어, 알고리즘, 데이터구조 등)에 대해서 본인의 지식수준이 얼마나 되는지를 0~10 사이의 숫자로 스스로 평가해 보라고 했다. (0: 전혀 모름, 1:초보, 3:초중급, 5: 중간, 7:전문가, 10:다 아는 신급)

여기서 내가 실수한 것이 있는데, 웬만하면 7 정도의 숫자를 함부로 말하면 안되는 것이었다. ㅋㅋㅋ 지금 생각해 보면 정말이지 용감하기만 한 내가 어떻게 비춰졌을지 손발이 오글오글하다. @_@


그러고 나서 갑자기 기술적인 질문 십수 가지를 던지기 시작... ㅜㅜ

완전 망함... 까지는 아니지만, 그렇다고 선방한 것도 결코 아닌, 알고리즘과 자료구조에 대해서 전혀 준비되지 않은 나의 날 것 같은 지식이 모두 탄로나서 털털 털렸을 뿐이었다. ㅠㅠ 

평소에 쓰는 자료구조가 개인연구 또는 연구실 과제 차원에서 필요한 것들만 반복해서 쓰는 정도라서 다양한 자료구조를 다룰 일이 적다 보니 아는 것은 잘 아는데 모르는 것은 전혀 모르는 편식하는 학생 신분의 개발자였기에, 이렇게 갑자기 훅 들어오는 질문들에 대한 내 대답은 천차만별이었다. 평소에 개인연구의 실험 코딩을 하다말고 자꾸만 옆길로 빠져서 네트워크 로그 정보를 처리하기 위해 무슨 데이터 구조를 쓰는 게 좋을지 살펴보느라 시간을 허비했던(?) 과거의 경험이 오히려 고마울 뿐이었다. 그마저도 없었다면 거의 대부분의 질문에 대답을 못했거나 틀리게 했을 것이다. 차라리 며칠 더 시간을 두고 그 동안 알고리즘, 자료구조를 간단히 리뷰라도 하고 나서 통화를 했으면 그나마 나았을 텐데 무식하면 용감하다는 것을 몸소 실천하는 꼴이 되고 말았다. ㅠㅠ


아무튼 정신없는 기술면접을 마무리하고, 엔지니어로부터 나중에 한번 더 전화통화를 하면서 코딩 면접을 할 것이라는 안내를 받고서 통화가 끝났다. 아마 구글 공유 문서를 통해서 코드를 짜는 과정을 검토하는 방식을 말하는 듯 했다.

구체적인 시간은 정해지지 않았지만 아마도 짧으면 1주, 길면 2주쯤 후에 전화상 코딩면접이 있을 것이고, 이 과정을 무사히(?) 통과하면 서울에 있는 구글 코리아에 직접 가서 또 기술면접을 여러 차례 하게 될 것으로 예상된다. 구글 재팬에서 채용을 진행하는데 얼굴을 대면하는 기술면접은 서울에서 본다길래 의아했지만, 알고 보니 원래 지원자가 있는 지역에 구글 지사가 있으면 그 곳에 가서 면접을 보는 게 정식 절차라고 한다.


일단 당장 얼마 후에 있을 2차 전화면접을 잘 해야 그 다음 과정도 의미가 있을 텐데... 서류를 통과한 모든 지원자에 대해서 오프라인 기술면접까지 모두 하게 해 주는지는 알아내지 못했다. 전화통화하던 당시에도 마지막에 정신없어서 묻지도 못했다. ㅡㅡ 상식적으로 생각해 보면, 전화상 코딩 면접에서 잘 하지 못하는 지원자를 굳이 회사까지 데려와서 면접해서 현역 엔지니어들의 시간과 비용을 낭비할 필요는 없을 것 같다.


어쨌든 이렇게 갑작스럽게 좌충우돌 구글의 소프트웨어 엔지니어 면접 과정을 시작하게 되었다. 지금 내가 처한 상황을 있는 그대로 얘기하자면, 내가 얼마나 털릴지 가늠이 안되는 상황에서 산 정상은 아득하게 보이는데 산 중턱은 구름에 가려져 있고, 나는 고급장비 하나 없이 정상을 향해서 맨몸으로 뛰어가는 듯한 느낌이다. ㄷㄷ


상황만 놓고 보면 내가 해낼 수 있을까 하는 의구심이 한가득이지만, 한편으로는 과연 내 실력이 어디까지일까 점검해 볼 수 있다는 측면에서 기대가 되기도 한다. 다시 말해서 뭔가 긴장감이 몰려 오는데, 그 긴장감이 싫다기보다는 도전해 보고 싶다는 그런 느낌이다.

1~2주 동안에 알고리즘이나 자료구조 차원의 지식을 보강해야 하는데, 연구를 하는 중간에 내가 얼마나 보강할 수 있을지는 모르겠다. 결국 면접에서 살아남기(?) 위해서는 문제해결능력으로 어필해야 할 것 같다. 박사과정을 하면서 남의 논문을 평가하고 내 논문을 쓰는 차원의 문제해결 과정은 겪어봤는데, 그렇게 연습해 온 것이 도움이 되기를 바랄 뿐이다.


면접에서 물어볼 만한 샘플 문제들을 하나씩 살펴보면 만만치않은 난이도인데, 실제 문제는 이보다 더 어려울 것이다. 몇몇 문제는 일단 무식한 방법(brute force)으로 어떻게든 코드 작성을 시작할 수는 있어 보였다. 결국 관건은, 일단 그렇게 시작해 놓고 나서 면접관들과 대화를 해 나가면서 그 코드를 얼마나 개선시킬 수 있느냐이다. 내가 문제를 어떻게 정의하고 어떻게 단계적으로 설계하는지가 드러날 것이고, 이어서 면접관의 힌트를 얼마나 잘 활용하는지도 드러날 것이며, 면접관과의 대화를 통해서 실제로 쓸만한 코드로 개선해 내는 능력이 있는지도 드러날 것이다. 결국 구글이 원하는 소프트웨어 엔지니어 인재에 해당하는 현실의 문제를 협업을 하면서 전산 도구를 적절하게 활용해서 빠르게 개발해 내는 사람인지가 판가름이 날 것이다.


이번 면접 과정을 기회삼아, 비록 주어진 시간이 얼마 없지만 그동안 내 지식을 다시 정리해서 내 실력이 어디까지인지 점검해 보는 계기로 보고 준비해 봐야겠다.

반응형
블로그 이미지

Bryan_

,