소프트웨어 엔지니어들이 선호하는 빅4, 아마존, 구글, 페이스북, MS. 이 회사들의 인터뷰 방식은 조금씩 차이는 있으나 큰 흐름은 상당히 유사하다. 나는 네곳의 회사와 모두 인터뷰를 보았는데, 구글과 MS는 전화 인터뷰에서 낙방해서 그 이후의 경험은 전무하다. 그러나 사람이 언제나 헛된 희망을 품고 살아가는 존재다보니.. 전화인터뷰 날짜만 잡혀도 이미 페이스투페이스 인터뷰와 연봉협상, 출퇴근 거리까지 줄줄히 알아보며 김치국을 콸콸콸 들이마시게 마련이다. 그러다보니 본의아니게(?) 적지않은 정보들을 습득했다.
끝까지 완주한 회사는 아마존과 페이스북인데, 난이도의 차이도있고 스타일의 차이도 확실하다. 그러나 준비하는 과정에서 빼놓을 수 없는 부분이 있다. 바로 코딩인터뷰와 디자인 인터뷰이다. 요즘에는 모두들 익숙한 방식의 기술면접이다보니, 따로 설명할 필요가 있을까 싶다. 코딩 인터뷰는, 말그대로 화이트보드 앞에서 프로그램을 짜는 인터뷰이다. 그리고 디자인 인터뷰는 역시 화이트보드 앞에서 시스템 디자인을 하고 분석하는 인터뷰를 말한다. 두 인터뷰는 성격이 너무나 다르고 준비하는 방식 또한 완전히 다르다.
낮은 직급일수록 코딩인터뷰의 수와 비중이 높으며, 더 높은 직급일수록 디자인 인터뷰의 중요성이 높아진다. 그렇기때문에 자기가 지원하는 포지션에 맞게 잘 배분해서 준비하는것이 중요하다.
코딩인터뷰 준비방법
코딩 인터뷰는 알고리즘 인터뷰라고도 불리는데, 중간 난이도의 알고리즘을 이용하여 인터뷰어가 제시하는 문제를 푸는것이다. 푸는 방식은 당연히 코딩이고, 화이트보드에서 코딩을 직접 해야한다. 아마도 화이트보드에서 코딩하는것이 익숙하지는 않을텐데, 극복해야한다. 이 인터뷰는 무조건 패스해야 하는것이고, 이 인터뷰를 완벽하게 패스한다고 해도 합격이 보장되지는 않는다. 그렇기 때문에 끊임없이 연습해서 완전히 몸에 배도록 해야 한다. 마라톤 준비하려면 매일매일 달려야 하듯이, 이 코딩인터뷰도 매일 빼놓지 않고 꾸준히 해야 실제 인터뷰에서 제 기량을 낼 수 있다.
이론 습득 및 연습
우선 가장 추천하는 웹사이트는 Leet Code이다. 이 사이트에서는 아주 쉬운 문제부터 어려운 문제까지 수많은 코딩 인터뷰 문제를 제공한다. 가장 쉬운 문제부터 하나하나 풀면서 모르는것은 공부하는 것을 꾸준히 반복하다보면, 거의 대부분의 실제 코딩 인터뷰를 문제 없이 풀 수 있다.
위 사이트가 무료라고 해서 우습게 보지 말고, 하루에 5개에서 열개씩 꾸준히 풀도록 해야한다. 일단 Easy로 되어있는 문제만 모두 푸는것을 목표로 하길 바란다. 다른 지름길은 절대 없다고 감히 이야기 할 수 있다.
실전에서 반드시 기억해야 할 여섯가지
위의 사이트를 통해서 관련 지식들을 습득하고 연습을 충분히 했다고 해도, 실제 인터뷰를 패스 할 수 는 없다. 인터뷰어는 단순히 문제를 풀수있는지 없는지를 보는것이 아니라, 문제를 단순화 하는 방법, 소통하는 방법, 테스트하고 분석하는것 등을 본다. 그렇기때문에 다음의 여섯가지를 반드시 기억하길 바란다.
문제의 모호한 부분 질문
인터뷰어가 문제를 알려주면, 무조건 세네개 이상의 질문을 해야 한다. 인터뷰어가 주는 문제는 보통 애매모호한 부분에 대한 설명이 없다. 이런 부분에 대해서 확실히 알아내지 않고 바로 코딩을 시작하면 그 인터뷰는 100% fail이다. 우선 문제를 알려주면, 문제가 언급하지 않는것은 모조리 물어봐야 한다. 입력값의 자료 형이나 자료구조, 데이터 크기, 리턴할 값, 예외처리 등..
이런것들을 하나하나 물으며 화이트보드 구석에 적어 놓으면 좋은 인상을 남길 수 있을 뿐만 아니라 문제를 푸는 도중에 유용하게 참고 할 수 있다.어떻게 풀지 미리 설명할것
내가 이렇게 이렇게 문제를 이해했고, 이러이러한 부가적인 조건들이 있으니, 나는 이러이러한 알고리즘으로 이러이러하게 풀겠다 라고 먼저 인터뷰어에게 이야기 한다. 그러면 인터뷰어가 좋은 생각이다 그렇게 풀어라 하면 보통 그렇게 시작해도 무방하다. 하지만 인터쥬어가 장단점이 무엇인지 다른방법은 없는지 자꾸 묻는다면, 더 좋은 방법으로 풀기를 기대하는것이다. 그때는 자신의 생각을 우기기보다는 다른 방법이 없는지 인터뷰어와 이야기하며 재빠르게 힌트를 얻어서 생각해 내야 한다. 하지만 아무리 생각해도 다른 방법이 없다면, 본인이 생각한 방법으로라도 풀것. 이때 최적의 알고리즘을 발견해 내지 못하더라도 대화로 합의점을 잘 찾는다면 희망이 있다.크게 말하면서 풀기
코드를 작성하기 시작하면 자기가 작성하는 코드에 대해서 크게 말하면서 풀어야 한다. Think out loud 라고 하는데, 내가 생각하는 과정을 인터뷰어가 이해 할 수 있도록 전달하는 과정이다. 이과정은 연습이 많이 필요하기 때문에 매일매일 꾸준히 연습해야 한다.인터뷰어와 꾸준한 소통
중간중간 인터뷰어가 잘 이해가 안된다고 하거나, 뭔가 확실한지 재확인하는 질문을 하는 경우, 절대로 그냥 지나가서는 안된다. 그 순간 그 인터뷰는 fail이다. 그렇기때문에, 인터뷰어의 말에 귀를 항상 기울여야 한다. 인터뷰어가 이해할때까지 설명해 내는 능력도 필요하고, 잘못된것을 고쳐주려 하면 받아들이는것 또한 필요하다.테스트
코드 작성을 마치면 반드시 테스트 해야한다. 화이트보드에서 코드를 테스트하는 방법은 매우 다양하므로 인터넷을 검색해 보기 바란다.성능 분석
이미 1과 2의 절차를 거쳐 코딩을 시작 했다면, 해당 알고리즘이 acceptable 하다는 의미이다. 그러므로, 그부분에 대해서는 염려 할 필요가 없다. 하지만 본인이 선택한 알고리즘의 복잡도와 성능에 대해서 설명할 수 있어야 한다. BigO 를 이용하여 Time Complexity 와 Space Complexity를 설명해야 하는데, 이부분을 틀리면 상당히 큰 감점을 받으니 조심해야한다.
중요하지 않아보이지만 정말 중요한 것: 질문하기
코딩인터뷰를 잘 마치면, 인터뷰가 질문할 기회를 준다. 보통 5분정도의 시간이 주어진다. 이 때 질문을 많이 할수록 좋다. 질문들은 의미있고 흥미로운것일수록 좋으므로 미리 꼼꼼히 10개 정도 준비해 간 후, 상황에 맞게 골라서 질문해야 한다. 질문도 매우 중요한 인터뷰의 과정이므로 반드시 양질의 질문으로 마무리 지어야 한다.
글로 적기에 너무나 방대한 양이라서, 핵심만 적어보았습니다. 궁금한 점이 있시면 댓글을 달아주시면 감사하겠습니다. 다음 글에서는 디자인 인터뷰에 대해서 이야기 해 보도록 하겠습니다.
감사합니다!
영국취업이야기 다른글
[영국취업이야기] 영국에 취업하고 싶은 학생 및 사회 초년생들을 위한 조언
[영국취업이야기] 영국 회사의 수습 기간, 이론과 현실.
[영국취업이야기] 개발자는 기술면접을 어떻게 준비해야 하는가
[영국취업이야기] 취업 비자를 받기가 어려운 이유, 그리고 현실적인 돌파구.
역시 개발자라면 코딩!! 잘 읽고 갑니다.
다음 포스팅도 기대하겠습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
워니님 정말 감사합니다^^ 참 취업 축하드립니다! 앞으로 좋은일만 가득하시길..
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
감사합니다^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
안녕하세요. 에즈베어님~ 오랜만에 인사드려요 ^^
한동안 스티밋에 뜸해서 ㅎㅎ
에즈베어님의 이런 노하우 포스팅은 정말 짱인것 같습니다.
자주 놀러올께요~~
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@toktok님 안녕하세요 잘 지내고 계셨군요! 너무 반갑습니다 자주자주 뵙길 바랄게요 ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
경험이 들어간 아주 아주 귀한 정보들 입니다. LeetCode 이런 사이트가 있는지 몰랐어요. 들어가 보니 11개의 언어를 서포트 한다니 정말 다양하네요. 개발자 꿈을 키우시는 많은 분들에게 정말 도움이 많이 될거 같습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
감사드려요. 언제나 느끼는거지만 독자가 많았으면 참 좋을텐데 하는 생각입니다^^ 특히 코인이야기가 유난히 많은 요즘은 댓글이 많이 고프네요 헤헤.. 그나저나 잘 지내시나요? 메리크리스마스!!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
ㅠㅠ 요즘들어 좋은 내용들이 너무 빨리 묻히고 있어서 좀 속상하긴 해요. ㅠㅠ
메리크리스마스를 베어님께 제일 먼저 듣네요! 감사합니다 ^0^
베어님도~ 메리크리스마스!!!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
정말 영국으로의 취업을 준비하시는 분들께는
생생하게 들려 올 그 어느 곳에서 돈주고도 못 살 경험과 팁이네요!
@asbear님 대단하셔요- 오늘따라 더 멋있게 보이십니다용~ㅋㅋ
존경의 박수 짝짝짝!^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
코딩관련직업은 대단합니다
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
잘읽히고 유익한 글이에요. 감사합니다.
저는 이제 개발자 커리어를 시작하게 됐습니다.
어떻게 하면 스스로 실력을 키울수 있을까? 좋은 개발자가 되고 싶다. 등등 여러 고민을 하고있었습니다.
자주 놀러올게요!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit