기술 면접에 대한 짧은 생각

오늘은 면접에 대해서 제가 생각하는 것을 써보려고 합니다.
어차피 제가 경험한 면접이란 것이 개인적인 경험일 수 밖에 없겠지만, 혹시 도움이 될까.. 하는 생각에 씁니다.

좋든 싫든 면접이란 것을 종종 들어가게 됩니다. 작은 회사일수록 인력 채용이란 것이 중요하다보니, 제가 다니는 회사 역시 기술 면접 과정이 까다롭다고 알려져 있습니다. 일단 상당히 오랜시간 상당히 깊숙히 들어가는 면이 있어서 그렇기도 하고, 하드웨어 엔지니어를 뽑는 회사치고는 드물게 실기 면접을 병행하고 있기 때문이기도 할 것 같습니다.

첫 번째로 실기 면접의 경우 많은 경우에 아주 간단한 설계 + 이를 검증하기 위한 테스트 벤치로 구성되는데요.
실기 시험이란 것의 특성상 1) 문제를 읽고 설계 스펙을 구체화시켜 간단한 아키텍처를 만들어 내는 능력, 2) 이를 RTL(혹은 C)로 구현하는 능력, 3)구현된 부분을 검증하기 위한 테스트 벤치를 작성하는 능력, 4) 테스트 벤치에 맞는 테스트 시나리오를 만들고 이를 테스트 케이스로 만드는 능력, 5) 설계물과 설계 과정에 대해서 설명하는 능력을 보려고 하는 것이죠.
이 이야기는 정상적으로 동작하는 것을 만드는 것도 중요하지만, 이걸 어떤 방식으로 검증해야 하는지, 그리고 어떻게 분석해서 왜 이렇게 만들었는지를 논리적으로 설명하는 과정 역시 매우 중요하다는 것입니다.
즉, 실수한 부분이 있더라도 이걸 논리적으로 설명하려 노력하는 것이 중요합니다. 가끔은 실기 시험이란 것이 이야기를 풀어나가기 위한 시작점으로 사용되기 때문입니다.

두 번째로 경력 사항에 대한 설명이 있는데요.
경력자(혹은 석/박사)는 당연히 그 동안 했던 프로젝트 중 지원자가 생각하기에 가장 참여도가 높거나 가장 기억에 남는 주요 프로젝트 한 두가지를 가지고, 내용에 대해서 설명하고 질문에 답을 하는 것입니다.
(물론, 면접 위원들에게 특별히 눈이 가는 프로젝트가 있다면 (예를 들어, 저희 회사 같은 경우는 Video Codec) 이 부분에 대한 질문이 추가되기는 합니다. )
이때, 가장 fancy 해 보이는 프로젝트를 선택하지 마시고 가장 자신 있는 프로젝트를 선택하시는 것이 좋습니다.
보통 면접위원들은 프로젝트 자체에 대해서는 대부분 별로 관심이 없습니다. 다만, 어떤 식으로 일을 했는지 살펴보기 위한 “이야기꺼리”로 프로젝트를 사용하는 것뿐이죠.
따라서, 보통 상당히 긴 시간동안 프로젝트에 대해서 이야기하게 되는데, 이런 종류의 일을 할 때 반드시 알고 있어야 할 것이라 생각하는 다양한 사항들을 물어보며, 스펙부터 설계, 기법까지 다양한 부분에 대해서 질문과 답을 나누게 됩니다.

이 부분에서 중요한 건 틀려도 되니까, 당황하지 않고 논리적으로 이야기가 진행되는 것이 중요합니다.
예를 들어, bandwidth등을 물어봤을 때 실제 수치가 중요한 것이 아니라 논리적으로 어떤 방법으로 계산을 진행했으며, 이런 이런 파라미터가 왜/어떻게 사용된다가 중요한 것이지 정확한 숫자를 기억해 내기 위해서 노력할 필요까지는 없습니다. (보통은 말이죠. 다만 그 수치 자체가 중요한 경우도 있기는 합니다. – 이 일을 하는데 당연히 알아야만 하는 숫자라면 말이죠. )
또한, 앞에도 언급했지만 이런 종류의 일을 하기 위해서 반드시 알아야 하는 사항들이 이 이야기 프로젝트 이야기에 질문으로 나오게 됩니다. (보통 하드웨어 엔지니어, 검증 엔지니어, 소프트웨어 엔지니어의 기본적인 면접 질문을 포함해서..)

[image from https://www.pexels.com/]
가끔 상당히 괜찮아 보이는데, 면접 과정에서 계속된 질문으로 심하게 당황하셔서 당연히 아실 것이라 생각되는 질문조차 답을 못하는 경우가 있습니다.
이런 경우에는 면접위원으로 들어갔음에도 제가 더 안타깝습니다.  조금만 보고 왔다면 당황하지 않을텐데.. 하는 생각이 들기도 하고요.
(사실 이 글을 쓰게 된 직접적인 원인이기도 합니다.)

마지막으로, 글의 성격에 맞게 기술 면접 전에 챙겨보면 도움이 될 만한 것을 이야기하자면..

  1. 구글에서 일반적인 “하드웨어 설계 엔지니어/하드웨어 검증 엔지니어/ 소프트웨어 엔지니어 ” 인터뷰 질문을 대충 한번 훓어보고 오면 도움이 됩니다. 예를 들어 하드웨어 엔지니어라면 metastable/CDC 문제는 아주 기본입니다. (http://babyworm.net/archives/150 )
  2. 경력 사항 중 중요한 프로젝트에 대해서 한번 보면서, 당시에 “어떻게” 스펙을 정했는지, “어떻게” 일을 진행해 나갔는지, “어떻게” 검증 시나리오를 작성했는지, “어떻게” 합성 조건을 잡았는지 등을 기억해 보는 것도 도움이 됩니다. “어떤”일을 했는지도 중요하긴 한데 “어떻게”가 더 중요합니다.
  3. 목적으로 하는 회사에서 원하는 것이 어떤 것인지 확인해 보는 것도 중요합니다. 보통 필수 부분과 우대 부분이 있는데, 이 부분에서 대해서 강조하는 것이 좋습니다.
  4. 면접이란 것이 ‘지원자’가 이 회사를 선택하지 않으면 이루어질 수 없습니다. 따라서, 면접 과정에서 이 회사에서 나에게 어떤 것을 원하는지를 탐색해 보는 것도 잊으면 안될 것 같습니다. (물론, 국내에서는 이게 허용되지 않는 곳도 있습니다만…)

진짜 마지막으로, 인터뷰는 누구를 배제하기 위한 과정이 아니라, 뽑기 위한 과정이기 때문에 질문이 반복되더라도 ‘공격받는다’라고 생각하셔서 당황하실 필요가 없다고 봅니다.

면접 보시는 분들께 좋은 결과가 있길 바랍니다.

Leave a Reply