본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

개발자·IT 전문직을 위한 기술 인터뷰 준비법

OSS 게시글 작성 시각 2013-09-05 11:22:32 게시글 조회수 4217

2013년 09월 04일 (수)

ⓒ CIO Korea, Rich Hein | CIO



개발자와 IT 전문가들의 인터뷰 준비 방법이 그리 특별한 것은 아니다. 이력서를 수정 및 숙지하고, 커뮤니케이션 및 프레젠테이션 능력을 갈고 닦아야 한다. 그러나 차이점도 있다. 기술 인터뷰(기술 면접)에 대비를 해야 하는 것이다. 

먼저 좋은 소식이 있다. 기술 인터뷰 과정까지 도달했다면 일자리를 얻을 확률도 높아졌다는 것이다. 어찌됐든 기술 인터뷰 준비가 취업을 좌우할 수 있다. 우리는 CEO, 리쿠르터, 기타 산업 전문가들과 이야기를 나눴다. 모두 아무 대비 없이 인터뷰 자리에 가서 엉망을 만들면 안 된다는 데 의견을 같이했다. 다양한 방법으로 기술 인터뷰를 준비해야 한다는 설명이다.


대다수 기업들은 최상의 후보자들에게만 기술 인터뷰를 실시하곤 한다. 고용주 입장에서는 시간과 비용을 투자해야 하는 과정이기 때문이다. 반면 구직자에게는 스트레스가 가중되는 과정이다.

로버트 하프 테크놀로지(Robert Half Technology)의 존 리드(John Reed) 시니어 이그제큐티브 디렉터는 "최종 후보가 3명이라면 기술 인터뷰를 통해 누가 가장 뛰어난 역량을 갖고 있는지 판단한다"라고 말했다.

채용 담당 매니저는 기술 인터뷰를 통해 실제 업무에서 문제에 접근하는 방법, 문제 해결 방식, 지원한 직종에 대한 역량의 깊이와 넓이를 평가하게 된다. 코딩 관련 도전, 문장으로 된 문제, 동료간 토론, 퍼즐, 브레인 티저(머리를 써야 하는 어려운 문제) 등으로 구성될 수 있다.

더 워싱턴 네트워크(The Washington Network)의 릭 엔드레스 대표는 "모두가 상당한 시간과 비용을 투자해야 한다. 그러나 채용에 실패했을 때를 생각하면 아무 것도 아닌 투자다"라고 말했다.

일부 고용주는 인터뷰에 앞서 프로그래밍이나 로직 문제를 숙제로 내주기도 한다. 이는 기술 인터뷰에 관여해야 하는 사람의 수를 줄여주는 효과가 있다. 엔드레스는 "대다수 사람들은 그냥 인터뷰를 진행하기 희망한다. 그러나 이런 식으로 사전에 준비를 하면 복잡한 문제와 시간을 줄여준다"라고 말했다.

정말 일자리를 구하고 싶다면 준비를 하는 것이 좋다. 구직 활동 시작 자체가 취업을 결정한다. 쉽지는 않다. 많은 장벽에도 직면한다. 그러나 원하는 일자리를 얻는다는 보상이 있다. 이에 그 방법을 소개하겠다.

명확히 커뮤니케이션 한다
기술 인터뷰 또는 취업 인터뷰에서 커뮤니케이션의 중요성은 아무리 강조해도 지나치지 않다. 인터뷰 진행자는 구직자를 채용해야 하는 이유를 명확히 모른다. 따라서 질문에 대한 대답, 성취에 대한 이야기, 질문을 통해 이를 입증해 보일 필요가 있다.

래피드7(Rapid7)의 인재 채용 책임자인 에드 네이든슨은 "기업은 구직자가 실시간으로 생각하는 모습을 보기 원한다. 실제 업무에서는 뛰어난 능력을 발휘할 수 있을 것이다. 하지만 인터뷰 과정에서도 이런 능력을 명확히 주지시켜야 한다"고 충고했다.

이에 대비하는 좋은 방법 중 하나는 일정 시간을 투자해 자신이 내세우고 싶은 분야, 자신을 내세우는 방식을 점검하는 것이다.

네이든슨은 "구직자는 스스로를 판매하고 있는 것이나 마찬가지이다. 즉 제품과 청중을 알아야 한다. 그리고 계획을 세워야 한다. 직무와 만나게 될 사람들을 조사해야 한다. 그리고 단순히 제품이 아닌 지원한 회사에 대해 조사를 해 알고 있어야 한다"라고 말했다. 예를 들어, 소셜 미디어에서 회사를 조사할 수 있을 것이다. 해당 회사 직원들이 아마도 링크드인(LinkedIn), 페이스북(Facebook), 글래스도어(Glassdoor)를 이용하고 있을 것이기 때문이다.

화이트보드에 대비한다
기술 인터뷰에서 매번 화이트보드(whiteboard)가 사용되는 것은 아니다. 그러나 제한된 시간 내에 알고리즘 문제나 시나리오 문제를 해결하도록 하는 화이트보드 기법이 사용되는 경우가 종종 있기 때문에, 어느 정도 대비를 해야 한다. 네이든슨은 "가급적이면 준비를 해야 한다. 구직자 인터뷰에 사용되는 경우가 많기 때문이다. 인터뷰 전에 화이트보드를 연습하면 큰 차이를 만들 수 있다. 특히 화이트보드 사용이 자연스럽지 않은 구직자에게 도움이 된다"고 말했다.


구인 공고의 내용을 숙지한다
최고의 정보가 있는 장소는 구인 공고 그 자체이다. HR 부서는 구인 공고 작성을 위해 많은 시간과 생각, 에너지를 투자한다. 따라서 지원한 회사에서 사용되는 기술, 자신의 지식과 기술을 문제에 어떻게 적용할지 많은 정보를 얻을 수 있다.

네이든슨은 "구인 공고에는 중요한 문제, 당신이 해결해줬으면 하는 문제가 들어있다. 따라서 구인 공고에 설명된 기술적 요구사항들을 제대로 이해해야 한다. 구인 공고는 회사가 어떤 인재를 찾고 있는지 알려주는 안내서 역할을 한다"고 설명했다.

핵심 원칙과 기본 개념을 재상기한다
당신에게는 '녹슨' 것으로 생각되거나, 깊이 알지 못하거나, 더 학습을 할 수 있는 프로그래밍 언어를 다시 한번 복습할 필요가 있다. 아주 기본적인 것부터 시작해, 중간, 아주 어려운 개념에 이르기까지 다양한 질문을 예상해야 한다.

구직자로서 해야 할 일은 프로그래밍 기술을 입증해 보이는 것이다. 특별히 기준으로 제시할만한 프로세스는 없다. 예를 들어, PHP 개발 기술이 필요한 인터뷰를 한다면, 온라인 튜토리올 등을 참조해 해당 기술을 복습해야 한다.

리드는 "PHP와 관련된 개념, 약어와 전문어, 은어에 대해 공부를 해 익숙해져야 한다. 회사에 입수하면 그 기술을 가지고 업무를 수행할 수 있어야 하기 때문이다. 또 당신이 말하는 용어가 공식적인 기술 용어와 일치해야 한다"고 말했다.

업무 포트폴리오를 가져간다
그 동안의 업무(작업)를 기록한 노트나 포트폴리오를 가져가 인터뷰 진행자에게 보여주는 것 또한 좋은 생각이다. 엔드레스는 "코드와 네트워크 설계 도표를 가져가기 바란다. 여기에는 당신이 과거 공헌한 또는 개발한 계획들이 포함되어 있을 것이다. 우리는 기술적인 생각과 제안을 작성해 소통하는 능력을 찾고 있다. 당신이 가져온 작업 산물은 당신이 갖고 있는 능력을 보여준다. 우리는 당신이 어떤 능력을 갖고 있는지, 이 능력에 어느 정도 숙달해 있는지 알기 원한다. 당신은 어떤 능력을 사용해 기술과 사람들을 상대하는가?"라고 말했다.

정신적인 대비를 한다
정신적으로 불안한 날이 있기 마련이다. 그러나 기술 인터뷰를 준비할 경우, 대다수 다른 인터뷰와 마찬가지로 정신적으로 집중을 하고 여유를 찾아야 한다. 그리고 인터뷰 당일에는 정신적으로 제대로 준비가 되어 있어야 한다.

사람마다 정신적인 대비를 하는 방법이 다르다. 그러나 대다수에게 효과가 있는 방법들이 있다. 예를 들어, 논리적인 문제에 매달리거나, 클래식 음악을 감상하거나, 노트에 적힌 글을 열심히 읽는 방법 등이 있다.

리드는 "정신적인 대비는 아주 중요하다. 많은 부분들이 당신이 대비를 해 인터뷰 장소에 가져간 마음가짐에 달려있다. 인터뷰가 아침으로 예정되어 있다면 일찍 일어나야 한다. 앞으로 있을 인터뷰에 대비한 마음가짐을 갖출 수 있는 환경을 조성해야 한다. 노트와 용어를 읽고, 동시에 마음가짐과 관련된 노트를 준비해야 한다. 인터뷰 동안 말하고 싶은 내용을 생각한다. 당신의 전문성을 입증할 내용을 예로 들 수 있다. 또 어떤 방식으로 말을 할지 생각한다. 인터뷰 진행자가 당신에게 물을 질문을 생각한다. 또 이 질문에 어떻게 대답을 할지 생각한다"라고 말했다.

자신 있게 질문 한다
윈터와이먼(WinterWyman)의 트레이스 캐시먼 기술 검색(Technology search) 컨설턴트는 "인터뷰 진행자가 기술과 관련된 질문을 물으면, 정확히 이해를 한 상태에서 대답을 해야 한다. 대답을 못한다고 해서 기회가 사라지는 것은 아니다"고 말했다.

두 가지 형태가 있다. 첫째, 대답을 알고 있지만 당황해 있는 상태이거나, 잠시 잊어버린 경우이다. 캐시먼은 "정직해야 한다. 일단 사과를 한 후, '지난 주에 처음 그 명령어를 사용해봤습니다. 그러나 이 회사에 근무하고 있다면, 이런 식으로 해결책을 찾을 수 있습니다'와 같은 대답을 한다. 이는 문제에 접근하는 방식을 보여줘, 당신이 자원이 될 수 있음을 입증하는 방법이다"라고 말했다.

둘째, 정말 모르는 경우이다. 이 때는 비슷한 분야를 언급한다. 예를 들어, '안타깝게 C# 작업을 해볼 기회가 없었습니다. 그러나 VB.NET 작업 경험이 많기 때문에 금방 배울 수 있습니다'라고 대답하는 것이다.

그러나 캐시먼은 "절대 거짓말을 해서는 안 된다. 모르는 것을 아는 척 해서는 안 된다. 대신 과거 경험이 있는 관련이 있는 내용과 연결을 시켜야 한다"고 말했다.

질문을 완벽하게 이해해야 한다. 그리고 확인을 하는 질문으로 마무리를 해야 한다. 당신의 질문에 대한 대답입니까? 당신이 찾는 대답을 했습니까? 더 자세히 대답을 해줬으면 하는 내용이 있습니까? 리드는 "가정을 해서는 안 된다. 상관이 없는 경우가 많기 때문이다. 이 경우, 먼저 질문을 하거나, 대답을 하고 맞는지 확인을 해야 한다"라고 말했다.

강력하게 마무리 한다
많은 인터뷰가 어색하거나 평범하게 끝난다. 왜 해당 일자리를 원하는지 설명하는 대신, 왜 자신이 그 일자리에 적합한 사람인지 강조해야 한다. 이는 채용 담당자에게 자신을 부각시킬 아주 좋은 기회이다.

인터뷰 이후에는 메모, 생각, 피드백을 적는다. 머리 속에 기억이 생생히 남아있는 동안 그렇게 해야 한다. 또 인터뷰 진행자의 이름, 직책, 기타 관련 정보를 기록해둬야 한다.

팔로우업과 감사의 메모
어떤 인터뷰든 인터뷰 진행자가 당신을 좋은 이유에서 기억을 하기 원할 것이다. 추가적인 생각, 내용이 담긴 감사의 메모가 여기에서 도움이 될 수 있다. 인터뷰를 생각하고, 당신이 받은 피드백을 고심해보기 바란다.

<유능한 기술 인재 확인을 위해 준비해야 할 물음들>
한편 캐시맨이 고용주들이 지원자의 자질을 확인하는 과정에 도움을 줄 실질적 문항과 문제들을 소개했다. 각 물음들은 서로 다른 개별 직종들에 초점을 맞춘 것들이며, 핵심 기본 원리에서 상급 원칙에까지의 여러 역할을 두루 아우르고 있다. 이 질문들은 구직자에게 무엇을 기대해야 될 지에 관해 정보를 제공해줄 것이다.

리눅스 엔지니어를 위한 질문
- 시스템이 중단되어 리부트가 필요한 상황에서, 모니터링 및 과거 CPU 이용 현황 확인에 이용할 수 있는 툴은 무엇일까?
- 사용자들에게 허용되는 것보다 높은 U 리밋 파라미터(U limit parameter)를 필요로 할 경우, 어떻게 할 수 있을까?
- 이니트(Init) 서비스가 리부트되지 않도록 하기 위해서는 어떤 노력이 필요할까?
- 가상화 시스템에 디스크 공간을 추가하고 있는 상황에서 이것이 보여지게 할 방법은 무엇일까?
- LVM 내 파일 시스템 확장을 위해서는 무엇이 필요할까?

 

.NET 관련 질문
- ASP.NET 페이지를 위한 일반적인 페이지 라이프 사이클 단계는 무엇인가?
- 폴리모피즘(Polymorphism)이란 무엇일까?
- 제네릭스(Generics)의 장점은 무엇이 있을까?
- 두 테이블 사이의 다-대-다 관계 디자인한다면?
- 설계 패턴이란 무엇이며 왜 사용되는가? 몇 가지 사례와 그것의 과거 사용 경험을 이야기해 보시오.
- 활용 가능한 .NET 수집 유형에는 어떤 것이 있는가? 각 유형의 차이를 간략히 설명하고 특정 상황에 특정 유형을 이용하려는 이유를 제시하시오.

OOP 설계 유형 관련 물음
- 어떻게 클래스 도해(class diagram)를 이용해 파일 시스템을 설계할 것인가? 어떤 데이터스트럭처(datastructure)를 이용할 것이고 그 이유는 무엇인가?
- 어떻게 각 계정이 인덱싱 혹은 클라이언트 계정화 되는 계정 관리 시스템을 설계할 것인가? 각 계정은 보류(holding)를 갖춰야 하며, 각 보류는 관련 보안 정보를 갖춰야 한다. 또한 보류는 가격 설정을 위해 복수의 묶음으로 구성되어야 한다. 어떻게 이를 모델링 할 것인가?
- 동물원의 동물들을 위한 클래스 구조를 어떻게 설계할 것인가?

코딩 과제 예시
우리는 컴팩트하고 신속한 구동이 가능한 솔루션을 원한다. ‘신속함'의 의미는 우리가 사용하는 용어에 따라 달라질 수 있지만, 기본적으로 구동에 500 밀리초 이상이 소요되어서는 안된다. 당신이 가장 익숙한 언어를 사용하되, 우리에겐 비주얼 스튜디오(Visual Studio)가 갖춰져 있지 않다는 점을 고려해 C++ 솔루션은 표준 G++로 번역 되어야 함을 참고하라.
 

문제:
하나의 단어가 사전적 의미로써의 단어가 아닌, 단순한 알파벳의 조합이라고 생각해보자. 두 글자 이상이 들어간 단어라면, 알파벳 순서만 바꿔 똑같은 글자가 들어간 다른 단어를 만들어 낼 수 있다. 영단어 'stationarily'와 'antiroyalist'는 모두 사전에서 찾을 수 있는 단어이지만, 동시에 같은 알파벳으로 글자의 순서 조합만 바꾼 것이기도 하다. 사전에는 없는 단어지만 저 단어들에 들어간 알파벳을 사용해 alianrostily라는 단어도 임의로 만들 수 있다. 그렇다면, 위의 알파벳 글자들을 사용해 조합해낼 수 있는 글자들에 고유 숫자를 매길 수도 있을 것이다.

가능한 단어 조합 목록을 전부 나열한 뒤 필요한 단어를 찾는 것이 하나의 방법이 될 수도 있을 것이다. 그러나 단어의 길이가 길어질 경우 그 과정에는 긴 시간이 소요되게 된다. 단어를 명령 행 인수(command line argument)로써 받아들이고 그것의 숫자를 출력하는 표준을 인쇄하는 프로그램을 작성하라. 위에 제시된 전체 리스트 수집 방식은 이용할 수 없다. 프로그램은 중복 포함 최대 25자의 단어를 받아들일 수 있어야 한다. 메모리는 1 기가를 넘겨선 안되고 구동 시간은 500 밀리세컨드 이내여야 한다.



전통적인 인터뷰를 선호하는 회사가 있는가 하면, 창의적인 문제를 제시하는 회사도 있다. 일부는 게임이나 퍼즐을 이용하기도 한다.

리드는 "정확한 정답을 바라지 않는다. 구직자가 문제를 이해하는 방식, 문제를 해결하는 방식을 파악하는 것이다. 질문에 대한 대답보다는 여기에 더 많은 정보가 있다"라고 말했다.




※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지


[원문출처 : http://www.ciokorea.com/news/18278]

맨 위로
맨 위로