개발자인가,디자이너인가,다능인인가

코딩 인터뷰 완전분석 - 제 1장 면접과정 본문

- 프로그래밍/코딩 인터뷰

코딩 인터뷰 완전분석 - 제 1장 면접과정

PRO HYEON 2017. 8. 3. 21:24


코딩 인터뷰 완전분석


제1장

면접 과정










1. 문제 선정


실제로는 회사와 면접 문제 사이에는 상관성이 별로 없다

무슨 질문이 나오는지는 누가 면접관이 되느냐에 달려있다

특히나 프로그래머가 면접을 볼때에는

공통된 질문사항을 제외하고는

신입이던 경력이던 자기가 했던 경험에 관련된 질문이 나올것이다


웹 기반 기술 - 시스템 설계에 관한 질문

데이터베이스 기술 - 데이터 베이스에 관한 질문

으로 범주가 좁혀지기는 하지만

대다수의 문제들은 자료구조와 알고리즘이라는 큰 범주에 속하는 것이







2. 준비 절차


면접에서 승리하기 위해서는

당연히 면접 한참 전부터 준비해야 한다


그 한참전을 정의하자면 수년 전 부터이다


수년 전부터

올바른 기술적 경험을 쌓고

업체에 지원하고

실제로 문제를 풀 준비를 시작

해야한다


면접까지 1년 이상 남은경우

프로젝트를 진행하라

인맥을 확대하라

포트폴리오를 구성하라

학생이라면 인턴이나 대규모 프로젝트에 관계된 수업을 듣고

직장인이라면 얻을 게 많은 프로젝트에 집중하라


면접까지 3~12개월 남은경우

프로젝트에 계속 참여하라

이력서 초안을 만들고 다른사람과 검토하라

응시할 회사의 목록을 만들라

이 책의 앞 부분을 읽으라

JAVA나 C++로 면접문제를 푸는 연습을 하라

친구와 팀을짜서 가상 면접 연습을 하라


면접까지 1~3개월 남은 경우

핵심적 개념의 이해도를 높일 수 있도록 하라

가상면접을 몇 차례 진행해라

계속 면접문제들을 연습해라

문제를 풀다 저지른 실수들의 목록을 만들라


면접 4주전

면접 대비표를 작성하라

이력서를 재검토하고 수정하라

이책을 다시한번 읽고, 특히 기술적 문제들이나 행동패턴 관계 문제들을 재검토하라

가상 면접을 한번 더 하라

계속 문제를 연습하고 종이에 코드를 적는 연습을 하라


면접 1주전

실제 면접장에서 입을 옷을 드라이하라

전화면접이 있다면 헤드셋을 구입하라

최종 가상 면접을 하라

면접 대비표를 보고 시나리오를 리허설 하라

"알고리즘 설계의 다섯 가지 접근법"을 다시 읽으라

면접 문제를 계속 연습하라

실수 목록을 재검토하라


면접 전날

면접 대비표에 적은 모든 시나리오를 리허설하라

이력서를 10부 복사해서 준비하고 파일에 보관하라

계속 면접 문제를 실습하고 실수목록을 재검토하라

"알고리즘 설계의 다섯가지 접근법"을 확실히 암기하라

2급수표(P.58)를 잘 외워두라


면접 당일

일찍 일어나 든든히 아침식사를 하고 정각에 도착하라

자신감을 가져라 (허세를 떨란 얘기가 아니다)


면접 후

구인 담당자에게 감사하다는 메일을 보내라

일주일이 지나도록 연락이 없으면 연락을 취해보라

탈락했다면 다시 응시해도 되는지 물어봐라 (희망을 잃지 마라)







3. 평가 절차


대부분의 면접은 배점이 존재한다

면접자들을 객관적인 지표에 따라서 평가한다


회사마다 공통적인 부분을 꼽아보자면 다음 4가지 정도로 추려볼 수 있다


경험이 풍부한가

회사문화에 맞는가

코딩 능력을 갖추었는가

분석적인 능력이 있는가


보통은 여기서 코딩 및 분석적인 능력에따라 당락이 갈린다


그렇다고 다른 부분이 중요하지 않다는것은 아니다


회사문화에 잘 어울릴 수 있는가 항목은 큰 회사보다는 작은 회사에서 더 중요시 한다

만약 당신이 지시를 받기 원하는 스타일인데

회사에서는 자주적으로 의사결정을 내릴 수 있도록 장려하는 분위기라면

작은 회사에서는 이러한 사소한 부분이 힘들지 않겠는가?


그리고 너무 오만하거나 논쟁적이거나 방어적인 사람이 탈락하는 것은 흔한일이다

면접관도 사람이기 때문에 같이 일하고 싶지 않다는 생각이 들게하면 안된다


이력서에 무엇을 작성해놨으면 그에 대한 질문대비는 필수이고 면접에 대한 예의다


코딩과 알고리즘 관련 문제에 주로 집중하라







4. 오답


면접에서 가장 흔하고 위험한 오해 가운데 하나는

모든 문제를 맞춰야 한다는 생각이다


면접은 시험을 준비하는 과정과 비슷한건 맞지만

시험이 아니라는 사실이다


그러므로 면접은 맞는지 틀렸는지가 아니라

자신이 낸 최종 해답이


얼마나 옳은 답에 근접해 있는가

해당 해답을 내기까지 얼마나 걸렸는가

코드가 얼마나 깔끔한가


이 3가지에 최대한 근접하면 된다


이 책을 쓴 저자는 구글에서 수천명을 심사하면서

흠 없이 인터뷰를 마친 사람을 딱 한명 보았다고 한다


만약에 자신이 오해하고 있었다면 고쳐가면 되는것이고

올바른 방향으로 가고있었다면 얼마나 잘하고 있는지 점검하기 바란다








5. 가장 흔한 열가지 실수



컴퓨터로 연습하기

이 글을 보고있는 당신이 만약 바다 수영 경기에 대비해 훈련하고 있다면

수영장에서 연습하는것만으로 충분할것이라 생각하는가?


전혀 아닐것이다


코딩 테스트에서 컴퓨터로 연습한다는 것은

마치 수영장에서 연습하는것과 마찬가지다


컴파일러는 치워놓고 종이와 연필을 꺼내라

수기로 코딩하고 테스트한 후

답을 확인할때에만 컴파일러를 사용하라



행동 성향에 관한 질문을 잊으셨군요

여러분이 참여했던 프로젝트와 맡았던 직위들을 되돌아보고 그중 핵심적인 것을 간추려 연습하라



가상 면접은 하셨나요

당신이 혹시 우물안에 갇혀있지는 않은가 점검해보세요

엔지니어라면 다른 엔지니어들에 대해서도 알아야 됩니다

동료나 친구들에게 가상면접을 해달라고 부탁해보세요



해답을 암기한다고?

기본기에서 암기가 필요한 부분이 아닌

이 문제는 이러한 방식으로 풀어나가는

마치 공식을 대입하듯이 모든 문제에 짝을 맞추어 나간다면

몇몇개는 대비가 되겠지만

실제로는 면접 문제가 전부, 또는 대다수 일치하게 되는 일도 거의 없다


이 책에 나온 문제들을 답을 보지 않고 혼자 애써 풀어보면 효과적이다




조용히 문제풀기

자주 입을 열어 해답을 어떻게 찾아나가고 있는지 알려라

사람은 말을 하지 않으면

다른사람이 봤을때 알 도리가 없다

물론 면접관이 당신을 볼때도 마찬가지일 것이다



허겁지겁

서두르다보면 실수하게 되고 부주의한 사람이라는 인상을 주게된다

천천히. 정연하게. 풀어나가라.



테스트 결여

코드를 작성하는 동안에 테스트를 병행하라



부주의한 실수 교정

중요한 것은 버그를 발견했을 때,

왜 그 버그가 생겨났는지를 먼저 생각해보는 것이다

실제로 버그를 고치기 전에 말이다



포기

면접이 당연히 벅찰 수 있다

하지만 이것조차 면접관이 테스트하려는 것 중 하나이다


당신은 도전에 기꺼이 맞서는 유형인가

아니면

공포에 떨며 뒤로 물러서는 유형인가


결국 면접이라는 것은 까다로울 수 밖에 없다

어려운 문제를 만나는 상황이 놀랄일은 아니라는것


마음을 조금 편안히 먹어도 된다


Comments