해외취업

실은 필자가 나중에 써먹으려고 백업해 놓은 것이다. 인터뷰는 주로 자료구조나 알고리즘 같은 테크니컬한 주제를 다루기 때문에, 이 글에선 독자가 어느정도 자료구조와 알고리즘을 알고 있는 상태라고 가정한다. 잘 모르겠다면 여기 에서 자료구조와 알고리즘 공부를 시작해보자.

면접 준비하기

Google Iterview Universiy에서 책을 몇권 간추렸는데, 이 중에서 한 권만 뽑으라면 Cracking the coding interview를 뽑을 것이다. 난이도도 다른 책보단 낮은 편이지만 중요하기 때문에 이 책을 먼저 읽기를 권한다. 해커랭크에 이 책 강의도 같이 있으니 병행해서 보면 좋을듯.

Google Iterview University 레파지토리는 필자가 8개월동안 풀타임으로 공부하면서 공부했던 것들을 집대성한 사이트인데, 인터뷰를 준비하기 위해서 어떤 언어를 골라야 하는지, 어떤 책을 읽어야 하는지, 자료구조/알고리즘 배경지식, 컴퓨터 시스템 지식, 인터뷰어한테 어떤 질문을 해야 하는지를 집대성해 놓았다.

저 책만 보고 인터뷰에서 잘하기는 어렵다. 좀 더 많은 문제를 풀어보는걸 추천한다. 프로그래밍 문제 사이트는 정말 정말 많으니 알아서 찾아보기 바란다. 인터뷰 준비하는 사람 중에 leetcode에 있는 문제를 모두 풀어본 사람이 생각보다 많다. 문제가 안풀릴 때가 있을 것이다. Discussion에 보면 해답이 나와 있긴 한데, 안풀린다고 해답을 바로 보지 말기 바란다. 김창준님이 소개한 5 가지방법이 있는데 참고바란다. (http://qna.iamprogrammer.io/t/topic/500/3)

하루 종일 해답을 고민했는데 답이 나오지 않을 정도이면 문제가 너무 어려운 것일 수 있다. 더 쉬운 문제를 많이 풀어본다. (예컨대 외국어 학습에서 문맥적 유추가 가능한 것은 대략 한 페이지에 모르는 단어가 한 두 단어 나올 때임)

문제에 내가 가상으로 제약을 더 둬서 일단 풀어본다(일반해가 아니라 특수해라든가). 그리고 차츰 제약을 줄여나간다.

일단 풀던 문제는 멈춰 놓고 비슷하지만 다른 문제(혹은 더 쉬운 문제)를 풀어본다. 나중에 "중도에 멈춘 문제들"을 재탐방 해보면 풀리는 경우가 있다.

코치를 두고, 현재 안풀리는 상태의 코드를 보여주고 힌트를 하나만 던져달라고 부탁한다.

해답을 보고 이해한 후에, 해답을 보지 않은 상태에서 기억에 의존해 처음부터 다시 만들어 본다. 만약 이것이 어렵다면, 해답에 주석문만 남기고 다 지우고(주석문이 없다면 내가 몇 개 넣은 후), 해답 코드를 보지 않고 기억과 주석문에 의존해 코드를 다시 만들어 낸다.

면접보기 1주일 전에는 Pramp로 실전연습 하는걸 추천한다. pramp에서 서로 interviewee, interviewer 가 되서 화상통화로 문제를 내고 풀었는데, 영어로 말하면서 코딩하는 연습이 많이 되었다.

이력서

형식

인터넷에서 LATEX 템플릿MS WORD 템플릿 찾아서 글씨만 채워 넣으면 됨.

첨삭

이력서 첨삭 받기전에 페이스북 HH Websites and Resumes 그룹에서 눈팅 100개정도 할 것을 추천한다. 잘 쓴 레주메가 정말 많이 올라오고 댓글 수준도 괜찮은 편.

전반적인 이력서 팁은 (소프트웨어 엔지니어를 위한) 끝내주는 이력서를 쓰는 방법, Resume writing tips을 참조하기 바란다.

  • 적을 것: 깃헙계정, 링크트인 계정
  • 적지 말 것: 스택오버플로우 계정, 트위터 계정, 페이스북 계정

스택오버플로우 계정은 이력서에 안 넣는 게 편한데, reputation이 높으면 하라는 일은 안 하고 스택오버플로우만 하는 거 같고, 낮으면 낮은데 왜 굳이 이력서에 넣는지? 라는 의문만 들기 때문이다. 그냥 안 넣는 게 좋은 듯하다.

일단 이력서 작성 했으면 최대한 많이 뿌리자. Intern Supply에 있는 회사 중 본인이 관심가는 회사 100 곳(?!)만 뿌리자.

코딩 인터뷰

프로젝트 설명

일단 면접 보기 전에 회사 좀 구글링해놓자. 그리고 면접 끝나고 질문할 것들을 미리 적어 놓자.

자기 이력서를 설명할 기회가 있다면, "@명이 함께 진행한 프로젝트고 난 여기서 @@@@를 맡았다." 라는 말로 시작하는 게 설명하기 편했던 거 같다. 본인이 맡았던 분야의 최종 목표, 기술 스택과 자료구조를 말하면 된다.

이력서에 쓰여 있는 기술 스택에 대해서 종종 물어볼 때가 있는데, 이때 자기가 왜 그 기술 스택을 선택했고 제일 유명한 또는 고전적인 기술 스택에 비해서 어떤 점이 좋은지 잘 설명해야 한다.

일할 때 어려웠던 점을 묻기도 하는데, 이때는 어려운 점만 대답하고 끝내면 안 되고, 어떻게 그 문제를 해결했는지 과정을 말해야 한다. 문제해결능력을 보는 것이다.

면접이 끝나갈 무렵에 면접관은 뭐 궁금한 거 있냐고 물어본다. 면접관이 어디 팀에 있는지 먼저 물어본 후에, 팀 분위기나 난이도를 물어본다든지 코드리뷰를 어떻게 하는지 물어봤던 거 같다. 그리고 미리 만들어 놓은 질문 목록 중에서 면접관이 그 팀과 관련이 있다던가 대답할 수 있을 거 같은 거를 선택해서 질문하는 편이다. 대답하기 난해한 질문은 서로에게 도움이 안 된다.

코딩

문제를 자세히 듣고 바로 문제를 풀지 말기 바란다. 코너케이스를 물어봐야 한다. 인풋 데이터가 유니코드인지 숫자인지, 숫자라면 범위가 어떻게 되는지, 0이나 음수일 때도 고려해야 하는지 등등.

자 이제 문제를 제대로 이해 했으니 코딩을 시작하면 안된다! 일단 말로 면접관에게 어떤 자료구조로 어떻게 풀 것인지 대략적으로 설명을 한다. 면접관이 OK라고 하면 그 때부터 코딩을 시작한다.

코딩 하면서도 중간중간에 “이 변수는 뭐고 이런 역할을 한다” 식으로 설명하는 게 좋다. 면접관은 설명충을 좋아한다.

코딩을 끝내고 나면 면접관이 문제를 바꾸는 경우도 있다. 처음엔 0과 음수를 배제하고 풀라고 해놓고 선 다 짜고 나니까 음수도 되게 바꾸라던지…

면접 끝나고

면접 볼 때 자기가 잘 봤다고 느낀 정도랑 실제 면접에서 붙을 확률은 그다지 비례하지 않는다. 지난 면접은 잊고, 그냥 다음 면접 준비나 공부하자.

인턴 중

건물에 있는 모든 사람에게 인사 잘하고, 멘토한테 질문 많이 하고, 열심히 하자. 모든 인턴이 다들 열심히 하고 잘했던 것 같다. 영어 못한다고 쫄 필요는 없다. 영어 못하면 ppt를 잘 만들어서 ppt만으로도 이해하게 하면 된다! ^0^ 난 영어로 말하는 게 편치 않아서 멘토한테 항상 채팅으로 질문했었다. (…)

회사마다 인턴에서 정직원 되는 비율이 천지차이다. 10%, 50%, 80% … 그리고 인턴에서 정직원이 되는 리턴오퍼를 받지 못하면 그 회사에 6개월동안 지원을 못한다 카더라. 자세한건 리쿠르터에게 물어보자.

다른 해외 취업 팁

추가 바람

필자는 해외 인턴을 통해서 취직한 경우기 때문에, 코딩 인터뷰 문제가 풀타임 보다 좀 더 쉬운 편이었고, 합격률도 높은 편이 아니었다. 필자보다 경력이 더 길고 다른 엔지니어들 면접을 봤던 사람들이 쓴 글도 같이 첨부한다. 개인적으로는 이동휘님과 김민장님 글이 제일 도움이 되었다.

김민장님

이동휘님

  1. https://plus.google.com/+DongHwiLeeOn/posts/7XHeGWYvddF

  2. https://plus.google.com/+DongHwiLeeOn/posts/NtvZyp7Czyr

  3. https://plus.google.com/+DongHwiLeeOn/posts/14v2hCqyvw4

  4. https://plus.google.com/+DongHwiLeeOn/posts/9CYRUwqa8ax

  5. https://plus.google.com/+DongHwiLeeOn/posts/XRtPeLM6eYT

  6. https://plus.google.com/+DongHwiLeeOn/posts/CzN7aCEo9b4

  7. http://sv-archives.blogspot.kr/2015/08/blog-post.html

양파님

results matching ""

    No results matching ""