개발자 라이브 코딩 테스트 실전 뽀개기
지난 글에서는 라이브 코딩 테스트 4단계 공부법에 대해 소개드렸습니다. 공부할 게 생각보다 많죠. 이렇게 열심히 준비했는데 실전에서 제대로 못해서 면접에서 탈락하면 너무 아쉽지 않을까요? 이번 글에서는 라이브 코딩 테스트 실전에서 최대한의 효과를 내는 5단계 가이드를 공유드립니다.
1. 문제 정확히 이해하기
2. 구현 방식 계획하기
3. 코드 작성하기
4. 코드 검증하기
5. 코드 분석하기
라이브 코딩 테스트는 면접관의 문제 기술로 시작됩니다. 이때 문제를 정확하게 이해하는 것이 중요합니다. 만약 문제를 잘못 이해하고 코드를 작성하기 시작하면, 상당히 많은 시간을 낭비하게 될 수도 있습니다. 코드를 반 정도 쓰고 나서야 잘못 시작했다는 걸 깨닫는다면 다시 처음부터 다시 풀 시간이 부족하겠죠. 따라서 코드를 작성하기 전 가장 먼저 문제를 정확히 파악하는 게 중요합니다. 문제 내용 중 이해가 가지 않는 부분이 있다면 부연설명을 요청하고, 질문을 통해 문제 풀기에 필요한 정보를 미리 정확하게 파악하세요.
이 단계에서 할 수 있는 질문의 예제입니다.
입력값 타입은 무엇인가요?
출력값 타입은 무엇인가요?
입력값의 범위는 어떻게 되나요?
입력값 X를 넣으면 출력값 Y가 나오는 게 맞나요?
문제를 정확히 이해했다면, 코드를 쓰기 전 아직 해야 할 일이 하나 더 남았습니다. 어떻게 코드를 작성할지 계획하는 일이죠. 문제를 보고 나서 떠오르는 구현 방식에 대해 면접관과 함께 상의하세요. “이런 자료 구조를 사용해 이렇게 풀면 좋을 것 같다”라고 하나의 접근 방식을 제시하고, 면접관의 피드백을 들어보는 겁니다. 여러 방식이 생각났다면 두 개 이상의 옵션을 얘기해보는 것도 좋은 방법입니다. 혹은 아예 떠오르는 방식이 없다면 브루트 포스(brute force)로라도 시작해 볼 수 있습니다.
코드를 작성하기 전 구현 방식을 계획하는 단계를 거치면 이런 점이 좋습니다.
첫째, 최적의 구현 방식을 생각해낼 시간을 벌 수 있습니다.
둘째, 접근 방식이 아예 틀린 경우 면접관이 힌트를 주기도 합니다.
셋째, 미리 구현 방식을 계획해 놓았기 때문에 코드를 작성할 때는 코드에만 집중하면 됩니다.
드디어 코드를 작성할 차례입니다. 1단계에서 문제를 정확히 파악하고, 2단계에서 구현 방식을 계획해 두었으니 코드를 쓰기가 좀 더 수월해졌을 겁니다. 코드를 작성할 때는 두 가지를 꼭 기억해야 합니다.
1. 면접관에게 설명하면서 코딩하기
코드를 쓸 때는 면접관과 끊임없이 소통해야 합니다. 면접관이 라이브 코딩 테스트에서 보고자 하는 것은 지원자가 주어진 문제를 코드로 구현하기까지 생각을 발전시켜 나가고 소통하는 그 모든 과정입니다. 물론 시간 내에 문제를 풀 수 있는 능력도 중요하지만, 그건 라이브 코딩 테스트에서 보는 수많은 요소 중 한 부분일 뿐입니다. 그냥 문제만 풀면 된다면 굳이 면접관이 실시간으로 지켜볼 필요가 없죠.
문제를 푸는 과정을 면접관이 확실히 이해할 수 있도록 계속 설명하면서 코드를 써 나가야 합니다. 말하면서 코딩하기란 쉬운 일이 아니기 때문에, 혼자 문제를 풀 때도 설명하는 연습을 해보시는 걸 추천드립니다. 누군가와 함께 모의 면접을 볼 수 있는 기회가 있다면 더 좋습니다.
2. 클린 코드 작성하기
면접에서 읽기 쉽고 완성도 높은 클린 코드를 작성하는 것은 굉장히 중요합니다. 그런데 제한 시간 내에 문제를 푸는 것에 집중하느라 이 부분을 놓치는 지원자가 생각보다 많습니다. 면접관 입장에서는 지원자가 아무리 문제를 빠르게 풀어도 코드를 알아보기 어렵게 엉망으로 작성한다면 좋은 점수를 줄 수 없습니다. 결국은 함께 일하고 싶은 동료를 뽑는 자리인데, 수준 떨어지는 코드를 쓰는 개발자를 팀에 들이고 싶을까요? 제가 면접관으로 들어갈 때는 이런 지원자는 100% 떨어트립니다.
시간이 부족하다고 해서 코드의 퀄리티를 놓치지는 마세요. 실무에서 쓰는 수준으로, 아니 그보다 더 정성을 들여서 코드를 작성하셔야 합니다. 변수명과 함수명은 의미를 잘 전달하도록 명명하고, 복잡한 함수는 작게 쪼개서 코드의 가독성과 완성도를 높이세요.
코드를 다 작성했다면, 다시 한번 읽어보고 혹시 오탈자나 버그는 없는지 꼼꼼히 검증해 보세요. 실수한 부분이 없다면 테스트로 넘어가면 됩니다. 면접 환경에 따라 테스트를 돌려볼 수 있는 툴이 갖춰져 있다면 직접 테스트 코드를 작성해서 실행해보고, 그렇지 않다면 머릿속으로 테스트를 돌려본다고 생각하고 한 줄 한 줄 설명하면서 결괏값을 검증해 보세요. 보통 면접관이 한두 개의 테스트 예제를 제공하는데, 그 외에도 엣지 케이스(edge case)를 커버할 수 있는 테스트를 추가로 만들어서 돌려보세요.
면접관에 따라서 테스트 주도 개발(TDD) 스타일을 추구할 수도 있는데, 이 경우에는 테스트 코드 작성을 3단계 이전에 먼저 해야 합니다. 테스트 코드를 먼저 작성하고 그 후에 메인 코드를 작성하는 거죠. 코드를 작성하기 전에 이 부분을 먼저 물어보고 시작하시는 게 좋습니다.
이전 단계에서 테스트를 통해 코드가 원하는 대로 잘 작동하는 것을 검증했습니다. 하지만 아직 여기서 끝이 아니죠. 작성한 코드의 효율성을 분석할 차례입니다. 코드의 시간 및 공간 복잡도를 빅오 표기법으로 분석해 보세요. 그리고 분석한 후에는 코드를 더 효율적으로 최적화할 방법은 없는지, 리펙토링 하고 싶은 부분은 없는지 살펴보세요. 만약 코드를 고칠 시간이 부족하다면, “시간이 더 주어진다면 이렇게 개선하고 싶다”라고 말로 얘기하셔도 좋습니다. 꼭 코드로 작성하지 않더라도 이런 아이디어가 있다는 걸 보여주는 게 중요하니까요.
여기까지 라이브 코딩 테스트 실전 5단계 팁을 설명드렸습니다. 단언컨대, 라이브 코딩 테스트를 처음부터 잘 보는 사람은 없다고 확신합니다. 여러분이 어렵다고 생각하신다면 다른 사람들도 어렵게 느꼈다는 뜻이에요. 다들 연습을 통해 조금씩 나아지는 거죠. 그러니 어렵다고 너무 좌절하지 마시고 하나씩 연습해 보세요. 오늘 공유드린 5단계 팁을 잘 활용하셔서 라이브 코딩 테스트에서 좋은 결과받으시길 바라겠습니다!
이전글:
다음글: