본문 바로가기

일상

2020 카카오 신입 개발자 공채 오프라인 코딩테스트 후기 및 결과

9월 21일 토요일 날 카카오 오프라인 코딩 테스트에 참여했던 것에 대한 후기와 결과입니다.

해당 테스트의 경우 판교에 있는 경기 창조경제 혁신센터에서 진행이 되었으며 횡단보도에서부터 안내해주는 사람이 서 계셨습니다. 그래서 시험장에 들어갈 때는 신분증으로 신원을 확인한 다음 명찰을 나누어주고 지정된 좌석에 앉도록 되어있었습니다. 자리에는 기본적으로 빵을 비롯한 과자, 볼펜, 공책이 놓여 있었으며 사전에 신청한 사람에 한해 노트북이 설치되어 있었습니다.
(추가로 들어보니 일부 사람들은 판교에 있는 카카오 오피스에서 보았다고 합니다.)
그리고 로비에서는 빵과 물, 그리고 스티커들을 가져갈 수 있게 해놓았습니다.

스티커와 명찰

시험 진행은 크게 3 부분으로 나뉘었습니다.

첫 번째 세션

첫 번째 세션에서는 자신이 개발 분야에 어떤 쪽에 관심을 가지고 있는지 자유롭게 서술을 하는 부분이었습니다. 해당 내용은 합격과 불합격에는 관련이 없으며 시험자가 어떤 생각을 가지고 있는지에 대해 알기 위해 진행하였습니다. 테스팅, 자동화, AI에 대해 간단한 생각을 적었습니다.

두 번째 세션

두 번째 세션의 경우에는 온라인으로 필기 시험이 진행되었습니다. 필기 시험 내용으로는 코딩, OS, 자료 구조, 알고리즘 등에 대한 전반적인 지식을 물어보는 문제가 출제되었습니다.

기억 나는 문제로는 각 자료 구조별 특징을 서술해 놓고 일치하는 문제, 라운드로빈 스케줄링으로 프로그램이 수행되었을 때 평균 대기 시간과 평균 반환 시간을 묻는 문제, 이진트리와 관련된 알고리즘 문제, 두 배열에 공통으로 있는 원소를 찾는 알고리즘에 대한 시간 복잡도 계산 및 같은 기능을 하면서 좀 더 시간 복잡도가 줄어든 것이 존재하는지 여부를 묻는 문제 등이 있었습니다.

공통 원소를 찾는 문제의 경우 단순하게 구현하면 O(N^2)에 해당하는 시간 복잡도가 나오게 되지만, 좀 더 빠르게 구현을 하면 일단 두 배열을 정렬한 다음에 (O(NlogN)) 하나의 배열에 있는 값에 대해서 다른 배열에 이진 탐색으로 찾는 방식으로 구현하면 최종적으로는 O(NlogN)이라는 결과를 얻을 수 있습니다.

해당 세션의 경우 답안을 제출하면 바로 채점이 되어 틀린 개수만 알 수 있고 어떤 문제가 틀렸는지는 알 수 없었는데, 저의 경우 1문제를 틀렸습니다.

세 번째 세션

그리고 마지막 세션에서는 API 문서와 개발하려고 하는 기능에 대한 설명을 주고 거기에 맞게 구현하는 것이 목표였습니다. 작년의 경우에는 엘레베이터 시뮬레이션 문제가 출제되었는데, 이번에는 친구 추천 알고리즘을 구현하는 것으로 출제되었습니다.

친구가 될 수 있는 확률을 4가지 경우로 나누어서 설명해놓았으며 해당 확률에 맞게 시뮬레이션이 돌아가며 모든 사람이 친구가 10명 이상이 될 때까지 시행합니다. 점수의 경우 시행횟수가 적을 수록 친구의 숫자가 많을 수록 등의 조건에 따라 계산되어 바로 점수를 확인할 수 있었습니다.

첫 번째 문제에서는 고정된 사용자 수이며 사람 수도 적기 때문에 각 경우마다 친구가 될 수 있는 확률의 계산이 충분히 가능하여 해당 확률을 계산하고 그 확률로 정렬을 한 다음 주어진 조건에 맞게 친구를 추천할 수 있도록 구현하였습니다. 해당 문제의 경우에는 19점을 획득하였습니다.

두 번째 문제에서는 사용자 수가 계속 증가하며 주소록에 있는 사람이 새로 추가되거나 삭제가 되기 때문에 친구가 될 수 있는 확률을 전부 계산하기에는 시간이 오래걸립니다. 그래서 휴리스틱을 활용해서 탐색 범위를 좁혀야 하는데, 저의 경우에는 (주소록에 있는 친구 수) * 1000 + (친구 추가된 수) 와 같은 형태로 각 사람별 점수를 계산한 다음 높은 순서대로 조건에 맞게 친구를 추천해주는 방식으로 구현하였습니다. 다른 사람의 경우 70점이 넘는 점수를 받았는데 저는 20점에 해당하는 점수를 획득하였습니다.

결과

세 번째 세션의 2번째 문제에 대한 점수가 낮아서 되기 힘들 줄 알았는데 운이 좋게도 합격할 수 있었습니다. 해당 문제에 대한 해설이 올라와서 어떤 식으로 구현을 하면 높은 점수를 받을 수 있는지 궁금합니다.

 

오프라인 테스트 합격 메일
1차 인터뷰 관련 메일