2020년 상반기 취준 회고

CmplxN·2020년 7월 15일
13

Life

목록 보기
1/3

들어가기

퇴직

아는 사람은 알겠지만, 나는 2018년 12월부터 2020년 1월까지 공공기관에서 통신 직군으로 일했다. 내가 기대했던 시골 라이프라는 부분에서는 만족했지만, 결국 합이 맞지 않았고, 이른 커리어 전환을 결심하게 되었다. 내 성격상 회사 일에 올인하거나 아예 안하거나 둘 중 하나였기에, 결국 인사 시즌에 맞추어 퇴직했다. 소중한 경험이었고, 동료분들께 고마웠고 미안했다.

상반기 시작까지

본격적인 채용 시즌이 시작하기 전, 크게 두 가지를 했다.

1. 삼성SDS 대학생 알고리즘 특강

물론 나는 대학을 졸업한 지 1년이나 되었다. 하지만, 지원 기준은 2019년 2월 졸업생까지였고, 운 좋게도 선발될 수 있었다. 첫 취업 준비(2018년 하반기) 때 취득한 삼성전자 A형 덕분인 것 같다. 내용은 기본적인 부분에서 시작하여 기업용과 대회용의 경계에 있는 개념들까지 나갔다. 또한 이때부터 해서 꾸준히 알고리즘 문제를 푸는 루틴을 갖게 되었다. 정말 듣길 잘한 교육이었고, 코딩 테스트를 비교적 성공적으로 본 원동력이라고 생각한다.

2. 42Seoul

그리고 난 뒤, 42Seoul이라는 교육(?)에 참여하게 되었다. 교재, 교수, 수업, 학비 등이 없고, 주어진 과제를 동료 학습을 통해 풀어나가는 교육이었다. 처음 한 달은 "피신"이라고 C언어로 개인 과제 및 팀 프로젝트를 하는 과정이었다. 당장 취업하는 데 도움이 되는 과정은 아니었지만, 동료를 만나고, "코딩 근육"을 기르는 데 도움이 되었다. 참고로 본과정은 코로나 때문에 정상적으로 진행되지 못하다가 최근 클러스터가 개방되었다.

안드로이드 개발자로

원래는 42Seoul 과정을 어느 정도 충실히 따라갈까 했었지만, 코로나로 정상 진행이 어려워지자 스스로 길을 찾아나서야 했다. 여러 생각 끝에 안드로이드 개발자로 세부 진로를 잡고 시작하게 되었다. 그 이유는...
첫째는 개발자이자 한 명의 사용자라는 느낌으로 일하고 싶었다. 다른 분야도 충분히 그런 성격을 띠지만, 나에게는 안드로이드가 가장 부합했다.
둘째로는 Kotlin 언어가 좋았다. 그래서 앞으로도 쭉 Kotlin으로 개발할 수 있는 안드로이드 분야를 선택하게 되었다.

코딩 테스트

코딩테스트는 총 6번 봤다. 주력언어는 Kotlin으로 삼성 시험을 제외하고는 모두 Kotlin으로 봤다. 삼성은 C++로 응시했다.(Java가 아니라고?) 준비는 BOJ와 Programmers에서 꾸준히 문제를 푸는 방식으로 했다. BOJ의 경우 퇴직 후 지금까지 약 6개월간 600문제를 풀었다.

1. 라인

라인은 총 6문제를 150분간 푸는 시험이었다. Swift를 제외한 분야별 언어는 모두 제공되었다. (C++, Java, JS, Kotlin, Python) 라인 시험의 특징은 주어진 테스트케이스가 빈약한 것이었다. 이 때문에 맞았다고 생각했는데 탈락한 케이스가 꽤 있었다고 한다.

1, 2번은 쉬웠고, 3번은 시간복잡도를 고려했어야 했고, 4번과 5번은 적당한 난이도였다. 6번은 아쉽게도 시간이 부족하여 풀지 못했다. 이때 실수한 것이, 내 코드를 별도 저장하지 않았다. 면접에서 코딩 테스트 검증을 할 수 있다. 그러므로 자신의 코드를 저장할 수 있는 시험의 경우 꼭 저장해두자.

결과 : 5 / 6, 합격

2. 카카오

카카오는 총 5문제를 240분간 푸는 시험이었다. 카카오의 경우 거의 모든 언어가 지원되었고, 모두 Kotlin으로 풀었다. 또한, 테스트케이스가 잘 주어지지는 않지만, 내가 문제를 맞았는지 틀렸는지는 바로바로 알 수 있었다.

1번은 키패드를 왼손으로 누를지 오른손으로 누를지 시뮬레이션이었다. 2번은 우선순위에 따른 연산, 3번은 투포인터, 4번은 우선순위 큐를 이용한 bfs(다익스트라)로 풀었다. 5번은 시험에서는 못 풀었지만, bfs를 조금 응용하면 풀 수 있는 문제였다. 딱 적당히 어려웠던 수준이지 않았나 한다. 카카오의 경우 기출문제가 공개되어있다. 링크

결과 : 4 / 5, 합격

3. 프로그래머스 서머코딩 & 데브매칭 - 앱 개발자

프로그래머스는 여름 / 겨울방학 시즌에 맞춰 기업들과 인턴을 매칭해준다. 또한, "데브매칭"이란 이름으로 백엔드, 프론트엔드, 앱 등 분야별로 일종의 합동 채용을 주관한다. 둘 다 2시간에 알고리즘 3 + SQL 1이었다. 서머코딩의 경우 C++이 지원되지 않았다. 데브매칭-앱은 C#, Java, Kotlin, Swift 4가지만 지원되었다. 그리고 앱 개발 객관식 문제도 있었다.

알고리즘과 SQL 문제는 그다지 어렵지 않았다. 검색이 가능한 시험이어서, SQL 세부 문법을 몰라도 학부 때 지식을 더듬으며 풀 수 있었다. 알고리즘도 어렵지는 않은 난이도의 구현과 dfs, bfs만 나왔다. 번외로 데브매칭-앱의 앱 개발 객관식은 내 기준으로 어려운 편이었다.

서머코딩 : 4 / 4, 합격
데브매칭-앱 : 4 / 4, 합격

4. 삼성

삼성은 총 2문제를 180분간 푸는 시험이었다. 언어는 C++, Java, Python만 지원되었다. 삼성의 경우 여타 코딩테스트와 유형이 살짝 다르다. 빡센 구현과 완전탐색만 나온다고 봐도 무방하다. 하지만 문제 읽는데 한세월이 걸릴 정도로 문제가 길고, 조건이 비교적 까다로운 편이다.

다른 코딩테스트는 온라인으로 진행했지만, 삼성은 오프라인 테스트였다. 마스크와 라텍스 장갑의 착용이 강제되었다. 나는 2번 문제만 보다가 끝났다. 두 개 푸냐 한 개 푸냐일 줄 알았는데, "내가 이걸 못한다고?" 하는 헛웃음만 나왔다. Kotlin을 못씀을 알고도 준비 없이 C를 쓴 점, 늪에 빠져 뇌 정지가 온 점이 컸다. 아직도 이때 생각에 이불을 차고 있다.

결과 : 0 / 2, 불합격

5. 하이퍼커넥트

하이퍼커넥트는 3문제를 130분간 푸는 시험이었다. 분야별 모든 언어(C++, Java, JS, Kotlin, Swift, Python)이 지원되었다. 그러므로 당연히 Kotlin으로 풀었다. 또한, 카카오와 마찬가지로 "빈약한 테스트케이스 + 채점 결과 확인 가능" 구조였다.

문제는 사실 어렵지 않았다. 알고리즘보다는 주어진 조건을 "정확히" 구현하면 되는 스타일의 문제였다. 시간이 남는 편이었고, 코드의 가독성을 개선해서 제출했다. 합격 여부와 별개로, 정규표현식을 익히면 좋았을 것이라는 생각이 드는 시험이었다.

결과 : 3 / 3, 합격

면접

CS(Computer Science)는 대학 시절 교재와 프린트, 개인 정리한 내용을 토대로 4월과 5월 사이 공부했다. 다시 공부하면서 내용을 간단하게 정리하는 방식으로 진행했다. 객체지향, 운영체제, 자료구조, 알고리즘, 네트워크, 언어(Kotlin), 데이터베이스, 보안, 기타 주제로 주제별 정리했다.

인성 질문 대비해서는 크게 준비하지 않았고, 기본적으로 나올만한 질문 몇 개만 생각해두었다. (개발자 하고 싶은 이유, 퇴직한 이유, 장단점 ...)

1. 라인

두 번째 취준의 첫 면접은 라인이었다. 코딩테스트 합격 후, 자소서를 작성하고 거의 한 달 만에 면접을 봤다. 방식은 한 시간 동안 일대다 화상면접이었다. 내용은 주로 직무 관련 질문으로 이루어졌다. 또한, "클라이언트" 부분으로 통합해서 뽑았기에 안드로이드 질문은 없었다. 실제로 면접관분들은 iOS 쪽인 것 같았다.

결론적으로 말하면, 준비한 지 얼마 안 된 나에게는 어려운 면접이었다. CS 질문에도 만족할 만큼 답을 하지 못했다. 모르는 것도 많았고, 틀리게 답한 것도 많았다. 도중에 꼬여서 멘탈을 챙기지 못한 것도 컸다. 그리고 라인 면접 때는 변변찮은 토이프로젝트 하나도 없었기에 그런 점에서도 힘들었다. 그리고 Java를 제대로 안 하고 Kotlin을 한 것이 약점임을 처음으로 깨달았다. 경험치를 더 쌓고 볼 수 있었으면 좋았을 텐데 하는 아쉬움이 많이 남았다.

결과 : 불합격

2. 카카오(인턴)

두 번째 면접은 카카오였다. 카카오도 라인과 같이 일대다 화상 면접에 한 시간 동안 직무 관련 질문이었다. 이때는 "안드로이드" 직무로 지원했기에 CS와 안드로이드 질문 모두 들어왔다. 그리고 코딩테스트 리뷰하는 시간도 따로 있었다.

코딩테스트 리뷰는 내 코드 일부분을 설명하고, 문제 조건이 바뀌면 어떻게 바꿀 거냐 물어보는 방식이었다. 내가 실시간으로 코드를 짜서 보여주고 싶었다. 하지만 제어권을 줄 수 없다고 했고, 잘 전달하지 못한 것 같다. CS 질문도 몇 가지는 의도 파악이 잘 되지 못해 답을 정확히 말하지 못했다. 안드로이드 질문도 몇가지 답하지 못했다. 그래도 CS부터 해서 JVM이나 안드로이드까지 직무에 맞는 면접을 봐서 정말 좋은 경험이었다. 마지막 질문 타임에 면접관에게 조언을 구했는데, 친절하게 답해주셔서 감사했다. 카카오 면접 덕분에 공부와 면접 준비의 방향성을 어느 정도 잡은 것 같다. 두분 면접관께 다시한번 감사드린다.

결과 : 불합격

3. 서머코딩 U사(인턴)

세 번째 면접은 서머코딩으로 매칭된 U사였다. 면접은 일대다로, 회사에 직접 가서 30분 정도 봤다. 안드로이드와 CS 모두 물어보았으며, 안드로이드 질문이 더 많았던 것으로 기억한다. 지식 이외에도 문제 해결 능력을 물어보기도 했다. 주어진 조건에서 자료를 압축하는 방법, 문자열을 저장 및 검색하는 효율적인 방법 등 흥미로운 문제를 주셨다. 그 외에 인성 질문 몇 가지를 받았는데 답을 잘하지 못했다. 지금 되돌아보면 쉬운 면접은 아니었다. 하지만, 처음부터 끝판왕 둘(라인, 카카오)에게 얻어맞고 와서 그런지 당시에는 쉬운 편이라고 느꼈던 것 같다.

결과 : 합격

4. 데브매칭-앱 V사

네 번째 면접은 데브매칭-앱을 통해 매칭된 V사였다. 일대다 면접으로, 회사에 직접 가서 20분 정도 면접을 봤다. "객체지향 특징" 또는 "MVC, MVP, MVVM"에 대해 발표하는 면접이었다. 나는 "MVC, MVP, MVVM"를 발표했다. MVC의 경우 안드로이드에서 V와 C를 나누는 것이 애매했고, 결국 내 설명도 약간 애매했다. 그리고 이상하게도 CS 질문이 전혀 없었다. 또한, 일대다 면접이었음에도 면접관이 별로 관심을 보이지 않은 것 같았다. 애초에 제출한 프로그래머스 프로필에 대학 시절 프로젝트를 누락해서 그랬을 수도 있다. 아무튼 이미 나보다 좋은 지원자가 많겠거니 생각했다. 그리고 인성 질문에도 답을 잘하지 못한 것 같았다.

결과 : 불합격

5. 하이퍼커넥트(인턴)

다섯 번째 면접은 하이퍼커넥트였다. 30~40분간 일대다 화상 면접으로 진행되었다. 면접 보는 동안 쉴 새 없이 전공 질문을 받았다. 자료구조, 알고리즘, 운영체제, 네트워크, 객체지향, Java, 안드로이드, 토이 프로젝트 등 다양한 질문을 받았다. 기본기 위주의 질문이었지만, 무작정 쉽거나 하지는 않았다. 퇴직이나 공부 방법, 관심사 등의 간단한 인성 질문도 받았다. 라인 면접(5월 말)을 봤던 시기의 나라면 많은 질문에 제대로 답하지 못했을 것 같다. 면접 경험 + 공부의 결과 어느 정도 성장한 것을 체감할 수 있었다.

결과 : 합격

결론

상반기에는 결과적으로 인턴 두 곳에 합격했다.
서머코딩 U사는 규모는 작았지만, 흥미로운 일을 할 수 있고, 배울 것이 많아 보였다. 하지만, 인턴 입사는 여타 면접 기회를 잃는 것으로 연결될 수 있었고 고민 끝에 포기했다. 뽑아주셔서 감사하지만 갈 수 없게 되었고 죄송하다고 연락을 드렸다.

그렇게 하이퍼커넥트 인턴을 하기로 결정했다. 하이퍼커넥트는 꼭 가고 싶은 회사다. 하이퍼커넥트 자체가 좋은 회사인 것도 있지만, 글로벌 서비스를 해볼 수 있다는 점에서 꼭 다니고 싶다. 다니는 동안 열심히 해서 전환의 기회를 얻을 수 있으면 좋겠다. 다음 주부터 다시 달려보자.

profile
Android Developer

4개의 댓글

comment-user-thumbnail
2020년 9월 24일

잘보구갑니다!

답글 달기
comment-user-thumbnail
2021년 2월 4일

안녕하세요! 하이퍼커넥트 코딩 테스트에 대해 궁굼한 점이 많아 여쭤보고 싶습니다. 어떤 유형의 코딩테스트가 나오는지 여쭤볼 수 있을까요?

답글 달기
comment-user-thumbnail
2022년 3월 27일

최근 이직 준비하면서 코테 실력이 늘지않아서 한계점이라 생각했는데.. 600문제 푸셨다는 말 듣고 반성하고 갑니다. 아직 200문제 밖에 못풀었더라구요.. 감사합니다.

답글 달기