#코딩테스트
#코테
#개발자취업
#개발자이직
어느덧 상반기 공채 시즌이 돌아왔습니다! 새해도 끝나고, 3월이 코 앞으로 다가오면서 많은 구직자들이 취업 문을 두드리고 있어요. 공채를 폐지하거나 축소하고 수시 채용으로 전환한다는 기업이 늘고 있지만, 공채에 대한 관심은 여전히 뜨거운 감자로 남아있죠. (앗뜨뜨!)
한편 미래의 개발자를 꿈꾸는 분들께는 중요한 첫 관문이 하나 있어요. 바로 최근 몇 년 사이 개발자 채용의 필수 코스로 자리잡은 코딩테스트입니다. 👩💻 서류 전형에 통과하고 나면 누군가는 발등에 불 떨어진 심경으로, 누군가는 두근두근한 마음을 안고 코딩 테스트를 준비하기 마련이죠.
꽃피는 봄🌼, 바야흐로 ‘코테’의 계절! 스물네 번째 <주간 인프런> 에서는 코딩 테스트가 무엇인지 알아보고, 실제로 코딩테스트를 경험해봤던 인프런 팀원들의 소소하고 진솔한 경험담까지 전해드립니다. 목표를 향해 달려가는 취준생 여러분의 눈앞에도 멋진 꽃길이 펼쳐지길 기원할게요! (*ᴗ*✿)
그것이 알고 싶다! 코딩테스트
코딩테스트란, 알고리즘 문제 풀이 시험입니다. 제한된 시간 내에 알고리즘 문제를 풀게 함으로써 문제를 코드로 해결하는 능력을 측정하는 시험이죠.
기업, 분야, 전형마다 조금씩 차이는 있지만, 일반적으로 많은 기업이 개발자 채용 전형으로 크게는 서류 → 기술 면접 → 임원 면접(인성 면접, 컬처 면접, 팀 면접 등…) 의 세 가지 단계를 거치기 마련인데요, 이 중에서 코딩테스트는 서류와 기술 면접 사이에 주로 실시하는 절차입니다.
개발자 채용 공고를 찾아보면, 서류 검토 후 코딩테스트를 실시하는 경우가 꽤 흔해요.
2000년대까지만 해도 코딩테스트를 보는 일이 드물었지만 2010년대, 특히 2010년대 중반 이후부터 채용 전형에 코테를 포함하는 기업이 부쩍 늘었어요. 특히 지원자가 대거 몰리는 기업 및 전형에서는 주로 서류 전형에 통과한 지원자를 대상으로 기업이 요구하는 기본적인 문제 해결 역량이 있는지를 확인하고, 거르기 위한 중간 절차로 자리잡은 경우가 많습니다. 삼성전자, LG전자 등은 물론 일명 ‘네카라쿠배당토’1)라고 불리는 요새 핫한 기업 중 여러 군데에서도 채용 전형에 코딩테스트를 포함하고 있죠.
네카라쿠배당토?
국내 유명 IT 서비스 기업인 네이버, 카카오, 라인, 쿠팡, 배달의민족, 당근마켓, 토스의 머리글자를 따와 일컫는 말이에요. 개발자 사이에서 처우 등으로 입사 선호도가 높은 기업이라는 공통점이 있습니다.
피할 수 없는 첫 관문!
하지만 코딩테스트가 최소한의 커트라인 역할을 한다고 해서 얕봤다간 큰코다칠 수 있어요. 서류에서 탈락할 거라 짐작하고 기대도 안 하고 있던 기업에 덜컥 통과해버리는 바람에(!) 부랴부랴 코딩테스트를 준비하거나, 반대로 서류를 가뿐히 통과해서 면접을 준비하고 있었는데 코딩테스트에서 떨어져서 낙동강 오리알이 되는 경우도 의외로 많죠. 그만큼 누군가에게는 부담스러운 절차인 것도 사실이고요.
개발자는 코드로 말한다! 2021년 1월, 카카오커머스는 프로그래머스와 협업해 프론트엔드 개발자라면 누구나 이력서를 생략하고 코딩테스트와 과제를 통해 입사 지원을 할 수 있는 챌린지를 진행하기도 했어요. 경력 여부도 상관 없었죠. 누군가에게는 코딩테스트가 좋은 기회가 된 셈이죠! ⓒ프로그래머스, 카카오커머스
또 기업에 따라서는 커트라인을 위한 일회적인 테스트로 끝나지 않고, 기술 면접과 결합해 코드를 실시간으로 피드백하는 코딩 인터뷰 형식을 채택하는 경우도 있죠. 페이스북, 구글 등 실리콘밸리 기업이 대표적입니다. 화이트보드 위에 바로바로 코드를 써내려가야 하는 이른바 ‘손코딩’에 부담을 갖는 분들이 많기는 하지만, 문제 해결 능력을 어필할 수 있는 만큼 경력이 부족한 신입 프로그래머나 컴퓨터 계열을 전공하지 않았던 분들에게는 자신을 증명할 기회가 되기도 해요.
코딩테스트는 오프라인/온라인 어느 방식으로도 진행할 수 있는데요. 부정행위 방지 등을 위해 인터넷 검색을 제한한 오프라인 테스트를 치르는 경우도 많지만, 최근에는 코로나19의 영향으로 온라인 코딩테스트가 부쩍 늘었습니다. 때문에 평소 온라인 환경에서 알고리즘 문제를 풀어보는 데 익숙해질 필요가 있어요. 국내외 여러 알고리즘 문제풀이 서비스를 통해 다양한 난이도의 문제를 풀고 채점해 보고, 다른 사람들의 답안을 보고 참고할 수도 있어요. 응시하려는 기업의 코딩테스트가 실시될 환경을 감안해서 준비한다면 더욱 도움이 되겠죠? 아래는 알고리즘 문제를 풀어볼 수 있거나, 준비에 도움이 될 수 있는 사이트 목록입니다.
국내 | 해외 |
---|---|
|
|
같은 알고리즘 문제라고 해도 코드를 짜는 방식은 개발자마다 각기 다르죠. 백준에서는 각 알고리즘 문제마다 ‘숏코딩’ 항목을 통해 누가 가장 짧은 코드를 제출했는지를 보여주고 있어요. ⓒ백준
코딩테스트, 유리한 언어가 있다구요?
코딩테스트에서는 주로 응시한 기업이 허용한 여러 프로그래밍 언어 중 한 가지를 선택해서 문제를 풀게 되죠. 그만큼 ’어떤 언어가 가장 유리한지’가 개발자들 사이에서 종종 언급되는 화제이기도 한데요.
수많은 프로그래밍 언어가 있지만 지원자마다, 기업마다 응시하는 언어는 각기 다르기 마련입니다. 그중에서도 자주 거론되는 언어는 바로 C/C++와 Python(파이썬)이에요.
많은 개발자들이 코딩 테스트에 유리한 언어로 C, C++, Python을 꼽죠.
C/C++은 실행 시간이 빠르고 컴퓨터 구조와도 밀접한 연관이 있는 언어입니다. 그 덕에 간혹 전형에서 C/C++를 지정해서 요구하기도 하고, 알고리즘 경시대회를 준비할 목적에도 잘 들어맞죠. 또한 역사가 오래된 만큼 관련 자료를 찾아보기에도 편리합니다. 특히 많은 사람들이 코딩테스트로 C++를 준비하는 데는 STL(Standard Template Library)2)을 지원한다는 점 역시 한몫을 해요. 난이도가 높은 언어이기는 하지만, 알고리즘 사이트 내에서 레이팅(Rating) 및 랭킹이 높은 유저들 중에서는 C/C++ 사용자가 많다고 알려져 있죠.
STL?
표준 템플릿 라이브러리(Standard Template Library)의 축약어에요. 타입(Type) 독립적인 자료구조와 알고리즘을 사용하는 일반화 프로그래밍(Generic Programming) 개념을 구현하기 위한 C++ 라이브러리입니다.
최근 들어 부쩍 떠오르고 있는 Python은 문법이 쉽고 간결한 언어인 게 장점이에요. 덕분에 시간의 제약이 큰 테스트 현장에서는 핵심 로직만 간단하게 구현할 수 있죠. 뿐만 아니라 변칙적인 유형의 문제에 대응하기에도 적합합니다.
한편 한국에서는 Java(자바)로 코딩테스트에 응시하는 경우가 많습니다. 우선은 국내 웹/모바일 앱 개발 생태계에서 Java의 막강한 영향력을 무시할 수 없기 때문이죠. 그만큼 Java 관련 채용이 흔한데다 사용자도 많고요. 다만 코딩 테스트를 개발자의 최소 역량을 측정하기 위한 커트라인으로 활용하는 경우라면, 그 기업의 스택에 해당하는 언어로 응시를 하지 않았다고 해서 제약을 두지는 않습니다. (알고리즘을 짜고, 코드로 구현해 문제를 해결하는 능력을 보기 위해서니까요!)
“Hello, world!”를 출력하는 데는 수백 가지 방법이 있죠. 그만큼 많은 프로그래밍 언어가 있고요. ⓒThe Hello World Collection
C/C++, Python, Java는 수요가 높고 관련 자료도 많으며, 많은 기업에서 응시 언어로 지원하기 때문에 코딩 테스트를 준비하는 입장에서는 이점이 크죠. 하지만 비교적 ‘마이너’한 언어라고 해서 코딩 테스트에 완전히 부적합하다는 건 아니에요. 활용도가 높은 JavaScript(자바스크립트)/TypeScript(타입스크립트), 구글 공식 모바일 애플리케이션 개발 언어로 채택된 Kotlin(코틀린), iOS 개발에 필요한 Swift(스위프트), 최근 인기가 늘고 있는 Go(고) 등 기업에 따라서는 다양한 언어로 코딩 테스트를 응시할 수도 있습니다. 다만 기업에서 해당 언어를 지원하지 않을 가능성 역시 항상 염두에 두고 움직이는 게 좋겠죠.
정리하면 구직자 입장에서는 폭넓게 지원이 가능한 언어나 공부할 자료가 많은 언어가 코딩테스트를 준비할 때 특히 유용합니다. 하지만 자기에게 가장 잘 맞는 능숙한 주력 언어가 있다면 강점이 될 수 있는 만큼 기업에 지원하기 전 이전 채용 공고를 미리 살펴보면 좋아요. 내 성향과 강점, 전략을 균형있게 고려해 선택하고 준비하기를 바랍니다!
좀더 생생한 이야기가 궁금하다면...? 🤔
인프런 MD 위즈가 경험한 코테 비하인드!
코테 비하인드 스토리
짧은 기간이었지만 코딩테스트를 준비했던 썰과 저와 주변인의 재밌는 에피소드, 그리고 제가 코딩테스트를 포기했던 이유를 살짝 해 볼게요.
저는 컴퓨터 공학을 전공하고 자연스럽게(?) 코딩테스트 준비의 길로 들어섰어요. 다들 백준 문제를 풀고, 코딩테스트 날은 꼭 저녁만 되면 오늘 풀었던 코딩테스트 문제 이야기를 나누고, 취업 일정과 좋은 강의, 책을 공유하는 분위기였거든요. 저도 당연히 멋진 개발자의 꿈을 꾸며 공부를 시작했어요.
사실 알고리즘 문제는 난이도가 다양하고 어렵게 느껴지지만, 의외로 잘 나오는 유형이 정해져 있는 시험이기도 해요. DFS, BFS, Dynamic Programming, Brute Force 등은 테스트를 준비하다 보면 흔히 듣게 되는 대표적인 알고리즘이죠. 물론 알고리즘을 잘 이해하는 것도 중요하지만, 이 알고리즘을 가지고 문제를 어떻게 해결할 것인지를 익히는 게 중요하더라구요. 다양한 문제풀이 사이트를 활용해서 혼자서 시간을 정해 문제를 풀어보는 방식이 좋아요. (풀이를 먼저 보는 건 좋지 않아요!)
제가 경험했던 과거 기억나는 코딩테스트를 간단히 풀어볼게요.
✨😎💥
위즈의 코테 전적
S사 😵
졸업학기 1차 서류합격 후, 오프라인에서 코딩테스트를 진행했다. 2문제를 3시간 동안 풀었다. dfs, bfs 문제가 한 문제 꼭 나온다는 썰이 있다. (Java를 선택해서 망했다.)
K사 🥺
7문제정도 나오고 난이도가 다양하다. 앞쪽 문제는 풀만한데 뒤로 갈수록 Aㅏ..
L사 😨
특이하게 코딩테스트 전에 이론 문제 테스트가 있었다. 네트워크 관련 문제들이 나와서 멘붕이 왔던 기억이...
💦💦💦
실제로 경험했던 썰!
아찔했던 코테 에피소드
위즈(인프런 콘텐츠 MD) 🔮
“S사 코딩테스트를 봐야 하는데, 당시에 Python을 지원하지 않아 급히 Java 벼락치기를 했던 적이 있어요. 하지만 대학교 저학년 때 배운 언어이다 보니 기억에서 지워져 있었고, 그동안 Python을 주로 사용해오다 보니 변수 선언부터 너무 복잡해서 정작 시험장에서 엄청 헤맸던 기억이 납니다. (ㅠㅠ) 물론 최근에는 S사도 Python을 지원한다고 하더라구요! 원하는 기업에서 요구하는 언어 + 내가 편하게 사용할 수 있는 언어를 고려하셔서 준비하는 것이 좋겠네요.”
주스(인프런 백엔드 개발자) 🥤
“인프런에 들어오기 전, 알고리즘 문제뿐만 아니라 SQL 문제도 포함된 코딩테스트가 있어서 호기심에 한번 참가했어요. 알고리즘 3문항와 SQL 1문항으로 구성되었고 2시간이 주어졌어요. 코테 시작과 동시에 한번 문제를 둘러보고 1번부터 풀고 있는데, 갑자기 해당 문항에 문제가 있다는 경고문이 뜨더니 풀던 문항이 사라지고, 추가 시간 없이 새로운 문항이 하나 추가되었어요. 너무 당황스러운 경험이었지만, SQL 문제 푸는 건 재밌어서 나름 만족했습니다.”
주스의 인증샷! 백엔드 개발자를 찾고 있는 40여 개 기업 중 지원하고자 하는 기업에 이력서를 제출하고, 코딩 테스트에 응시하면 결과를 통해 기업과 지원자를 매칭해 주는 프로그래머스의 ‘2020 하반기 Dev-Matching(데브매칭)’에 지원했던 기록이에요.
위즈 친구 ‘선유도요정’ 님 🎁
“C++ 언어로 코딩테스트를 푸는데, 에디터에서 C로 설정을 해 놓고 문제를 풀고 있었던 거예요! 디버깅에도 아무런 문제가 없어서 아무 생각 없이 진행하고 있었는데, 벡터 함수를 쓰려고 보다가 그제서야 C로 설정되어 있다는 걸 뒤늦게 깨닫고 언어 설정을 변경했던 일이 있었습니다.”
꾸기(인프런 백엔드 개발자) 🌿
“대학교를 졸업하고 취직을 준비할 때, 당시엔 코테가 그렇게 유행은 아니어서 이론적인 걸 많이 준비하고 갔었거든요. 근데 한 회사에서 노트북 주면서 ‘이거 짜봐라, 저거 짜봐라’ 하더라구요. 예상치 못한 면접에 머리는 안 돌아가고 등에는 땀이 흐르는데 면접관은 조용히 노트북과 연결된 TV 화면을 보고 계시고... 정말 집에 가고 싶었던 자리였어요. ㅋㅋ”
저는 멋진 개발자의 꿈을 품고 코딩테스트 준비를 시작했는데, 문제가 안 풀릴 땐 정말 재미가 없었어요. 그러면 생각이 들더라구요. 이렇게 힘들고 재미 없는 일을 직업으로 갖게 되었을 때, 내가 견딜 수 있을까? 주변을 둘러보면 개발자 중에는 (좋은 의미의) ‘미친' 사람들이 정말 많았거든요. 코드를 짜는 것을 즐거워하고, 퇴근 후에도 코딩을 하면서 심지어 즐거워하는 사람들이요!
그래서 코딩테스트를 그만두고 이 개발지식과 함께, ‘내가 좋아하고 잘 할 수 있는 나만의 커리어’를 찾아가고 있어요. 하지만 저도 마음 한켠에 늘 개발자의 로망을 품고 있답니다..!
안녕히 계세요 여러분~!
상반기 채용 시즌을 준비하고 계실 여러분, 모두 좋은 소식이 가득하길 바래요. 💌 stack에 지식을 push하다보면, 필요할 때 pop할 수 있는 힘이 될 거예요! (그럼 stack이 비는거 아니냐구요? 그런건 알잘딱깔센 하시라구요~)
댓글 2
댓글을 작성해보세요.
와 진짜 유익하네요
정말 많이 배웟습니다.
저도 알고리즘에 관심이 있어서 정리해보고 있는데요, 같이 공부하면 좋을것 같아요
https://cafe.naver.com/dremdeveloper
코테는 증말 어려부면서 땀나고 집중하게 만들지요...흑흑..
그때만큼 집중 잘 되는 시간이 또 없지요.. 흑흑..
(안풀린 문제는 잠들기전에도 생각나더라구요..)