[코딩 인터뷰] 코딩 인터뷰 및 코딩 테스트 소개

코딩 인터뷰 시리즈

  1. [코딩 인터뷰] 코딩 인터뷰 및 코딩 테스트 소개 (현재 글)
  2. [코딩 인터뷰] 국내 기업 코딩 테스트 플랫폼 활용 현황
  3. [코딩 인터뷰] 온라인 코딩 테스트의 사전 준비사항
  4. [코딩 인터뷰] 화이트보드 코딩 인터뷰

이 글의 내용은 《파이썬 알고리즘 인터뷰》 책에 수록된 내용을 기반으로 작성하였습니다.

<목차>

코딩 인터뷰

코딩 인터뷰란 무엇일까요?

코딩 인터뷰란 기술 직군 채용을 위한 기술 문제 중심의 개발 인터뷰를 말합니다. 코딩 인터뷰는 마이크로소프트가 처음 개척한 것으로 알려져 있는데, 평소 빌 게이츠는 퍼즐에 상당히 몰두했다고 합니다. 이 때문이었는지 마이크로소프트에서는 퍼즐에서 영향을 받은 문제들이 출제되기 시작했고, 처음에는 논리 문제, 이후에는 프로그래밍과 관련된 질문들로 점차 확대되었습니다.

이후 코딩 인터뷰는 구글, 페이스북 등이 적극적으로 도입하면서 꾸준히 발전해왔습니다. 특히 오늘날 많은 기업이 이렇게 코딩 인터뷰를 열심히 진행하는 이유로는, 코딩 인터뷰를 적극적으로 도입하면서 개발자를 채용해온 구글의 성공에 기인한 바가 큽니다.

일반적으로 코딩 인터뷰란 오프라인 면접장에서 화이트보드를 이용해 후보자의 기술 지식, 코딩 능력, 문제 해결 역량, 창의성 등을 테스트하는 것을 말합니다.1 최근 대부분의 IT 기업들은 코딩 테스트 플랫폼을 이용해 온라인에서 점수 순으로 먼저 필터링하기도 합니다. 일정 점수를 취득하지 못하면 면접의 기회조차 주어지지 않는 셈인데요, 코딩 테스트 플랫폼을 이용한 시험은 과거 정보 올림피아드, ACM-ICPC(국제 대학생 프로그래밍 대회)등의 경진대회와 유사합니다.

다만 최고 점수를 가려내 시상을 목적으로 하는 경진 대회와는 달리, 개발자 채용을 위한 코딩 테스트는 점수 기준이 다소 느슨하다는 점, 그리고 실무와 관련이 있을 만한 적절한 난이도로 구성된다는 차이가 있습니다.

코딩 인터뷰와 코딩 테스트

최근에는 코딩 인터뷰보다 코딩 테스트라는 용어를 많이 쓰는 편인데요, 코딩 인터뷰는 ‘코딩 면접’, 코딩 테스트는 ‘코딩 시험’이라 말할 수 있습니다. 대개 면접관이 함께 하는 방식은 ‘인터뷰’로 분류하고, 시험을 치르는 방식은 ‘테스트’로 분류합니다. 오프라인에서는 거의 대부분이 면접관과 함께하므로 ‘온사이트on-site 코딩 인터뷰’ 또는 ‘오프라인 코딩 인터뷰’로 분류할 수 있으며, 이 중에서 화이트보드를 이용해 코딩 문제 풀이를 진행하는 경우 ‘화이트보드 코딩 인터뷰’로 분류하며, 대부분의 온사이트 코딩 인터뷰는 화이트보드 코딩 인터뷰이기도 합니다.

온라인으로 치를 때는 대개 문제를 보면서 시험을 치르는 형태이므로 ‘온라인 코딩 테스트’로 분류할 수 있습니다. 드물게도 면접관이 배석해 함께 온라인에서 메모장 등으로 화면을 공유하면서 코딩을 진행하는 경우에는 ‘온라인 코딩 인터뷰’로 분류하기도 합니다.

지금까지 설명한 내용을 표로 정리해보면 다음과 같습니다.

명칭 온라인/오프라인 면접관 참석 도구
온사이트(오프라인) 코딩 인터뷰 오프라인 o 관계 없음
화이트보드 코딩 인터뷰 오프라인 o 화이트보드
온라인 코딩 인터뷰 온라인 o 메모장
온라인 코딩 테스트 온라인 x 코딩 테스트 플랫폼

이 글에서는 코딩 인터뷰에 대해 얘기하지만, 그중에서도 면접관이 참석하지 않는, 테스트 플랫폼을 이용 ‘온라인 코딩 테스트’에 좀 더 집중해서 살펴보도록 하겠습니다. 물론 시리즈의 마지막에는 오프라인에서 진행하는 화이트보드 코딩 인터뷰에 대해서도 살펴보도록 하겠습니다.

온라인 코딩 테스트 플랫폼

국내외에는 이미 코딩 인터뷰를 위한 다양한 코딩 테스트 플랫폼이 존재합니다. 회사마다 채택하는 플랫폼들이 다르기 때문에, 여러분이 지원할 회사가 어떤 플랫폼을 사용할지는 단정지어 말하기는 어렵습니다. 무엇보다 시기마다 다른 플랫폼을 채택하고 서비스도 끊임없이 업그레이드하기 때문에, 이 책에서 몇몇 플랫폼을 상세히 언급한다 해도 언제 또 바뀔지는 모를 일입니다. 따라서 이 글에서는 특정 코딩 플랫폼에 대한 상세한 내용보다는 좀 더 일반적인 관점에서 코딩 플랫폼을 바라보고자 합니다. 가능하면 공통된 내용으로 모든 경우에 해당되는 내용을 중심으로 살펴봅니다.

먼저, 국내 회사에서 주로 사용하는 코딩 테스트 플랫폼으로는 크게 다음 4개 서비스 정도를 꼽을 수 있습니다.

해외에서는 오래전부터 기업의 코딩 테스트가 일반화되어 있다 보니, 좋은 플랫폼들이 이미 많이 나와 있는 편입니다. 그중에서도 해커랭크HackerRank가 가장 유명하며, 국내 기업들도 많이 사용하고 있습니다. 위에 스크린샷도 해커랭크 사이트의 모습입니다.

프로그래밍 경진 대회 사이트로 출발한 해커랭크는 처음에는 문제를 풀면서 점수를 취득해 개인 순위를 정하는 경쟁 플랫폼이었습니다. 원래는 인도에서 출발한 회사였는데, 점점 인기를 끌기 시작하자 투자를 받고 미국으로 본사를 이전했으며, 유료 서비스로 기업의 코딩 테스트 플랫폼 사업을 병행하고 있습니다. 많은 기업이 해커랭크를 이용해 코딩 테스트를 진행하고 있으며, 기업의 유료 회원에게는 인터넷에 공개되지 않은 문제를 제공하는 서비스도 제공합니다. 각 기업은 해커랭크가 노출 여부를 확인해준 문제들을 골라서 입사 문제로 출제할 수 있는데, 이 경우 문제를 풀어야 하는 지원자 입장에서는 인터넷에 없는 문제가 많이 출제되므로 풀이가 까다로운 편이기도 합니다.

코딜리티리모트인터뷰는 좀 더 코딩 테스트에 가까운 서비스 입니다. 코딜리티는 영국에서 서비스하는 플랫폼이며, 리모트인터뷰는 아예 온라인 코딩 인터뷰에 특화된 플랫폼입니다.

국내 서비스로는 프로그래머스가 기업용 코딩 테스트 플랫폼으로 선전하고 있습니다. 주로 대기업 공채처럼 특정 시간에 많은 인원이 대규모로 진행하는 이벤트에는, 빠르게 장애 대응을 할 수 있는 국내 플랫폼이 많이 활용되는 편입니다.

이외에도 백준 같은 국내 사이트가 있지만 백준은 코딩 테스트 플랫폼이 아닌 개인용 문제 풀이 서비스에 가깝습니다. 가장 인기 있는 알고리즘 문제 풀이 사이트 중 하나인 리트코드도 마찬가지인데 리트코드는 코딩 테스트 플랫폼이 아닌 개인용 문제 풀이 서비스입니다. 이외에도 수학 문제를 컴퓨터로 풀이해서 정답을 제출하는 프로젝트 오일러 같은 사이트도 있습니다.

온라인 코딩 테스트 주의 사항

주의할 점은 코딩 테스트 플랫폼마다 각기 다른 방식으로 동작한다는 점입니다. 예를 들어 해커랭크는 테스트 케이스를 보여주지 않습니다. 테스트 케이스를 보여주도록 사이트에서 변경할 수 있으나 이 부분은 해당 기업의 선택입니다. 대표적으로 카카오가 테스트 케이스를 보여주지 않도록 설정하고 있으며, 카카오 경력 채용으로 해커랭크에서 코딩 테스트를 치르는 경우 테스트 케이스를 볼 수 없습니다. 이 경우 일부 테스트가 틀렸다고 에러가 나면 왜 틀렸는지 스스로 코드를 보면서 유추해 나가야 합니다. 타임아웃도 마찬가지 입니다. 갑자기 타임아웃이 나기 시작해도, 어떤 입력값 때문인지를 알 수 없습니다. 코드를 보며 스스로 문제를 찾아내야 합니다.

온라인 코딩 테스트 합격 기준

카카오, 해커랭크

합격 기준은 기업마다 다릅니다. 어떤 기업은 몇 문제가 틀려도 면접 기회를 주는 반면, 카카오의 경우는 합격 기준이 상당히 높은 편입니다. 문제는 물론 테스트 케이스를 하나만 틀려도 진행이 어렵습니다. 게다가 해커랭크는 입력값을 보여주지 않기 때문에 스스로 코드 디버깅을 통해 문제를 풀어 낼 수 있는 역량이 필요합니다.

또한 면접관은 면접자가 제출한 코드를 분 단위로 꼼꼼히 리뷰하는 편이므로 허투루 답을 제출하지 않는게 중요합니다. 동작한다고 풀이를 아무렇게나 작성하거나 다른 사람이 풀이한 흔적이 있다면, 코드 리뷰를 통해 한 번 더 검증하게 되고 이후 면접에서도 집중적으로 질문을 받게 될 것이라는 점을 명심해야 합니다.

라인, 리모트인터뷰

라인에서 예전에 사용하던 리모트인터뷰(라인은 이후에 프로그래머스로 코딩 테스트 플랫폼을 변경했습니다)는 상당히 독특한 플랫폼입니다. 문제 풀이는 매우 쉽습니다. 문제에 제공 되는 단 하나의 입력값만 통과하면, 문제를 풀이한 것으로 간주되며 그대로 시험이 종료 됩니다.

하지만 내부적으로는 별도로 채점하여 기업 담당자에게 점수를 알려주는 형태입니다. 즉 시험을 치른 사람은 자신의 코드가 정답인지, 몇 점을 받았는지 등을 전혀 알 수 없는 방식입니다. 입력값을 하나만 통과해도 제출이 되니까 매우 쉬워 보이지만, 사실은 내부적으로 채점해 점수를 계산하면서도 정작 면접자에게는 점수를 알려주지 않습니다.

따라서 시험을 치르는 입장에서는 자신의 코드가 올바른지, 자신이 몇 점을 받았는지조차 알지 못하는, 어떻게 보면 해커랭크보다 훨씬 더 어려운 방식입니다. 게다가 기준 점수 이하인 경우, 담당자에게 지원자의 제출 코드조차 보여주지 않고 시스템 상에서 바로 탈락으로 처리됩니다. 풀이하는 사람 입장에서는 가장 쉽게 풀지만 가장 까다롭게 평가받는 셈입니다. 이 시스템은 코드를 제출한 사람은 정답이라고 생각하고 그냥 종료해버리고 나서, 막상 채점 시 점수를 낮게 받아 탈락하는 상황을 겪을 수 있기 때문에 주의가 필요합니다. 무엇 보다 디버깅을 할 기회가 주어지지 않으며 심지어 디버깅이 필요한지조차 모르게 됩니다.

온라인 코딩 테스트 플랫폼 특징 파악

무엇보다도, 이와 같은 각 플랫폼의 특징을 파악하는 게 중요합니다. 해커랭크는 기업에서 사용하는 코딩 테스트 플랫폼이면서 개인을 위한 문제 풀이 서비스도 제공합니다. 기업에서 사용할 때나 개인이 사용할 때나 동일한 플랫폼을 이용하게 되므로, 평소 해커랭크에서 꾸준히 문제 풀이를 해본다면 추후 카카오나 네이버에 경력 개발자로 지원시 코딩 테스트를 치르는 데 많은 도움이 될 것 입니다. 적어도 플랫폼의 특이한 특징으로 인해 혼란을 겪는 일은 크게 줄어들 것입니다.

대부분 온라인 코딩 테스트는 메일로 문제가 출제되고, 시작 버튼을 클릭하는 순간부터 문제 제출이 완료되기 전까지를 제한 시간으로 정합니다. 플랫폼에 대해 충분히 숙지하지 못한다면 엉뚱한 데서 시간을 허비할 수 있습니다. 각각의 코딩 테스트 플랫폼들은 시험을 치르기에 앞서 연습 문제를 제공해 플랫폼에 익숙해질 수 있는 충분한 시간과 기회를 제공 하므로, 사전에 해당 플랫폼의 활용 방법을 충분히 숙지해야 합니다.

만약 처음 써보는 플랫폼이고 신중하게 시험에 임하고 싶다면, 적어도 한 시간 이상은 계속 연습 문제를 풀어 보면서 익숙해진 다음 본격적으로 문제 풀이에 임하기를 추천합니다.

is a collection of Papers I have written.
© 2000 - Sang Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.