기업용 코딩테스트 준비하기 - 언어선택

CmplxN·2020년 10월 25일
5

인트로

보통 채용 프로세스는 [서류 - 필기시험 - 직무 면접 - 임원 면접]로 이루어져있다. 면접을 하루만에 퉁쳐서 본다던가, 서류를 받아도 일단 필기는 다 보게 해준다던가 아니면 최근에는 AI 면접을 도입한다던가 여러 바리에이션이 있다. 하지만 기본 틀은 위와 같다.

개발자 채용의 경우 필기시험이 코딩테스트로 진행되는 추세다. 내가 처음으로 취준하던 2018년에는 많은 기업들이 코딩테스트를 이미 도입했다. 하지만 코딩테스트 없이 개발자를 대규모로 채용하는 기업들(LG 등)도 꽤 있었다.

요새는 개발자 채용시 심지어 공기업(한국조폐공사 등)나 다수의 스타트업(프로그래머스 이용 등)도 코딩테스트를 도입하고 있다. 코딩테스트 및 알고리즘 실력이 현업에서의 개발력과 괴리가 있다는 이견이 있는 것은 사실이다. 그러나 개발자로 취업하려면 코딩테스트를 피해갈 수 없다는 것은 부정할 수 없는 사실이다.

그래서 두서없지만 코딩테스트를 준비에 대한 생각을 끄적여본다.

언어 선택하기

프로그래밍 언어라는 것이 하나를 어떻게든 자유롭게 다룰 수 있으면 다른 언어로 넘어가는게 어렵지는 않다. 하지만, 취준생의 시간이 무한한 것도 아니고, 언어의 선택은 꽤 중요하다.
코딩테스트에서 선택할 수 있는 언어는 주류(?)언어로 C++, Java, Python3가 있다.
마이너(?)언어로는 Javascript, Kotlin, Swift, C#, Go 등이 있다.

언어 선택의 기준

내가 생각하는 언어 선택의 기준은 다음과 같다. 일반적인 기준으로 예외가 있기는 하다.

  1. 알고 있는 언어나 주로 쓰는 언어가 주류언어면 주류언어 간에는 바꿀 필요가 없다.
  2. 제조업기반의 전통적 대기업을 노리면 반드시 주류언어 중 하나를 주력언어로 한다.
  3. 지원 직무가 있으면 그 직무에 맞는 언어를 선택한다.

직무로 안드로이드를 희망했던 나는 Kotlin을 주력언어로 택했다. Kotlin을 사용할 수 없을 때 C++을 사용했다.

학교에서는 C계열(C, C++)를 썼었기에 어느정도 익숙했다. 그리고 안드로이드 개발자를 목표했기 때문에 Kotlin을 선택했다. Kotlin의 경우 안드로이드뿐만 아니라 백엔드(스프링)에도 쓰이는 언어다. 그래서 제조업 기반 대기업이 아니면 언제나 사용가능이었다.
물론 안드로이드이기 때문에 Java라는 선택지가 있었다. 하지만 Java를 마지막으로 쓴게 2013년(...)이었고, 주류언어로는 이미 C++을 했기에 Java는 버렸다.

언어별 장단점

C++

장점

  1. 전통적으로 코딩테스트에 많이 쓰인 언어다. 그래서 자료가 많다.
  2. 속도가 빨라 "언어 때문에 시간초과 났나?" 의심할 필요가 없다.
  3. 제조업 기반 대기업에 좋다. (2020 하반기까지 SK Hynix는 C계열만 가능하다.)
  4. 대회에 나갈 생각이 있다면 무조건 C++을 쓰게 되므로 병행할 수 있다.

단점

  1. 주류언어 중에는 입문하기 가장 어렵다.
  2. 직무로 지원할 때 쓰지 못하는 경우가 종종 있다.
    특히 프로그래머스 주관 채용(데브매칭, 윈터/서머 코딩 등)에서 사용하지 못하는 경우가 있다.

Java

장점

  1. 우리나라는 자바민국이므로 범용성 1등이다. 즉, Java 하나로 통하지 않는 곳이 거의 없다.

단점

  1. IDE 사용 불가능인 경우 장황한 Java의 특성상 오타 발생 등에 취약하다.
  2. 주류 언어 중에는 자료가 제일 적다. (그래도 주류 언어라서 없지 않다.)

Python3

장점

  1. 배우기 쉬운언어다.
  2. 많은 기능들이 기본 라이브러리로 제공된다.
  3. 작성할 byte수가 다른 주류언어에 비해 적다.
  4. 떠오르는 코테 언어다. 책, 유튜브, 블로그 등 공부 자료가 기하급수적으로 늘어나고 있다.

단점

  1. 주류 언어중에 가장 느리다. (사실 기업용에서는 거의 무시해도 된다.)
  2. 직무 지원시 C++만큼은 아니더라도 종종 못쓰는 경우가 있다. (NHN)

마이너 언어는 간단하게 적어본다.

JavaScript : 네카라로 불라는 IT Big3에서 모두 사용가능하다. 문제풀기에 적합한 언어는 아니다. 하지만, 웹 프론트엔드 직무로 지원시 JS only인 경우가 꽤 있다. 그러므로 웹 프론트엔드 직무를 노린다면 JS로 코딩테스트를 보는 데 익숙해져야 한다.

Kotlin
IT Big3 에서는 모두 사용가능하다. 제조업기반 대기업에 관심이 없다면 Kotlin을 주력언어로 해도 상관은 없다. 안드로이드와 백엔드(스프링)에 쓰이는 언어다. Java보다는 코딩테스트에서 덜 불편하다. 하지만 Java를 잘 다룬다면 코딩테스트에서 굳이 Kotlin을 할 필요는 없다.

Swift
Kotlin과 마찬가지로 IT Big3 에서는 모두 사용가능하다. 제조업기반 대기업에 관심이 없다면 Swift를 주력언어로 해도 상관은 없다. iOS 직무 지원시 Swift만 사용 가능한 경우가 꽤 있다. 본인이 iOS를 준비한다면 주력언어로는 아니더라도 Swift로 문제 푸는 것을 대비해야한다. 꽤 활성화된 오픈카톡방도 있어서 정보가 없어 벽에 부딪히는 경우는 없을 것 같다.

C#, Go 등
사실상 이 언어들은 직무별 지원이 아니면 허용되는 것을 보기 어렵다. 본인이 이미 다루고 있는 언어가 아니면 강력하게 비추한다.

그래서 추천하는 언어는?

사람마다 목표하는 기업이 천차만별이지만 일반적인 경우를 따지자면 주류 언어 중에는 Python3을 추천한다.
쉽고 자료도 많으며 코드 짜는 시간도 짧기 때문이다.
하지만 앞에서 말했듯, 이미 주류 언어중 하나를 익혔다면 굳이 넘어갈 필요는 없다.
주로 가고 싶은 기업이 주류 언어 중 어떤 언어를 제공하지 않는지만 미리 확인하자.

그리고 직무별 지원할 때 불이익 피하기 위해 직무언어로 푸는 것도 연습해야한다.
특히 웹 프론트엔드, iOS는 주력언어랑 겹치지 않으므로 피를 볼 수 있다.
안드로이드도 주류언어 중에 Java를 하지 않는다면 Kotlin을 하던가 Java로 갈아타던가 하는 식으로 준비하는 것이 좋다.
만약 제조업 기반 대기업에 관심이 없다면 아예 Kotlin, JS, Swift를 주력언어로 삼아도 된다. (후회할 수도 있지만..)

마무리

지금까지 코딩테스트 언어 선택에 대해 알아봤다. 언어 선택 기준이나 언어별 장단점은 개인적인 생각이므로 절대적인 것은 아니다. (애초에 주력언어랑 Kotlin 말고는 잘 모른다.)다른 의견이 있다면 코멘트 주시면 감사하겠다.
다음에는 내가 어떻게 코딩테스트를 준비했는지 써볼 생각이다. 그리고 기업용 코딩테스트를 준비하면서 반드시 다뤄야 하는 주제가 무엇인지 살펴보겠다.

profile
Android Developer

0개의 댓글