title: "Nossi.DEV" # 카카오톡 등 공유 시에 활용되는 제목 텍스트 입니다.
description: "개발자 취업의 모든 것" # 카카오톡 등 공유 시에 활용되는 설명 텍스트 입니다.
scrollProgressBar: # 페이지 가로 스크롤바를 표시합니다
show: true
color: "#000000"
fonts: # 페이지의 폰트를 설정합니다
headerFont: "Rubik"
defaultFont: "Rubik"
imageBorderRadius: 20 # 이미지를 둥글게 만듭니다
calloutBorderRadius: 12 # 콜아웃을 둥글게 만듭니다
pageMaxWidth: 1000 # 페이지 최대 너비를 설정합니다 (노션 기본값 900
개발자 취업은 통상 다음과 같은 절차로 진행됩니다.
<aside> 💡 서류 제출 → 코딩 테스트 → 기술면접 → 임원면접
</aside>
회사에 따라 코딩테스트의 유형이 다양합니다.
코딩테스트 ❌ : 규모가 작은 회사 또는 경력이직
실무과제형 코딩테스트: 스타트업, 상시채용, 경력이직
여러 회사들이 실험적으로 도입하고 있습니다. 웹개발자 채용의 경우 정해진 기간동안 주어진 명세에 따라 웹 개발을 완료하면 됩니다.
알고리즘 코딩테스트 : 대기업, 대규모 채용, 신입, 1~3년차 이직 많은 IT회사에서 알고리즘 코딩테스트를 봅니다. 특히 카카오, 네이버, 라인, 쿠팡, 삼성, SK 등등 개발자들이 가고싶어하는 높은 연봉의 IT 기업에서는 거의 필수로 봅니다. 따라서 알고리즘 코딩테스트를 준비해 둔다면 지원할 수 있는 회사의 폭이 굉장히 넓어집니다.
<aside> 📍 코딩테스트 한눈에 알아보기
코딩테스트는 복잡한 알고리즘을 알고 있는지 테스트 하는 목적이 아니다. 그러면 코딩테스트의 목적은 무엇일까? 그건 바로 구현능력(기본적인 언어 문법, 자료구조, 알고리즘)과 문제 해결능력을 보기 위함이다. 코딩테스트를 합격했다는 것은 기본적으로 언어를 구사할 수 있고 필수적인 자료구조와 알고리즘을 알고있다는 것을 보장을 해준다. 또한 이를 알고만 있는데 그치지 않고, 여러 문제상황이 생겼을 때 해결할 수 있는 사고능력이 있다는 것을 보여준다. 따라서 모든 알고리즘과 자료구조를 알 필요가 없는 것이다. 필수적인 자료구조와 알고리즘을 위주로 학습하는 것으로 충분하다. 중요한건 어떻게 적용하여 문제를 해결해나가는지가 중요하다.
그렇다면 어떤 자료구조와 알고리즘을 필수적으로 알아야 할까?
일단 시간복잡도를 계산하는 방법을 아는 것이 가장 중요하다. 문제를 해결하기 위해서 다양한 자료구조와 알고리즘을 적용할 수 있는데, 효율적인 해결 방법을 결정하는 능력이 바로 시간복잡도를 계산할 줄 아는 것에서부터 나온다.
시간복잡도를 잘 이해했다면 다음은 자료구조를 공부할 차례다. 자료구조의 경우 Stack, Queue, Hashmap, Graph, Tree 에 대해서 제대로 공부를 해야한다. 알고리즘 코딩테스트라고 불리지만 결국 자료구조를 잘 이해해야 알고리즘을 자유자재로 다룰 수 있게 된다. 자료구조의 원리를 깊게 이해를 하는 것과 코드로 구현하는 것은 또 다르다. Tree를 혼자서 만들 수 있도록 나의 프로그래밍 언어로 연습을 해보자. 데이터가 주어졌을 때, Graph를 구성해보자. 이게 가능하다면 자료구조에 대한 공부는 이걸로 충분하다.
필수 알고리즘을 살펴보면 DFS, BFS, backtracking, DP, 순열조합 정도가 필수 알고리즘이라고 할 수있다. 즉 이를 통틀어서 재귀와 완전탐색에 대한 충분한 이해가 가장 중요한 것이다. 위의 알고리즘들은 모두 재귀와 완전탐색에서 확장한 것에 불과하다. 하나 하나의 알고리즘을 익히기 전에 전체적인 숲을 공부하자. 재귀와 완전탐색을 정확히 이해하면 모든 알고리즘을 학습할 때 훨씬 수월해지고 문제에 적용할 수 있는 능력을 키울 수 있다.
이 정도만 정확히 알고 적용할 수 있다면 스타트업, 중소기업 부터 네카라쿠배 까지 합격할 수 있다. 충분하다. IT 대기업의 경우 갈수록 코딩테스트가 어려워지고 있어서 복잡한 알고리즘도 종종 나오지만, 다시 한번 기억하자. 우리는 코딩테스트 합격이 목적이지 all solve가 목적이 아니다. 모든 문제를 완벽히 풀 필요가 없다. 회사에서도 그런 엄격한 잣대를 들이대지 않는다. 왜냐하면 코딩테스트를 완벽히 잘하는 것과 실무를 잘하는 것은 차이가 있다는 점을 기업이 더 잘 알기 때문이다.
회사별 전략도 중요하다. 왜냐하면 회사의 종류가 굉장히 다양하고, 회사에서 원하는 것들이 다 다르기 때문이다. 스타트업| 중소기업, 중견기업의 경우에는 간단한 코딩테스트만 보는 경우가 많다. 내가 작은 회사에 들어가려고 준비중이라면 최소한의 코딩테스트만 준비하고 대부분의 시간과 노력을 포트폴리오에 쏟자. 코딩테스트 전반에 대한 기본 원리만 깨우치고 문제를 좀 풀어보면 충분히 대비 가능하다. 만약 네카라쿠배나 삼성 SK등의 대기업에 지원하고자 한다면 코딩테스트에 공을 많이 들여야 한다. 위에서 말한 알고리즘만 공부하더라도 합격할 수 있지만, 그 날의 컨디션과 문제 유형에 따라서 탈락을 할 가능성도 꽤 있다. 따라서 대기업을 노린다면 좀 더 어려운 문제들과 알고리즘들을 접해보면서 문제 해결능력을 키워 나가는 것이 중요하다.