메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

마이크로소프트 인턴 면접기(1)

한빛미디어

|

2007-10-25

|

by HANBIT

17,684

제공 : 한빛 네트워크
저자 : 존 몽건, 노아 수오야넨 킨들러, 에릭 기게리
역자 : 서환수
출처 : 프로그래밍 면접, 이렇게 준비한다

2007년 여름방학 동안에 마이크로소프트 인턴쉽을 위해 겪은 면접 경험담을 써보고자 한다. 이 이야기는 어디까지 나의 경험과 역시 마이크로소프트 인턴면접을 본 주변 친구들의 이야기를 기반으로 쓰여진 것이므로 회사마다, 시기마다, 학교마다 얼마든지 이 내용은 바뀔 수 있다. 간단히 나를 소개하면, 한국에서 학부를 마치고 산업기능요원으로 짧지 않은 기간 동안 소프트웨어를 개발하였다. 그리고 2006년 가을 학기부터 미국의 모 대학에서 전산학 석사 과정에 있다. 먼저, 일반적인 미국 대학생들의 인턴쉽 프로그램에 대해 이야기를 해보고 구체적인 마이크로소프트 면접 이야기를 해보자. 그리고 마지막으로는 나와 친구들이 면접 때 받은 코딩 문제들을 살펴보자.

미국 대학생들을 위한 인턴쉽 프로그램

미국 대학의 학기가 우리와 다르다는 사실은 잘 알 것이다. 보통 8월말에서 12월초까지 가을 학기, 그리고 1월초에서 5월초까지 봄 학기로 크게 나뉜다(예외로 캘리포니아 주에 있는 대학교들은 쿼터(Quarter) 제도로 움직이기도 한다). 그리고 여름 방학은 보통 5~8월 동안 약 3~4개월 정도 지속된다. 그래서 이런 긴 여름 방학 동안 많은 업체들이 대학생들을 위한 인턴쉽(이하 인턴 으로도 혼용하여 표현) 프로그램을 제공하고 있고, 학생들도 이 기회를 적극적으로 이용한다. 보통 인턴은 12~15주 정도 지속이 되어 결코 짧지 않는 기간동안 일을 할 수 있다. 단순 업무 보조가 아닌 실제 프로젝트를 수행하는 경우가 많다.

반면, 우리나라의 대학들은 여름 방학과 겨울 방학이 각각 두 달 정도로 균등히 배분이 되어있다. 그래서 제대로 된 인턴을 하기가 힘들다. 또한, 이런 짧은 여름 방학으로 인하여 외국 기업의 인턴으로 가는 것도 현실적으로 힘들다. 카이스트 같은 경우에는 이제 여름 방학을 미국처럼 길게 하여 학생들에게 보다 많은 인턴 기회를 주려고 하고 있다. 우리 대학들도 좀 더 내실 있는 인턴 경험을 할 수 있도록 학기를 조정할 필요가 있다.

인턴을 지원하는 학생이 학부생이냐, 석사 과정이냐, 그리고 박사 과정이냐에 따라 그 면접 과정이 사뭇 다를 수 있다. 인턴 자리는 크게 일반적인 개발직과 연구직으로 나눌 수 있다. 대개 박사 과정 학생들은 교수님들의 추천을 받아 연구직으로 가는 경우가 많다. 그리고 이 경우에는 알고리즘 문제보다는 지금이 학생이 연구하고 있는 주제에 대한 질문이 이어지는 경우가 많다.

반면, 석사 과정이나 학부 3~4학년 학생들은 주로 개발자로 인턴을 가게 된다. 어떤 회사는 특정 플랫폼의 개발 경험이 얼마나 있느냐, 특정 분야에 대한 지식이 얼마나 있느냐를 물을 수 있다. 그러나 대개 그것보다는 일반적인 전산능력 즉, 알고리즘과 프로그래밍 테스트를 하는 경우가 많다. 대표적으로 마이크로소프트, 구글, 그리고 아마존 같은 기업이 알고리즘을 묻는 방식으로 진행된다. 전형적인 면접 진행 방식은 책에서도 잘 소개가 되어있지만, 비교적 간단한 1차 인터뷰, 그리고 힘들고 긴 2차 인터뷰를 거치는 경우가 보통이다.

그렇다면 어떻게 인턴으로 지원할 수 있을까? 나의 경우에는 2월 중순에 학교에서 열린 ECE/CS(전기/컴퓨터/전산) 학과를 위한 Job Fair를 이용하여 지원을 하였다. 인텔, MS, VMware, 아마존과 같은 큰 업체를 비롯해 많은 컴퓨터 관련 업체들이 와서 이력서를 받는다. 그 외에도 하드웨어 회사인 AMD, Broadcom 등의 회사도 볼 수 있었다.

특히 그 자리에서 바로 간단한 프로그래밍 관련 질문을 하는 곳도 있다. 예를 들어, 아마존 같은 경우에는 간단히 volatile이라는 C언어 키워드가 무엇을 하는지 묻기도 했고, C++ 클래스 상속에 대한 질문을 묻기도 하였다. 나는 윈도우 프로그래밍을 긴 시간 동안 하였고, 때마침 지난 학기에 윈도우 플랫폼에서 메모리 버퍼 오버플로를 막는 프로젝트를 한 것이 있어서 MS에 관심이 많았다.MS 부스에는 이미 많은 학생들이 줄을 서서 자신을 광고하고 있었다. 드디어 내 차례가 되었다. 리쿠르터랑 지금까지 내가 한 것에 대해서 간략하게 말을 하면서 이야기를 주고받았다. 그리고 이력서를 던져 준다. 던져 준다는 표현이 정확할 정도로 많은 이력서가 쌓인다.

그 외에는 Monster Track이라는 일종의 리쿠르팅 사이트를 통해 구하는 방법도 있다. 아니면 MS의 경우에는 자신이 다니는 학교의 리쿠르터에게 직접 레주메를 보내 연결할 수도 있다. 대략 50~60개의 학교가 등록되어있고 각 학교마다 리쿠르터가 배정되어있다.

그리고 하나 느낀 것은 MS의 여름 인턴을 가기 위해서는 반드시 지난 해 가을 학기부터 지원을 하여야 한다는 것이다. 그래야 일찍(1~2월 사이에) 최종면접까지 보고 확답을 얻을 수 있다. 나 같은 경우에는 일정이 굉장히 미뤄져서 학기가 끝나고 나서야 겨우 시애틀을 갈 수 있을 정도였다. 중간마다 일정을 조율하는 리쿠르터가 계속 바뀌는데, 중간의 한 담당자와 3주간 연락이 두 절되어 꽤 늦어졌다. 또한 마이크로소프트 인턴 지원은 자기가 특정 팀을 고를 수 있는 것이 아니고, 1차 면접관이 팀을 배정한다. 그래서 이미 좋은 팀은 모두 마감이 될 수도 있다.

이번에는 MS 인턴쉽에서 어떤 자리를 뽑는지 이야기를 해보자. 크게 Program Manager(PM), Software Development Engineer(SDE), Software Development Engineer in Testing(SDET), 그리고 이 글을 쓰는 (2007년 8월) 현재, Hardware Engineer라는 포지션도 추가가 되어 총 4개 정도의 직군이 있다. 그리고 MS가 아닌 Microsoft Research에서도 연구 과정을 위한 인턴쉽을 뽑는다. 이 과정에서도 역시 코딩 문제는 묻지만 연구 실적 등도 주의깊게 살펴본다. PM은 영어가 힘든 나에게는 해당 사항이 아니었고, 따분해 보이는 SDET보다는 역시 제대로 된 개발을 할 수 있는 SDE로 지원을 하였다. 예를 들어, SDE 포지션이 요구하는 조건은 홈페이지에 따르면 다음과 같다.
  • 전산학 및 관련 공학 분야에서 학사, 석사, 그리고 박사 학위 과정에 있어야 하며
  • 1~2년의 C/C++/C#, 자바 및 기타 컴퓨터 프로그래밍 언어 경험 우대
  • Thinking “Outside the box”를 통해 창조적이고 혁신적인 해법들을 도출할 수 있는 능력(Thinking outside the box는 기존의 틀에서 벗어나 좀 더 창의적인 관점에서 문제를 살펴보자는 표현이다. Wikipedia에서 좀 더 자세한 설명을 볼 수 있다.)
  • 사물을 정의하고, 디자인하며, 실행 가능한지를 따지는 데 능숙해야 하며
  • 개발 시간을 추측하는데 있어서 합리적인 기술
보다시피 윈도우 플랫폼에서의 개발 지식을 명시하지 않고 있다. 윈도우를 단 한번도 사용하지 않은 사람조차도 MS에 취직하는 데 원칙적으로 전혀 문제가 없다. 그들이 생각하는 중요한 능력은 일반적인 전산 능력인 것이다. 그리고 MS가 운영하는 Job blog에서도 평소 리눅스를 좋아하는 한 학생의 취업 이야기도 읽을 수 있었다.

서론이 꽤 길었다. 이제 실제 내가 두 번에 걸쳐 겪은 마이크로소프트 개발자 인턴 면접 과정을 이야기 해보자. 먼저 말하고 싶은 것은 MS는 인턴 면접자에게도 상당히 많은 돈과 시간을 투자한다는 사실이다. 즉, MS는 인턴을 뽑아도 정직원을 뽑는다는 생각으로 뽑는다. 그리고 실제로 정직원의 채용 과정도 인턴과 크게 다르지 않다.

1차 면접

내가 아는 한 MS/구글/아마존은 1차 면접을 보통 학교에서 직접 본다. 즉, 학교에 면접관이 찾아와서 면접을 본다. 그렇지 않으면 전화 면접으로 대체하기도 한다. 혹은 IBM Extreme Blue 인턴쉽 프로그램처럼 화상 면접이나 컨퍼런스 콜로 면접을 보는 곳도 있다.

일단, 앞에서 이야기한 것처럼 이력서를 던져 주고 잊혀질 때쯤 되면 학교에서 일단 얼굴 한 번 보자고 연락이 온다. 나는 박사 과정의 진학을 염두에 두고 있었고, 또 1년차라서 그런지 적극적으로 이력서를 제출하지 않았다. 주로 소프트웨어 개발 쪽으로 3~4 군데 이력서를 내었지만, MS만이 먼저 연락을 주었다. VMware 같은 회사도 나중에 연락을 주었지만, 나의 경력과 맞는 부서가 당장 없어서 추후에 다시 지원하라는 이야기를 들었다. 이력서를 낸다고 해서 모두 1차 면접의 기회를 얻는 것이 아니다. 나 같은 경우는 아무래도 윈도우에서의 개발 경력이 많아서 어렵지 않게 기회를 잡았던 것 같다. 물론 전혀 윈도우 프로그래밍 개발 경험이 없는 친구들도 면접 기회를 많이 잡기 때문에 이런 점에 대해 염려할 필요는 전혀 없다. 앞서도 말했지만 Visual Studio를 한 번도 켜보지 않은 사람도 마이크로소프트에 갈 수 있다.

1차 면접은 흔히 screening test라고 불린다. MS의 경우 1차 면접은 약 30분 정도 할당이 된다. 간단한 자기 소개를 한 뒤, 코딩 및 퀴즈 문제를 풀고, 마지막에는 Q&A 시간을 가진다. 나와 면접을 본 면접관은 MS에서 15년 동안 오피스 등 여러 프로그램을 개발한 프로그래머였다. 깜짝 놀랐다. 직접 고참급 엔지니어가 올지는 몰랐다. 그는 양쪽 귀에 귀걸이가 무려 5개나 박혀 있었고 분홍색 남방을 입은 키 큰 유럽풍 남자 아저씨였다. 일단 편안하게 맞이 해준다. 그러고 보니 영어로 면접을 보는 것은 처음인 것이었다. 정말 영어 때문에 늘 고생인 우리 한국인 유학생들로서는 면접 보기 전에 걱정이 이만저만이 아니었다. 그나마 전화 면접이 아니라서 다행이었다. 리쿠르터와 같은 사람들의 전화상 발음은 괜찮지만(그들도 우리가 영어를 힘들어 한다는 것을 잘 안다) 일반적인 전화 통화(예를 들어, 보험 회사에 전화를 걸어 상담원과 이야기하는 것) 는 정말 힘들기 때문이다.

1차 면접의 시작은 자기 소개로 시작된다. 특히 지난 학기에 윈도우상에서 보안 관련 프로젝트를 한 것을 중점적으로 설명했다. 면접관도 흥미를 보이면서 여기에 관한 여러 가지를 묻는다. 예를 들어, 내가 겪은 어려움을 이야기를 하면, 면접관이 “아 그래? 그러면 이런 문제도 있었을 것인데 어땠어?”라고 물어 보고 이야기를 술술 풀어나갈 수 있었다. 이렇게 이야기를 주고받으니 어느덧 15분이 훌쩍 지나갔다. 이렇게 내가 알고 있는 것, 한 것을 말하는 경우에는 영어도 크게 어렵지 않다. 이제는 한국의 면접 분위기도 더 이상 겸손 떠는 것은 아니니 자신 있게 자신이 한 일을 잘 광고해야 할 것이다. 단순히 이것저것 만들었다가 아닌 구체적으로 어떤 어려움이 있었고, 이 문제를 어떻게 극복했는지를 설명하는 것이 중요하다.

그러나 문제는 코딩 및 퀴즈였다. 종이와 연필을 던져주고 간단한 코딩 문제를 낸다. 쉬운 문제였지만, 그 자리에서 막상 보면 잘 생각이 나지를 않는다. 이 문제를 그냥 학교 숙제라고 생각하고 집에서 조용히 컴퓨터 앞에서 푼다면 누구나 다 풀 것이다. 사실 가장 힘든 것은 이것을 영어로 또박또박 설명하는 것이다. 우리말로 설명해도 쉽지 않은 데 말이다. 미리 충분한 연습이 필수다. 아는 것도 다시 한 번 정리할 필요가 있다. 그리고 바로 여러분이 손에 쥐고 있는Programming Interviews Exposed는 매우 유명한 책으로 프로그래밍 인터뷰를 앞둔 학생들에겐 필독서로 되어있다.

다행히 문제는 어렵지 않게 풀었다(알고 보니 이 책에 있던 문제였다!). 알고리즘을 대략 말로 설명해도 되지만, 생각보다 꼼꼼하게 모든 조건을 언급하기를 요구한다. 물론 가장 완벽한 답안은 완벽한 코드를 쓰는 것이지만 면접관에 따라 그런 것을 항상 요구하는 것은 아니다. 그리고 다른 사람의 경우에는 Sudoku 같은 퍼즐을 풀게 하는 경우도 있다. 그러나 맨홀 뚜껑은 왜 둥그런가와 같은 수수께끼 스타일은 더 이상 내지 않는다.

그 뒤에는 Q&A 시간이 주어지는데, 그냥 “질문 없어요”라고 대답하면 안 된다. 나는 원래 윈도우에 관심이 많은 터라 이런저런 질문을 많이 했다. 특히 독자적으로 쓰는 개발 툴이나 디버깅 툴이 있는지 물어봤는데, 그런 것은 별로 없다는 대답을 들었다. 나를 면접본 분은 커널이나 시스템 레벨이 아닌 애플리케이션 레벨이다 보니 특별한 툴은 없는 것 같았다. 그 외에 이런저런 이야기를 주고받으니 30분이 훌쩍 지나간다. 그리고 Microsoft가 찍힌 볼펜을 가지고 싶은 만큼 들고 가라면서 헤어진다. 답변은 2주 안으로 받게 된다고 알려주고, 1주 반 정도 지나면 결과가 나온다.
TAG :
댓글 입력
자료실

최근 본 상품0