코테은(는) 여기로 연결됩니다.
스리랑카의 수도의 준말에 대한 내용은
스리자야와르데네푸라코테 문서, 나루토의 도구에 대한 내용은
코테(나루토)
문서
, 코레일테크의 약칭에 대한 내용은
코레일테크
문서
참고하십시오.1. 개요
코딩 테스트는 소프트웨어 관련 기업에서 지원자의 기술적인 역량을 시험하기 위해 실시하는 알고리즘이나 직무 연관성이 있는 기술에 대한 구현 테스트를 의미한다.'코테'라고 줄여서 부르기도 한다. 미국에서는 Coding Test라고 부른다.
2. 채용 절차
신입 채용의 경우 미국은 영토가 워낙 넓기에 다양한 인재의 지원을 위해 대기업(실리콘밸리) 같은 경우 온라인 코딩테스트를 하는 곳이 많다. 절차가 보통 서류 -> 온라인 코딩테스트 -> 기술면접 -> 최종합격이다. 경력직의 경우 서류 -> 기술면접(포트폴리오) 및 코딩면접(coding interview) -> 최종합격. 어정쩡한 경력은 코딩면접(보드, 손 코딩)을 보기도 한다. 미국은 세계에서 가장 일자리가 많은 나라라 중소기업 같은 경우는 코딩 테스트를 안 보는 곳이 더 많다. 코딩 테스트는 채용 절차 중 가장 기본적인 것이다. 코딩 테스트 잘 본다고 무조건 면접 통과해 입사하는 것도 아니다. 코딩 테스트를 통과할 실력과 기술 면접 답변 능력 둘다 갖춰야 비로소 지원자들과 경쟁을 할 수 있는 것이다.3. 활용
시험 응시자들은 해당 문제를 해결하는 컴퓨터 프로그램을 작성하고, 소스 코드를 온라인 판정(Online Judge) 프로그램에게 제출해야 한다. 온라인 저지 프로그램은 미리 준비되어 있는 테스트 케이스들을 자동화된 방식으로 채점한다. 카카오, NHN, 삼성전자 등의 주요 IT 관련 기업들이 프로그래머를 채용하기 위한 시험 방식의 하나로 활용하고 있다.4. 역사
1990년대에 마이크로소프트의 빌 게이츠가 처음 시행했다. 이후 아마존, 페이스북 및 구글을 비롯한 대형 기술 회사들이 도입했다.국내에는 다음커뮤니케이션이 코딩 테스트를 2005년에 처음 도입했다. #
카카오, 현대오토에버 등 일부기업은 서류전형을 폐지하고 프로그래밍 테스트와 인터뷰를 통해 개발자 공채를 진행한다.
대부분의 회사들은 코딩 테스트를 실시할 때, 아래에서 설명할 온라인 저지 서비스를 이용하여 출제 / 답안 검사 / 결과 계산까지 모두 외부에 일임하는 편이다.[1] 다만 일부 회사들은 자체적으로 문제 혹은 과제를 만들어 출제하기도 한다.[2]
5. 온라인 저지
코딩 테스트를 준비하고 연습하기 위한 온라인 저지 서비스를 제공하는 사이트들이 많이 있다.5.1. 국내
5.2. 해외
- Codeforces: 코드포스
- TopCoder: 탑코더
- AtCoder: 앳코더
- LeetCode: 리트코드
- HackerRank: 해커랭크
- CodeChef
- DMOJ
- TLX
6. 출제 유형
6.1. 프로그래머스의 분류
프로그래머스 사이트의 코딩테스트 고득점 Kit[3]을 보면 코딩 테스트에 나오는 문제 유형을 이렇게 분류해 놓았다.- 해시
- 스택/ 큐
- 힙(Heap)
- 정렬
- 완전 탐색
- 탐욕법 (Greedy)
- 동적계획법 (Dynamic Programming)
- 깊이 우선 탐색 / 너비 우선 탐색 (DFS/BFS)
- 이진 탐색
- 그래프
6.2. 백준의 분류
백준 온라인 저지 사이트의 알고리즘 분류도 참고할 만 하다. 백준 온라인[4]에서 알고리즘 분류의 항목만 뽑아보면 다음과 같다.- 수학
- 문자열
- 재귀
- 브루트 포스
- 정렬
- 백트래킹
- 동적 계획법
- 그리디 알고리즘
- 스택
- 큐와 덱
- 분할 정복 알고리즘
- 이진 탐색
- 우선순위 큐
- DFS와 BFS
- 최단 경로: 다익스트라 알고리즘, 플로이드-워셜 알고리즘
- 투 포인터
- 트리
- 유니온 파인드
- 최소 비용 신장 트리
- 위상 정렬
- 세그먼트 트리
- 이분 매칭
- 네트워크 플로우
6.3. SW Expert Academy의 분류
SW 엑스퍼트 아카데미 사이트에서는 Reference Code[5]를 제공하는데, 이 레퍼런스 코드의 분류를 보면 다음과 같다.- 스택
- 재귀
- 큐
- 우선순위 큐
- 해시
- 트리
- 그래프
- 연결 리스트
- 삽입 정렬
- 퀵 정렬
- 카운팅 정렬
- 이진 탐색
- DFS 탐색
- BFS 탐색
- 파라미터 탐색
- 동적 계획법
- 순열과 조합
- 다익스트라 알고리즘
7. 코딩 테스트를 실시하는 기업
국내의 경우, IT 계열 대기업들은 채용 과정에서 코딩 테스트를 100% 실시하고 있다. 신입에 대한 대우가 좋은 편에 속하는 중견기업 수준에서도 대부분 시행되고 있는 편이다. 반면 중소규모나 스타트업 같이 신입에 대한 대우가 좋지 못한 업체들은 대부분 코딩 테스트를 보지 않고 있다.[6] 물론 회사도 처우도 별로인데 코딩 테스트까지 몇시간 내서 봐야한다면 괜찮은 직원은 안 오고 갈 곳 없어 아무 곳이나 다니려는 실력이 떨어지는 사람들만 올 확률이 높다.코딩 테스트는 일반적으로 신입 채용 과정에서 이루어지고 있다. 경력직의 경우 코딩 테스트의 결과 보다는 이 사람이 과거에 어떤 업체에서 어떤 프로젝트를 맡았으며, 본인이 기여한 바가 어떠한지 등을[7] 채용의 주된 기준으로 삼기 때문. 다만 대기업들은 전반적으로 경력직 채용에서도 코딩 테스트 과정을 실행하는 경우가 많다.[8]
미국의 경우 실리콘밸리는 대부분 시행하고 있고 그외 기업들은 찾아보면 안하는 곳도 많다. 미국 중소의 경우 대부분 안하고 있고 처음에 인턴으로 입사해 교육 받고 일하는 방식이다.
일본의 경우 몇몇 대기업을 제외하면 거의 안한다. 일본은 업무에 투입될 실력만 있다면 신입이 업무 처리 방식을 배워가는 문화이다. 미국과 일본에 비해 한국은 작은 내수와 남아도는 청년 인력으로 신입에 대한 기대수치가 매우 크다.
7.1. 국내
카카오네이버
라인
삼성그룹: 삼성 SW 역량 테스트
7.2. 해외
Google: 구글Facebook: 페이스북
Netflix: 넷플릭스
8. 코딩 테스트 공부를 위한 책
코딩 테스트를 공부하기 위해서는 먼저 자료구조와 알고리즘과 같은 컴퓨터 과학의 기초 과목들을 열심히 공부해야 한다. 하지만 정해진 시간 내에 주어진 문제들을 오류없이 해결해야 하므로, 어느 정도 문제 풀이 훈련을 해야만 한다는 것이 정설이다. 현업에서 수 년간 개발 업무를 한 사람도 별도의 연습이 없으면 어려움을 겪는게 코딩 테스트다.[9][10]코딩 테스트 공부에는 기존의 국제정보올림피아드, 한국정보올림피아드 등의 프로그래밍 경진대회 준비를 위한 책들도 분명히 도움이 된다.
-
알고리즘 문제 해결 전략 세트. 구종만. 인사이트. 2012년 11월
일명으로 종만북이라 불린다.
2020년을 기점으로 코딩 테스트 준비용으로 국내에서 책들이 출간되기 시작했다.
- 파이썬 알고리즘 인터뷰. 박상길. 책만. 2020년 7월.
- 이것이 취업을 위한 코딩 테스트다 with 파이썬. 나동빈. 한빛미디어. 2020년 8월
- 내일은 코딩테스트 with 파이썬. 윤인도. 김앤북. 2023년 6월
코딩테스트 합격자 되기 시리즈
* 코딩 테스트 합격자 되기 - 파이썬 편. 박경록. 골든래빗. 2023년 11월
* 코딩 테스트 합격자 되기 - 자바 편. 김희성, 박경록 골든래빗. 2024년 03월
* 코딩 테스트 합격자 되기 - C++ 편. 박경록 골든래빗. 2024년 05월
* 코딩 테스트 합격자 되기 - 자바스크립트 편. 이선협, 박경록 골든래빗. 2024년 07월
* 코딩 테스트 합격자 되기 - 파이썬 편. 박경록. 골든래빗. 2023년 11월
* 코딩 테스트 합격자 되기 - 자바 편. 김희성, 박경록 골든래빗. 2024년 03월
* 코딩 테스트 합격자 되기 - C++ 편. 박경록 골든래빗. 2024년 05월
* 코딩 테스트 합격자 되기 - 자바스크립트 편. 이선협, 박경록 골든래빗. 2024년 07월
코딩테스트 공부방법
* 코딩 테스트 공부방법. SK_MOUSE의 블로그 참고
* 코딩 테스트 공부방법. SK_MOUSE의 블로그 참고
9. 여담
- 코딩 테스트 난이도의 경우 한국과 미국 둘다 일해본 사람에 의하면 한국의 네이버, 카카오 등이 미국 유명 대기업들 보다도 어렵다는 후기들이 있다. 다른 나라들은 일반적인 알고리즘 문제가 나오는데 국내 대기업들의 경우 올림피아드에 나올 법한 문제가 나오기도 한다. 게다가 코테를 뚫어도 면접에서 신입채용인데 경력이 없으면 불리하다. 그리고 미국은 내수도 크기에 기업 수와 지원자도 많지만 대기업을 제외하더라도 중소기업도 많기에 신입 채용인원도 한국과 비교도 안되게 많기에 한국보다는 유효구인배율이 높다. 한국의 정보통신 유효구인배율은 2022년 12월 기준 0.13로 매우 심각한 상황. #
- 코딩 테스트를 준비한다는 것은 꼭 입사 이전에만 할 수 있는 것은 아니다. 스타트업이나 중소업체 등을 중심으로 코딩 테스트를 아예 채용 과정에서 실시하지 않는 업체들이 의외로 많기 때문.[11] 코딩 테스트를 잘 준비해서 중견기업 이상을 노릴 상황이라면 그렇게 하고, 그렇지 않은 상황에 처해있다면 차라리 대우가 나빠도 중소기업 중 취직이 가능한 곳 아무데나 들어가서 실무를 경험하며 경력을 쌓는게 더 좋은 방법일 수도 있다. 코딩 테스트를 치를 능력이 없더라도 무경력 신입보다는 2, 3년차 경력자라는 커리어가 취직에 더 도움이 되기 때문. 코딩 테스트를 망치면 거의 100% 탈락하는 신입과 달리 경력직 채용에서 코딩 테스트가 차지하는 비중은 없거나 낮아서 신입때는 어림도 없던 업체들이 경력직으로는 의외로 잘 뚫리는 상황이 펼쳐진다.[12] 더구나 일단 어디든 들어간 다음에 코딩 테스트를 준비해도 된다. 신입 시절에 독학이나 스터디로 혼자 준비하는 것보다는 차라리 현업에 들어가서 실무 경험을 쌓으면서 알고리즘을 공부하는게 사람에 따라서는 더 나을 수도 있기 때문.[13][14]
10. 관련 문서
[1]
아무리 대기업이라 할지라도 채용 시마다 충분한 변별력을 가지고 있으며, 오류도 존재하지 않고 풀이 결과를 받아서 신속하게 채점하는 시스템을 갖추는 건 여러모로 힘든 일이기 때문. 그래서 보통은 이미 데이터베이스와 시스템이 갖춰진 외부 서비스를 사용한다.
[2]
그렇게 어려운 문제를 낼 생각이 없거나 지원자가 소수라서 외부 서비스를 사용하는 비용이 되려 아까운 경우들이 있기 때문. 이 경우에는 지원자가 소스 코드를 제출하면 업체에서 분석, 채용 여부를 결정하곤 한다.
[3]
프로그래머스 코딩 테스트 고득점 Kit
[4]
백준 온라인 저지 단계별로 풀어보기
[5]
SW 엑스퍼트 아카데미의 레퍼런스 코드
[6]
통상적으로 코딩 테스트를 채용 과정에서 실시하는 업체들이 신입에 대한 대우가 좋은 편이라고 보면 된다. 물론 이것도 100%는 아니다, 코테를 보는데 신입 대우가 개차반인 회사도 존재하고 코테를 보지 않는데 신입 대우가 괜찮은 회사들도 분명 존재한다. 더구나 코딩 테스트보다는 조건을 제시하고 여기에 맞는 결과물을 구현해보라는 코딩 과제를 선호하는 업체들도 있다. 취준생 여러분들은 본인의 상황이나 목표에 따라서, 내가 가려는 업체에서 원하는 조건에 맞게 준비를 다르게 해야한다. 신입은 '반드시' 코딩 테스트를 준비해야 하는가에 대한 답변은 '해당 기업에서 요구하면 준비하는 것'이고 '요구하지 않으면 준비하지 않는 것'이다.
[7]
내가 이 프로젝트에서 이렇게 뛰어난 기능을 구현했다던지, 구현한 기능을 최적화하여 성능의 향상을 이루어냈다던지 등..
[8]
이쪽은 전반적으로 케이스 바이 케이스의 경우에 해당한다. 심지어 같은 회사 내부에서도 팀 바이 팀인 경향이 강해서 팀마다 채용 프로세스가 다르기도 하다. 형식적인 서류 전형 및 면접 정도만 볼 수도 있고, 이전 회사에서의 경력을 중점적으로 보는 경우도 있고, 아니면 경력자니까 더 어려운 코딩 테스트를 실시할 수도 있다.
[9]
개발자들의 수준이 높은 대기업에서도 고수준의 알고리즘을 모른다고 업무가 불가능한 상황은 거의 존재하지 않는다. 대기업도 기업은 기업이라 일정은 한정적이고 달성해야하는 목표는 분명하기 때문에 어려운 알고리즘으로 기능을 더 세련되게 구현하는 것보다는 일단 완성을 시키는게 먼저이기 때문. 그래서 실무와 알고리즘이 꼭 일치하는 것은 아니다.
[10]
다만 그렇다고 알고리즘이 실무와 완전히 무관한 개념은 아니다! 알고리즘은 결국 개발 중 발생하는 문제들을 해결하기 위한 심도깊은 연구의 결과물들이고, 이걸 잘 알고 실무에서도 잘 대입할 수 있어야 어디서든 대접받는 가치있는 개발자가 될 수 있다. 어디 코딩 테스트 대회같은데 나가서 우승해야하는 수준까지는 절대 아니지만 문제를 봤을 때 여기서 원하는 게 무엇이고, 이렇게 풀면 되지 않을까, 그리고 풀어보니 진짜 풀리더라 정도는 갖춰야한다.
[11]
낮은 수준의 테스트는 변별력이 부족하고, 높은 수준의 테스트를 통과할 정도의 신입은 대기업 등지에서 제시하는 초봉 6천, 중견기업에서 제시하는 초봉 4~5천 등을 무시하고 최저 수준의 3천을 제시하는 중소기업들에 갈 이유가 없다. 불경기에 자리가 없더라도 최고급 인재들이 갈 곳이 아예 없어지는 건 아니고, 이런 사람들이 눈을 낮춘다고 해도 최상위 기업부터 순차적으로 한 칸씩 눈이 내려가기 때문에 가장 밑바닥에 있을 중소기업에 이런 인재들이 떨어지는 상황은 거의 나오지 않는다. 코딩 테스트를 실시할 이유가 없는 것.
[12]
물론 코딩 테스트를 아주 무시하게 되면 결국 좋은 대우를 받기가 어렵다. 경제난으로 인해 취업시장이 얼어붙으면서 생짜 신입보다는 최소 1년 이상의 경력자를 원하는 경향이 강하고, 양심이 없는 여타 업체들은 대우는 신입 수준으로 해주면서 2년, 3년차 경력직을 구인하는 경우도 있다. 더럽고 치사하지만 어디도 들어가지 못해서 해매면서 자기 경력의 공백만 늘리는 것보다는 어디든 들어가서 경력을 쌓는게 여러모로 낫다는 소리.
[13]
당연한 말이지만 이 방법도 절대로 쉬운 일이 아니다. 중소기업 특성상 대우도 개판이고 연봉도 최저인데 감당하기 힘든 업무가 쏟아지고, 최악의 경우에는 경력조차 제대로 쌓이지 않는 일을 떠맡다가 경력직 대우도 못받는 최악의 상황에 처하는 것이 비일비재. 게다가 회사 업무를 수행하면서 코딩 테스트를 따로 준비하는 것도 상당한 의지와 노력을 필요로 한다. 결국 남는 시간을 어떻게든 쪼개서 공부를 해야한다는 뜻이니.. 자신이 처한 상황에 따라서 최선의 방법을 찾는 것이 최고의 처신이다.
[14]
그리고 개발자가 돼서 성장하는데 알고리즘과 코딩 테스트 풀이 능력은 절대 없어서는 안되는 필수적인 요소에 해당한다. 지금 코테를 준비할 여유가 없는데 당장 취직이 급하다면 코테를 뒤로 미뤄두고 취직을 먼저해보라는 뜻이지 코테를 할 필요가 없다는건 절대 아니다! 여유가 있다면 코테는 무조건 해야한다. 코테 능력이 없으면 신입 시절에는 중견 이상 기업을 절대 노릴 수가 없고, 경력 시절에는 회사에서 좋은 대우를 받지 못하거나 이직의 길이 좁아지게 된다.