결국 떨어졌다..
그래도 카카오 모빌리티 같은 기업의
서류 / 코딩테스트 / 2차과제를 경험해봤다는 것을
위안삼아 다음 입사지원을 준비해야겠다.
면접 후기도 같이 적어봤다면 좋았겠지만
면접까지 갈 역량이 부족했나보다..
무튼 지원 경험을 공유해보려한다.
카카오 모빌리티 Android 직군은
카카오 T, 지하철 등 각종 android 앱 서비스를
만드는 일을 한다고 한다.
당연하게도 kotlin에 능숙해야하고,
이번 공채에서는 특히 a to z 경험을 강조했다.
'카페자리' 프로젝트를 기획부터 개발, 운영까지
모두 해봤기에, a to z 경험은 자신있었고,
서류, 1차, 2차 코딩테스트만 어떻게 넘기면
면접에서 비벼볼 수 있지 않을까 싶었다.
카카오 모빌리티의 서류는 이력서 / 포폴만 제출하는 식이었다.
별다른 자소서 문항은 없었기에,
이력서와 포폴에 자기소개 부분이 포함되어있으면
좋을 것이라고 생각했고, 이력서의 마지막 부분에 추가했다.
또한, 인사 담당자들이 궁금할만한 포인트에 적당히
링크를 심어서 바로 확인할 수 있게 했다.
결과는 합격!
최근 여러 앱개발자 공고에 지원해봤으나 모두 서탈이었다.
어떻게 이력서를 고쳐야하나 고민하던 차에
카카오 모빌리티의 서류 합격은 정말 달콤한 소식이 아닐 수 없었다.
후에 단톡방에서 들리는 바로는 거의 대부분 합격이라한다.
이후 테스트에서 당락을 가르나보다.
코딩테스트는 Codility라는 플랫폼을 통해 진행되었다.
코테 준비는 평소에 착실하게 해왔기에
따로 더 준비한다기보다는 감을 잃지 않게만 하려..고..했었다..
다음 문구를 보기 전까지는...
설마설마하던 일이 벌어지고야 말았다.
나는 Android 개발자지만 python으로만 코테를 준비해왔다.
python이 더 쉽고 모듈 활용이 편했기 때문이다.
혹시나 하고 취업박람회에서 카카오 모빌리티 부스에 찾아가
코테 응시언어에 제한이 있는지 물어보기도 했다.
분명 이전에는 응시언어 제한을 둔적은 없으니
파이썬으로 진행해도 될거라고 답변을 받았건만..
최근 개발자 채용 기준이 까다로워지긴 했나보다.
코테 응시일은 토요일, 안내 메일을 받은 시점은 수요일..
단 3일만에 코딩테스트 응시 언어를 바꿔야했다.
3일 간의 좌충우돌 코틀린 적응기는 추후 다른 포스팅으로 다뤄보겠다..
어찌저찌 밤을 새가며 코틀린으로 문제 풀이가
가능한 수준까지 실력을 끌어올렸고,
대망의 코테 응시일이 됐다.
문제는 총 3문제, 풀이시간은 140분이 주어졌고,
화상 감독이 없는 온라인 코딩테스트였다.
유형 | 난이도 | 구현시간 |
---|---|---|
간단한 자료구조 활용 및 구현 | 백준 solved.ac기준 실버1~3 정도? | 20분 |
토너먼트 대진에서 무언가 상세 구현을 해줘야 하는 문제로 기억한다.
단순하게 조건대로 순회만 해주더라도 시간복잡도가
NlogN을 넘지 않기에 직관대로 구현하면 됐다.
유형 | 난이도 | 구현시간 |
---|---|---|
BFS + 시뮬레이션 | 백준 solved.ac기준 골드 3~5 정도? | 90분 |
백준에서 비슷한 유형의 문제를 풀어봤기에,
구현을 고민한 시간은 짧았다.
다만 코틀린 활용 미숙으로 인해 의도하지 않은
버그가 계속 발생했고, 당황해서 디버깅에 시간을 꽤 썼다.
남은 시간이 30분가량이었기에, 긴장하며 3번 문항으로 넘어갔다.
유형 | 난이도 | 구현시간 |
---|---|---|
DP+구현orDFS | 백준 solved.ac기준 골드 5 정도? | 30분 |
다행히 문제는 시간내로 다 풀었다.
스킬트리 관련 문제라 혹시 위상정렬을
사용하는 건가 하고 자세히 읽어봤는데,
간단한 메모제이션만 해주고 순회를 진행하면 됐다.
결과는 합격..!!!
난이도가 결코 쉽다고는 할 수 없었지만,
카카오 정도 되는 기업의 코테를 준비하는 사람이라면
세 문제를 모두 풀었을 것 같다.
합격컷은 3솔+의도한 시간복잡도 기준 맞추기
정도라고 생각이 된다.
실제로 지인은 꽤 쉽게 나왔다고 느꼈고,
세 문제 모두 풀었으나 불합격이었다.
어딘가 코너케이스에 잘못 얻어맞은듯 싶다.
과제는 주어진 조건에 맞는 구현물을
메일로 다시 회신하는 방식으로 진행되었다.
기간은 약 5일정도로 널널하게 주어져 준비할 시간은 충분했다.
당연히 과제 내용을 자세하게 밝힐수는 없다.
하지만 5일이면 충분히 구현하고도 남을 시간이었기에
무언가 숨겨진 의도가 있을 것이라 생각했다.
나는 신입 개발자에게 바라는게 뭘까 고민했고
다음과 같이 결론을 내렸다.
1. 아키텍쳐에 대한 고민을 보고싶어할 것이다.
2. 협업이 가능한 개발자인지 확인하려할 것이다.
이에 내가 아는 선에서 Clean Architectrue와
MVVM패턴을 과제에 녹여내려했다.
또한, Kdoc과 주석, readme 파일을 최대한 보기 쉽고
자세하게 작성하여 협업에 능한 사람인 것을 어필하려했다.
.
.
.
.
.
선배 개발자 분들이 보기에는 많이 미흡했다보다.
비전공자이기에, CS전공 지식에서는 약할 수 있어도
구현만큼은 꽤 할 것이라는 근자감이
깔끔하게 증발한 순간이었다.
인사 담당 메일로 피드백을 받을 수 있는지
조심스럽게 문의해봤으나..
바쁜 와중에 답신이 올거같지는 않다.
해서 나름대로 탈락 원인을 다음처럼 분석해봤다.
구현은 어찌저찌 했으나 코드가 현업에서 쓰이기에는
미숙했을 수 있다. 어디가 미숙한지는 모르겠으나
실력 좋은 개발자분들의 코드를 더 읽어봐야겠다.
Clean Architecture와 di를 구현한답시고 dagger hilt,
hilt-viewmodel, hilt-navigation등을 가져다 썼고
api 통신도 retrofit을 사용했다.
스스로 구현할 줄 모르는 개발자로 보였을 수 있다.
기업 규모가 있다보니 아직 compose보다는 xml 코드가
많을 것이다. 그런데 과제에서 jetpack-compose로만
UI를 짜놨으니, xml로는 화면 구현을 못하나? 싶었을 수 있다.
생각해보면 과제 프로젝트 규모가 그리 크지 않다.
이정도 프로젝트에 Clean architecture니 MVVM이니
도입하는게 오히려 안좋게 보였을 수 있다.
단순 api call을 하고 보여주는 정도가 아니라,
대용량 데이터를 call하고 극한의 예외케이스를
테스트해보는 자체 성능테스트가 존재할 수 있다.
이런게 존재한다면 애초에 아키텍쳐와 주석에 신경쓴
내 전략은 뿌리부터 틀려먹은 셈이다.
비록 떨어졌지만 여기서 배워가는 것도 많다.
애초에 나같은 비전공자가, 경력자들이 판치는
요즘같은 개발자 취업시장에서 2차까지 온것도
행운이었다고 생각한다.
내가 작성한 과제를 다시 분석하면서 미흡한점을 개선하고,
더 좋은 코드를 쓸 수 있게 노력해봐야겠다.
개발자 취준생들 모두 파이팅!!
준비하느라 고생 많으셨어요 👏🏻 사람에게는 저마다의 파도가 있는 법이죠. 악어님이 작은 파도들 때문에 스스로가 바다임을 잊지 않으셨으면 좋겠습니다.. 더 좋은 기회가 찾아올 거예요!