공채없이 카카오 개발자 취준기 | How I Got a Developer Job at Kakao Without Open Recruitment
오아... 이걸 이제야 쓰다니.. 계속해서 고민하다가 드디어 글을 완성해 보려한다. (그래도 카카오 갔는데.. 네이버 후기가 블로그 조회수 가장 높은게 맞나 싶어서ㅋㅋㅋㅋ)
6월 중순 네이버 정직원 전환 면접에서 떨어진 이후 나는 취준을 시작하게 되었다.
네이버 백엔드 인턴십 후기
올해 3월부터 6월까지 약 3개월간 했던 네이버 인턴십 후기를 작성하려 한다. 계속 써야지 써야지 하면서 미루다가 인턴십이 끝난 지 거의 2달가량이 돼서 사실 시간이 꽤 많이 지났지만, 아무래
jyami.tistory.com
네이버 인턴십을 준비할 때는 알고리즘 준비, 면접준비 하나도 없이 그냥 인턴십에 합격했었다. 그래서 회사 첫 면접이 저 네이버 인턴십 면접이었기 때문에 네이버를 갔다면 취준 없이 취뽀를 할 수 있다는 행복회로를 엄청 돌렸었다ㅋㅋㅋ. 그치만 현실은 아쉽게 전환이 되지 못했고ㅠ 진짜 취준하네..? 이러고 취준을 하게 되었다ㅋㅋㅋ
결론만 놓고 보자면 취준을 그렇게 장기간 신경쓰면서 한 것 같진 않지만, 짧다면 짧은 1달간의 취준기를 써보려한다.
1. 가고싶은 회사
목표하는 회사 정하기
나는 모든 대학생들이 취준을 시작할 때 본인이 가고싶은 회사에 대한 기준을 세우는게 가장 중요하다고 본다. 공기업, 스타트업, 대기업, IT기업, 외국계 회사 등 너무 다양한 회사가 있고, 각각의 회사마다 신입사원을 뽑는 기준이 다르기 때문이다. 또한 본인이 희망하는 회사가 원하는 인재상부터 시작해서 필요한 기본 스펙 (어학, 자격증 등)부터 각 회사마다의 채용 절차가 전부 다르기 때문에 미리 준비하기 위해서이다.
예시로 내가 만약 삼성을 가고 싶다 생각했으면, 우선적으로 삼성에서 그동안 나왔던 코딩테스트 기출문제를 풀어보고 채용 절차에 있는 직무 적성검사도 공부할테고, 면접을 간다했을 때 면접의 순서라던지 각 면접의 특징에 맞춰서 준비를 했을 것이다. 이런 채용 절차는 보통 그 회사의 채용 안내 및 전형 프로세스에 자세하게 나와있다. (구글링을 생활화 합시다) 이런 채용 절차를 보면 본인이 현재 가진 스펙을 바탕으로 객관화를 한 후에 부족한 부분을 준비할 수 있다.
본인이 가고싶은 회사를 정했다면 앞으로 길고 긴 채용절차와 그에 맞는 준비를 할 예정일 것이다. 그 고된 과정을 거쳐서도 본인이 가고싶은 회사여야지 합격 발표가 났을때 그만큼 기쁨은 더 될 것이다. 따라서 나는 누구든 꼭 본인이 가고싶은 회사를 우선적으로 선택하고, 그 선택에 집중해서 준비를 하는게 중요하다고 생각한다.
IT 회사가 가고싶어요..
그래서 나는 "개발자로 성장을 할 수 있는 곳" 이라는 키워드를 기반으로 IT회사 혹은 외국계 IT회사를 생각을 했고, 당시 그래서 카카오, 하이퍼 커넥트, 네이버, SAP 이 네 곳에 지원서를 제출했다. (외에도 관심있는 IT회사는 많았지만 당시 내가 관심있어하는 공고가 이 네 곳이었다)
그래서 공통적으로 IT기업이라는 특징을 가진 이 네 곳에서 요구하는 인재상은 사실 비슷비슷 했다. "개발을 좋아하는, 잘하는 개발자"가 핵심 키워드였다. 좀 더 자세히 보면, java를 잘 이해하는 사람, computer science 지식을 잘 알고있는 사람.. 등등 원하는 기술 역량이 잡 디스크립션에 상세하게 적혀있다.
개발자를 채용하는 회사 입장에서 이렇게 물어보는 것 같았다. 앞으로 개발 공부 더 많이 해야할거고, 넌 그동안 개발 서적이나 여러 개발 협업 경험, 전공 지식에 대한 깊은 이해, 본인이 사용하는 주 언어에 대한 이해는 있어야 우리와 함께 할 수 있는데 준비 되어있니? 그렇다. 학부생으로 개발에 어느정도 관심을 가지고 있었고, 개발 능력 향상을 위해 본인이 그동안 어떤 노력과 공부를 했는지, 그 공부가 정확하게 되어있는지를 물어보고 있었다.
그리고 현재 상태의 나는 요구되는 그 역량을 그동안 내가 학부생활 동안 했던 공부 내용이나 프로젝트내용, 기술적인 관심으로 충분히 어필을 할 수 있을거라는 생각이 들었다. 그리고 잡 디스크립션에서 내가 맞지 않는 부분이 있더라도 내가 현재 가지고 있는 기술스택을 충분히 깊게 공부했다는 점을 어필할 생각이었다.

이건 팁인데 본인이 앞으로 무엇을 공부해야할지 모르겠으면, 본인이 가고싶은 회사의 개발역량 지원 자격을 보면 도움이 된다. 나같은 경우 Kotlin 서버 개발 경험이 없는데, 만약 3학년때 이 공고를 봤다면 Kotlin을 공부라는 새로운 공부거리를 찾을 수 있었을 것이다. 그리고 알고있는 내용이라고 하더라도 무조껀 본인이 가능한 최대한 깊게 공부하면 좋다. 예를들어 java 기반 서버 개발 경험이라고 하면, 내 블로그 몇몇 글을 보면 알겠지만 학부에서 배운 자바 수업 외로도 이펙티브 자바와 같은 책을 읽거나, 제네릭과 같이 이해가 안되는 내용이 있을때 더더 찾아보면서 성장하자.
2. IT 기업의 지원 방식
내가 가고싶었던 회사는 주로 IT기업이었고, 그중에서도 카카오, 네이버를 가고싶었다. 그래서 해당 회사에 신입으로 입사를 할 수 있는 방법을 많이 접하고 찾아봤던 것 같다. 내가 볼 때 이 두 회사의 지원 방식은 크게 3가지가 있다.
- 공채 (상시 채용)
- 수시 채용
- 인턴 (상시 채용 / 수시 채용)
공채
공채는 많은분들이 아실 것이라 생각한다. 공채는 주로 상반기 하반기 공채로 나누어져있으며, 한번에 많은 신입 개발자를 뽑는 제도이다. 아무래도 공채는 카카오, 네이버 외에도 많은 회사에서 신입사원을 뽑을 때 사용하는 방법이라 다들 잘 알고있으리라 생각된다.


그러나 IT기업임을 감안하여 공채 특징을 짚어보자면
- 정말 많은 지원자
- 코딩테스트가 어려움
- 면접은 주로 컴퓨터 공학 전공 기초 내용 위주의 질문으로
- 면접에서 N : N (지원자 : 면접관)으로 볼 수 있음
- 바로 정규직으로 입사
- 회사에서 제공하는 지원기간에 맞춰서 본인의 취업 스케줄을 조정해야함
- 입사한다면 동기들이 있음
- 공채 합격후 워크숍 기간을 갖고 생활
- 어떤 팀에 갈지 모른다
위에 코딩테스트가 어렵다는 특징이 있는데, 실제로 공채를 준비하는 대학생 분들 중에 해당 기업에서 나온 기출문제를 바탕으로 N년간 대비하는 분들도 보았다. 실제로 카카오 공채는 프로그래머스에서 진행을 하는데, 프로그래머스에서 공채 코딩테스트 문제 분석이라는 강의를 파는 모습도 본 것 같다 (18년도인가..)
또 이건 개인적으로 공채 공고를 보면서 느낀건데, 공채 공고에서는 기술 역량 자격이 적혀져있지 않다. 자바, 씨, 파이썬 언어 상관없이 본인이 해당 개발 분야에 대해 자신이 있고, 컴퓨터 공학적 능력이 뛰어나다면 신입개발자로 채용하겠다는 느낌이 들었다.
나는 공채는 지원하지 않았다. 개인적으로 코딩테스트에 자신이 없었다. 나름대로 코딩테스트 대비를 하긴 했지만, 많은 공채 지원자들 사이에서 최상위권이 될 수 있을까라는 의문이 있었기 때문이다. (그래도 리트코드 easy~medium 정도는 푼다) 그리고 공채에서는 많은 지원자들이 몰리는 만큼 내 이력을 꼼꼼히 봐주실까? 라는 의심도 있었다. 그리고 가장 중요했던 이유는 6월에 시작한 취준이었는데, 공채를 보려면 9월까지는 기다려야했고 그 사이에도 충분히 회사에 지원하고 합격할 수 있을 것이라고 생각했다.
그렇지만 바로 정규직이 될 수 있다는 안정감과 함께 입사하는 동기들이 있다는 점이 공채의 가장 큰 장점이자 내 입장에서 부러운 점이었다.
수시채용
내가 카카오에 지원한 방식이다. 수시 채용의 경우에는 모르는 대학생도 있을 것으로 보인다. 수시 채용은 각 회사의 채용사이트에 있는 개발자 공고에 맞춰서 지원하는 방식이다. 여기 보면 (경력) 이렇게 써져있다보니 나같은 신입은 지원하지 못하는 공고아니야? 라고 생각할 수 있는데, 채용사이트를 잘 뒤져보면 경력무관, 혹은 신입 개발자에 대한 수습기간 설명이 적혀있는 경우가 있다.
아무래도 경력 개발자를 위한 공고가 주 목적인 사이트는 맞지만, 팀이 제시한 요구 스펙을 맞춘 신입 개발자가 지원을 하는 경우도 고려한 공고가 가끔 있다. 따라서 수시 채용을 노린다면 본인이 원하는 회사의 채용사이트를 주기적으로 확인하자.

IT기업 개발자 수시 채용 특징을 신입 개발자 입장에서 짚어보자면
- 팀의 분위기를 고려한 채용
- 팀이 요구한 기술 스펙에 맞는 인재 선호
- 신입 지원시 회사에 따라 3개월의 수습 기간을 가질 수 있음
- 수습 기간이 있을 경우 평가에 따라 계속 일 할 수 있을지 없을지 여부가 정해짐 (3개월 계약직)
- 코딩 테스트는 팀바팀
- 면접에서 컴퓨터 공학 지식 내용 물어봄
- 면접에서 지원서에 쓴 내용을 바탕으로 본인 경험기반으로 깊게 물어봄
- 면접에서 1 : N (지원자 : 면접관)
- 채용일정 전반적으로 본인의 상황에 맞게 조정가능
수시 채용의 경우에는 지원자가 나 혼자이다보니, 내 지원서를 보고 좀 더 맞춰서 질문을 하는 경향이 있었다. 또한 공채 신입정도의 실력이 되는지를 판단하기 위한 지표로 컴퓨터 공학 지식도 하드하게 물어봤었다. 코딩테스트의 경우엔 내 기준 공채 기출보다는 좀 더 쉬운 편이었으나 이는 팀바팀일 것으로 예상된다. (그러나 대부분 공채 보다는 좀 낫다..)
그리고 수시 채용의 경우에는 공채와는 다르게 채용일정을 내 일정에 맞춰서 조정이 가능했다. 공채에서는 전달해준 일자에 면접, 코딩테스트를 딱딱 봐야한다면 수시채용의 경우는 회사 인사팀에서 메일이 와서 선호하는 시간 및 날짜를 물어본다.
하지만 신입이 위처럼 수시 채용으로 입사하는 경우에는 3개월의 수습기간을 가지는 등의 패널티가 있을 수 있는데, 내가 그런 상황이었고, 이때의 불안정성이 조금 힘들었다. 공채보다 더 긴 채용 절차를 거쳤음에도 계약직이며 동기도 없고 3개월 후에 이 회사에 없을 수도 있다는 점은 심리적으로 조금 위축이 되긴한다.
수시 채용의 경우 내가 원하는 핏을 가진 회사와 팀을 지원자 본인이 선택하고, 인터뷰를 보면서 나에게 집중된 채용절차를 밟을 수 있다는 점이 장점이다. 나는 이런 점이 마음에 들어서 수시 채용을 선택했다.
인턴 (상시 채용 / 수시 채용)
IT기업에서 인턴 채용도 하고있다. 그렇지만 인턴이 금턴이라는 말이 생길만큼 역시 쉽지 않다고 한다. 인턴의 경우에는 상시 채용, 수시 채용 형태 모두 보았는데, 인턴 채용의 경우에는 채용 규모나 절차 모두 회사 바이 회사였다.
예를 들어 카카오 인턴은 위에 카카오 신입 개발자 공채과 비슷하게 이루어졌지만, 네이버 인턴 상시채용은 네이버 자회사인 NBP 인턴채용 이런식으로 좀 더 작은 규모에서 상시채용이 이루어졌다.
나같은 경우엔 이번 6월 취준시 네이버 클라우드 상시채용 인턴에 지원했었고, 1월 인턴 지원시에는 수시채용 인턴에 지원했었는데, 아무래도 인턴이다보니 위에서 말한 공채와 수시 채용의 좀더 소프트 한 버전의 지원방식이라는 느낌을 받았다. (그래도 면접준비는 빡세게 해가자)
3. 지원서 작성하기
2번으로 원하는 팀 혹은 회사의 지원방식을 보고 선택을 했다면 서류평가를 위한 지원서를 작성해야 할 시간이다. 서류 평가에는 보통 기업에서 제시하는 지원서와 본인 개인 레주메를 낼 수 있도록 하고있는데, 나는 주로 레주메 안에 내 활동을 담으려했으며, 지원서에는 좀 더 레주메 안의 내용을 서술적으로 풀어서 제출했다. 지원서를 쓸 때 조언하고 싶은 점은 아래와 같다.
1. 개발자 레주메의 첫인상은 개발에 관심이 많은 사람임을 알 수 있어야한다.
개발자를 뽑으니까 특히나 신입개발자를 뽑으니까 내가 내는 서류에는 개발에 대한 열정이 가득한게 좋을 것 같다 생각했다. 그래서 내가 지원서를 작성할 때는 5가지를 어필하려 노력했다.
- 개발 서적 읽기 : 학교 지식을 넘어서 현업 개발자에 다가가기 위해 노력했다는 점 어필
- 해커톤 :
(음...그냥 재미로 나간거였지만)모르는 스택도 필요에 따라 따르게 익혀서 사용했다는 빠른 러닝커브 어필 - 프로젝트 / 대외활동 : 기술을 바탕으로 다른사람과 협업을 할 수 있다는 점 어필
- 컴퓨터 공학 지식 공부 (학점) : 개발자의 기본도 성실히 이수했다.
- 나의 주언어 공부 (Java) : 내가 사용하는 언어를 언어의 특성에 맞게 사용이 가능하다.
이 5가지가 내 입장에서 개발자로 열정을 보여줄 수 있는 것들이었기 때문이다. 신입으로써 지원서에서 어필할 수 있는건 실제 실무보다는 본인이 개발 공부를 어떤식으로 해왔는지, 개발에 얼마나 관심이 많은지, 어떤 개발자로 성장하고 있는지 밖에 없기때문에 최대한 본인의 경험을 녹여서 일목요연하게 쓰자
실제로ㅋㅋㅋ 그래서 하이퍼 커넥트에 지원을 할 때는 신입임에도 경력직 공고에 패기롭게 넣었는데, 서류를 보시더니 졸업 예정자인지 확인하고 면접을 보게 해주셨다..ㅇ0ㅇ 그치만 코딩테스트에서 떨어졌다 (하이퍼 커넥트 코딩테스트는 되게 신기했는데, 알고리즘 테스트가 아닌 실무 코드에 대한 내용을 주로 물어봤다 그리고 영어였다)
2. 레주메는 최대한 그때그때 정리하자
대외활동이나 여러 동아리 활동을 하다보면 여러번 지원서를 쓰고 매번 이력이 업데이트된다. 그리고 각각 활동별로 깨우치는 바가 있을 것이다. 그때 깨달은 점을 꼭 정리하자.

- 1학년 멋쟁이 사자처럼 : 웹에 대한 관심, mvc 구조로 웹 개발 가능해짐. / 프론트 백엔드 뭐든 서비스 완성 위주
- 2학년 SOPT : api 구조로 웹 개발가능해짐 / 스프링부트 학습 / 자바 숙달 / 백엔드 개발자에 관심
- 2학년 스마일게이트 : 서버 아키텍처에 대한 이해 / 스프링 숙달
- 3학년 자바봄 : 백엔드 개발자로써 공부해야 할 기본지식 / 클린코드 / 테스트코드 작성 / 스프링, 자바에 대한 더 깊은 이해
- 3학년 dsc : 개발 커뮤니티 운영
- 4학년 인턴 및 취업준비
나같은 경우에는 대략적으로 위의 히스토리였는데, 사이사이에도 오픈핵, 네이버 핵데이 등 여러 활동 참여를 많이 했었다. 그런 활동을 하다보면 쓰는 지원서가 있는데, 그 지원서를 결국 쓰다보니 계속 조금만 고쳐서 조금만 업데이트해서 계속 사용하게 되었고 거슬러 올라가면 SOPT때의 지원서가 현재 사용한 자기소개서의 초안이 되었다. 따라서 본인의 방식으로 꼭꼭 잘 저장해두자.
3. 지원서를 쓸 때 받을 수 있는 면접 질문을 생각하고 지원서에 쓴 기술 스택은 제대로 공부하자
지원서에 작성한 기술 스택은 면접에서 물어볼 예상 질문이다. 따라서 본인이 지원서에 작성한 내용은 모두 깊게 공부해서가자. 본인이 자기소개서에 mySQL을 사용해본 경험이 있다고 적었다고 가정하자. 그러면 면접관은 mySQL의 특징부터해서, db 정규화, 트랜잭션, 인덱스, 고립레벨 등등 물어볼만한 질문이 너무 많기 때문이다. 그리고 실제로 면접이 아니더라도 본인이 공부한 기술 스택에 대한 깊이 있는 이해는 개발자라면 기본적으로 알아야하는 내용이다. 따라서 면접에서 나오는 해당 기술에 대한 질문은 정말 기초적으로 알아야하는 내용임을 암시하므로 내가 모르는 부분에 대한 질문이 나오면 땡큐라고 생각하고 바로 깊게 공부했다. (실제로 그 다음 면접에서 대답 못한 질문을 다시 대답해보라고 했었다.)
또한 면접에서 물어봤을 때 잘 대답을 못할 것 같거나, 정말 겉햝기 식으로 공부한 지식들의 경우에는 지원서에서 과감하게 뺐다. 나같은 경우에는 프론트엔드 외주 이력이 있지만, 면접에서 프론트엔드 관련해서 혹시라도 물어볼까 싶어 지원서에 해당 이력을 뺐다. 혹시라도 나한테 javascript 의 이벤트 핸들링에 대해서 설명해 보세요. 이런 질문을 하면 대답할 자신이 없었고, 그에 맞는 꼬리 질문도 대답 절대 못했다. 또한, 현재 지원서에 적은 기술 스택만 하더라도 면접 전까지 공부해야 할 내용이 산더미인데 프론트 엔드는 언제 공부하냐.. 싶었다.
4. 레주메는 읽기 쉽게 쓰자 + 앞장은 메인이다
지원서는 눈에 띄는 것도 중요하다. 해당 기업에 엄청 많은 지원자가 지원을 하는데 내용이 반복되고, 주술관계가 이상하며 읽는 사람이 이해할 수 없게 쓰면 얼마나 읽는사람이 힘들겠는가. 본인이 아무리 대단한 경험과 대단한 깨달음을 얻었다고 해도 지원서에는 최대한 요약하자 (어차피 면접에서 그 요약본을 보고 궁금해서 물어볼 것이다.)
따라서 나는 보는 사람이 읽기 쉽게 직접 일러스트를 사용해서 그래프, 색깔처리, 볼드처리, 항목화 별짓거리를 다해서 가독성을 높이려고 했다. 그리고 주변 아는 개발자분들께 부탁을 드려서 리뷰를 받았었다.
Backend Developer Resume
개발자 포트폴리오, 백엔드 개발자 레주메 (update 2020.06.12)
jyami.tistory.com
또한 레주메의 경우에는 앞장이 메인이다. 대학생들의 경우 가끔 프로젝트 경험을 쓸 때 히스토리별로 (과거->현재)로 작성하곤한다. 하지만 앞장이 메인이다. 가장 기술적으로 현재와 가깝고 가장 성장해 있는 최근 경험을 앞장에 쓰자 (현재->과거). 또한, 자신있고 어필하고 싶은 기술 스택을 위주로 앞장에 보여주자.
4. 코딩테스트
코딩테스트 준비
사실 코딩테스트 준비 어떻게 했냐는 질문도 정말 많이 받았던 것 같다.
나는 코딩테스트는 수능 입시 수학이랑 비슷하다는 생각을 종종한다. 우리가 수능 수학문제 어떻게 준비했는가, 먼저 개념 익히고, 그 개념에 따른 유형별 문제 풀어보고, 고난도 문제도 풀어보고 계속해서 반복학습을 한다. 1번부터 28번까지 문제는 유형을 알면 풀 수 있는 문제이기 때문에 그때그때 맞는 유형의 풀이를 기계적으로 하기 위해서 계속해서 반복하고 알던 내용도 계속해서 응용해서 풀어보는 노력을 한다. 그리고 29번 30번의 고난도 문제의 경우에는 앞에서의 유형별 반복학습과 개념의 이해가 먼저 되고나서 고난도 문제 기출을 풀어보곤 한다. 코딩테스트도 똑같다.
알고리즘에도 그리디, 수학, DP, 그래프, 자료구조 등 다양한 유형이 있고 기본적인 1번부터 28번까지의 문제를 풀기 위해 그 문제 유형을 반복적으로 학습하고 풀어본다. 그리고 기업 코딩테스트의 가장 어려운 문제는 29번 30번 처럼 계속해서 해당 기업 코딩테스트 기출의 동향을 보고 어려운 문제를 마주했을 때 어떤 방식으로 접근해야하는지 역시 반복적으로 학습한다. (이 29-30번을 못풀것 같아서 공채 코테가 자신이 없었다)
내가 알고있는 코딩테스트 준비 및 강의 사이트는 아래와 같다
- 백준 :www.acmicpc.net/
- 프로그래머스 : programmers.co.kr/
- leetcode : leetcode.com/
- codility : www.codility.com/
- 코드플러스 : code.plus/
- 인프런 : www.inflearn.com/
사실 결론은 간단하다 꾸준한 반복학습이다. 나같은 경우엔
- 학교 알고리즘 수업으로 기본 개념을 익히고
- 코드플러스의 백준 강의를 이용해서 유형별 풀이법을 정리하고
- 리트코드, 프로그래머스, 백준 뭐든 이용해서 꾸준히 풀었다.
특히 당시에 리트코드를 애용했는데, 리트코드에서 하루에 한문제씩 알고리즘 문제를 푸는 챌린지가 있었어서 습관만들기 좋았다.

코딩테스트 전과 후
코딩테스트를 보기 전에는 꼭 해당 플랫폼의 사용법에 익숙해지자. 카카오는 프로그래머스, 네이버는 codiliity와 프로그래머스에서 봤던 기억이있는데, 어느 플랫폼이든 코딩테스트 전에 해당 플랫폼 테스트 링크를 주기 때문에 꼭꼭 익히자.
백준에 익숙해져 있는 학생은 bufferedReader 부터 코딩을 시작할텐데, 프로그래머스에서는 IO 관련 코드를 짤 필요가 없기 때문에, 플랫폼 테스트 없이 그냥 바로 들어가서 시험을 본다면 백프로 당황할 것 같다.
코딩테스트를 볼때 나는 주로 아이패드를 이용해서 문제를 풀곤하는데 그 패드에는 항상 풀이 뿐만 아니라 문제에 대한 간단한 키워드도 함께 정리해두었다. 며칠이 지나고 복기를 위해서 혹은 해당 기업에 또 코딩테스트를 볼 일이 있을때 한번 더 풀어보고 혹이라도 같은 회사니까 비슷한 유형으로 나올까 싶어서 였다. 코딩 테스트 후에도 본인이 푼 문제를 복습하는건 중요하다.
5. 면접
면접 시작 전 후
요즘 코로나로 인해 2020년부터 기업에서 온라인 면접을 하고있다. 나도 그래서 실제로 대면으로 면접을 보기보다는 온라인으로 면접을 본게 훨씬 많았는데, 온라인 면접이 처음인 분들을 위한 팁을 아래 적는다.
- 흰 배경 : 이건 사바사지만 배경보단 나한테만 집중해줬으면 좋겠어서 흰 벽만 보이는 위치에서 면접을 봤다ㅋㅋ
- 얼굴이 잘 보이게 + 조명 확인 : 비대면이라 만나지 못해서 화면상으로라도 내 인상이 좋아보이게 하려고 했다.
- 통신 상태 확인
- 혹시 모르니 노트와 펜 준비하기

4번이 가장 중요하다. 면접을 보다보면 본인이 한 프로젝트의 서버 컴포넌트를 직접 그려서 설명해주세요. 혹은 이해가 안되는데 도식화해서 설명해주세요라는 요구를 받을 수 있다. 대면의 경우에는 회사측에서 준비할테지만 온라인 면접은 그러지 못하니 꼭 옆에 설명을 위한 종이와 펜을 준비하자. (요즘 채용 메일에 준비사항으로 대부분 공지하는 것으로 알고있다.)
나같은 경우엔 아이패드 + 맥북이라는 점을 이용해서 아이패드를 연결하고 화면공유를 한 뒤에 아이패드에 필기하면서 설명했다. (맥북의 사이드카 기능을 찾아보자)
또한 위에 코딩테스트와 마찬가지로 면접도 끝난 직후에 모든 질문내용을 복기해서 정리해두었다. 그리고 그 정리된 내용은 다음 면접을 준비할 때 혹은 다른 회사 면접을 준비할 때 사용했다.
면접 준비
면접은 사실 위에 지원서에 말한 내용과 같다. 최대한 관련 내용을 깊게 공부하는게 중요하다. 내가 한 면접 준비 방식은 아래와 같다.
1. 면접 예상 질문 리스트를 찾는다.
처음엔 막막해서 질문 리스트에 대한 구글링을 했다 키워드는 아래와 같다
[자바, 운영체제, 네트워크, 알고리즘, 데이터베이스, 디자인패턴] 면접 질문
요즘 github로 신입개발자 면접 질문 정리 이런식으로 정리해둔게 많아서 좋았다ㅋㅋ 그리고 추가로 내가 했던 프로젝트의 기술 스택 관련해서 면접 질문으로 나올 만한 것들을 선별했다 (docker, k8s, ELK 등)

위 사진은 실제 내가 적어두었던 면접 질문 리스트인데, 훨씬 더 많다. 관련 예상 질문을 받을때 기억해야하는 내용과 대답할 내용의 키워드를 적었다. 외에도 이전 면접을 보면서 받았던 질문들에 대한 리스트도 있었다.
2. 답변 키워드를 적어가면서 최대한 깊게 공부한다
답변 키워드를 적은 것은 위 사진에 예시를 적었다. 위 질문 키워드를 바탕으로 실제 면접에서 대답할 내용을 최대한 깊게 공부하자. 깊게 공부하지 않고 정말 간단한 내용만 공부하면 그만큼 말도 간단하게만 할 수 밖에 없다.
예를 들면 면접에서 Java HashMap이란? 이라는 면접 질문이 들어왔다고 하자. 그때 답변은 아래 3가지 컨셉을 바탕으로 내가 알고있는 것들을 최대한 깊게 대답 할 것이다 (그리고 이렇게 대답하기 위해 공부를 했다.)
Q. Java HashMap이 뭔지 설명해주세요
A. 키와 값으로 구성된 구조를 가지는 컬렉션 클래스로, 키에 따라서 값을 조회 삭제 수정 삽입이 가능합니다.
B. Map 인터페이스를 상속받은 구현체로 구현체의 특징이 hashing을 사용한다는 특징이 있습니다. 다른 Map 인터페이스의 구현체로는 treeMap이 있는데 이진 검색트리 형태로 데이터를 저장한다는 특징이 있습니다.
C. 해시테이블은 해싱을 사용한다고 했는데요. 해싱을 사용한다는 것은 객체가 가지고 있는 hashcode값에 따라서 key 테이블이 위치할 곳을 정한다는 것입니다. hashcode 계산으로 해당 데이터가 위치한 곳을 빠르게 찾을 수 있기 때문에 많은 양의 데이터를 검색할 때 유리합니다. 하지만 주의도 필요합니다. 이때 만약 다른 key값인데 hascode 값이 동일한 경우가 있을 수 있는데 이때는 해시 충돌이 일어날 수 있습니다. 이때는 hashcode를 담고있는 bucket이 연결리스트와 같은 구조로 다음 연결 리스트의 노드에 해당하는 key 값을 넣어주어 값을 저장합니다.
실제로 A만 말하더라도 B라는 꼬리 질문이 들어올 수 있고, B까지 말하더라도 C라는 꼬리질문이 들어올 수 있다. 꼬리질문은 그 지식에 대해 깊게 알고있는지를 판단하기 위해 들어오는 것이다. 꼬리질문을 예상해서 답변키워드를 적어가면서 깊게 공부했었다. 본인이 알고있는 지식이라고 생각해도 다시 한번 더 점검해보고 모르는 내용이 없는지 점검하고 더 공부하자.
그리고 다시한번 말하지만 면접에서 내가 모르는 내용을 질문하면 정말로 땡큐다. 모를때는 그냥 A, B까지는 아는데 질문 주신 부분은 잘 모르겠습니다. 공부해야 할 거리가 생겼네요 감사합니다. 하고 넘겼었다. 그렇게 대답하니 실제로 그 다음 면접에서 실제로 몰랐던 내용에 대한 재 답변을 요청했고, 그때는 완벽하게 대답해서 좋은 인상을 남겼다.
3. 말로 각 질문에 대한 답변을 소리내서 해본다
공부한 내용을 글로 정리하는 것과 말로 상대방에게 내가 알고있는 것을 전달하는 건 진짜 매우 다르다!!! 이거는 진짜 무조껀 해보고 가야한다. 같이 취업 준비를 하는 친구들과 모의면접을 하고 피드백을 받는 것도 좋다.
나같은 경우엔 위에 예상 질문 중에 나온다면 이 예시를 들어서 설명해야지 까지 미리 말로 연습해서 갔었다. 예를 들면 템플릿 메서드 패턴의 예시를 들때는 Message라는 추상클래스를 두고 KakaoTalk, InstargramDM, FaceMessanger 클래스를 바탕으로 설명해야지. 동시성 관련한 질문이 들어오면 account 계좌 입출급을 동시에 했을 때에 대한 경우를 예를 들어야지.까지 설정한 후에 말로 해보면서 준비했다.
4. 면접에서 공부할 거리
지원서를 쓸 때 받을 수 있는 면접 질문을 생각하면서 썼었다. 따라서 지원서에 쓴 기술 스택을 2번에서 말한 것처럼 제대로 공부하자.
컴퓨터공학 기초적인 내용은 정말 기본이기 때문에 내 경력이 아무리 화려해도 면접에서 언제든 나올 수 있다. 꼭 대비하자. 구글링 해보면 면접에서 물어보는 대표적인 질문들이 몇가지가 있다. 적어도 그정도라도 공부하자 :)
주언어(Java)와 관련한 내용 공부를 해도해도 끝이 없다. 자바 기준으로 컴파일타임 런타임타임에 대한 질문, 내부 JVM 구조, GC, 메모리 저장, 람다, 함수형 프로그래밍, 스트림 등등 언어안에도 너무 많은 내용이 있다. 성능뿐만 아니라, JVM같은 경우엔 운영체제와도 연관되는 내용이며 자바 thread 역시 현업에서의 동시성 프로그래밍을 위한 기초이다. 언어를 공부하다 보면 컴퓨터 공학 지식과 연관되는 부분도 많이 나와서 나는 자바 공부를 진짜 열심히 했었다. (재밌기도했다..) 그러다보니 자바 관련 질문에서는 대부분 답변을 할 수 있었다.
6. 결론
나는 결국 위 과정을 통해 약 한 달 간의 취업준비를 했었고 최종적으로 카카오에 가게 되었다.
- 네이버 클라우드 채용형 인턴 : 서류 합 > 코테 합 > 1차 면접 합 > 최종 합격 > 거절
- SAP 인턴 : 서류 합 > 1차 면접 합 > 최종 합격 > 거절
- 하이퍼커넥트 경력직 > 서류 합 > 코테 불합
- 카카오 수시채용 : 서류 합 > 코테 합 > 전화 면접 합 > 1차 면접 합 > 2차 면접 합 > 최종 합격 > 취뽀






내가 서류를 넣은 4곳 중 가장 가고싶었던 곳은 카카오였다. 하지만 최종 합격 발표가 난 나머지 두곳이 시기는 더 빨랐었다. 수시 채용이나 인턴을 이용해서 취업을 준비하다보니 그사이 지원 간격이나 계약서 사인을 조금만 기다려달라는 메일도 보내 조정을 해보려했으나, 두곳의 합격 발표가 난 시점이 각각 카카오 전화 면접 합, 2차 면접 결과를 기다리던 시점이었다. 채용 일정 차이로 다른 곳을 포기하거나 카카오 결과를 기다리거나 택일의 상황이었다. 하지만 가장 가고싶었던 곳이 여기었기에, 두 곳 모두 계약서 작성을 거절하고 위와 같은 방식으로 카카오 면접에만 집중했었고 그 결과 카카오 검증형 계약직으로 입사하게 되었다.
그리고 3개월의 계약직 기간을 거쳐, 내부 과제를 마치고 전환 평가에 합격했다.
사실 내 취준 방법이 정답은 아니다. 나처럼 수시채용을 노리는 것보다 공채를 노리는게 훨씬 마음이 편할 수 있다. 또한 각자의 스펙과 전략이 있을거고 나와는 다를 수 있다. 하지만 내가 취준을 하면서 공부한 방식이나 얻었던 정보들이 누군가에게 도움이 될 수 있지 않을까 해서 취준기를 계속 써야지 써야지 하고 계속 미뤘는데, 드디어 글을 마치게 되었다 :) 모두 본인의 강점을 내세울수 있는 취준을 하고 취뽀를 할 수 있기를🙏
Oh man... I can't believe I'm only writing this now.. I kept going back and forth and finally decided to finish this post. (Still, I went to Kakao, but my Naver review is the most viewed post on my blog?? LOL)
After failing the Naver full-time conversion interview in mid-June, I started my job search.
Naver Backend Internship Review
I'm going to write about my Naver internship experience from March to June, about 3 months. I kept putting it off saying I'd write it eventually, and it's been almost 2 months since the internship ended, so quite a bit of time has passed, but anyway
jyami.tistory.com
When I was preparing for the Naver internship, I got in without any algorithm prep or interview preparation at all. Since my very first company interview was that Naver internship interview, I was running on pure hopium thinking if I got into Naver, I could land a job without any real job hunting LOL. But reality hit hard — I unfortunately didn't get converted to full-time ㅠ and I was like "wait, am I actually job hunting now..?" and that's how my job search began LOL
Looking at just the conclusion, I don't think I spent that long stressing about job hunting, but I want to write about my relatively short 1-month job search journey.
1. Companies I Wanted to Join
Setting Your Target Companies
I believe the most important thing for any college student starting their job search is to set criteria for the companies they want to join. There are so many different types of companies — public enterprises, startups, large corporations, IT companies, foreign companies, etc. — and each one has different standards for hiring new employees. Also, starting from the ideal candidate profile that your desired company is looking for, to the basic qualifications needed (language certifications, professional certifications, etc.), the hiring process is different for every company, so you need to prepare in advance.
For example, if I wanted to join Samsung, I would first practice the past coding test problems from Samsung, study for the aptitude test included in their hiring process, and if I made it to interviews, I'd prepare according to the interview order and characteristics of each interview round. These hiring processes are usually described in detail on each company's recruitment guide and process pages. (Make Googling a habit) By looking at these hiring processes, you can objectively assess your current qualifications and prepare for any gaps.
Once you've decided on the company you want to join, you'll be going through a long hiring process and preparing accordingly. After going through all that grueling process, it should be a company you truly want to join — that way, when the acceptance announcement comes, the joy will be that much greater. So I believe it's important for everyone to first choose the company they truly want to work at and focus their preparation on that choice.
I want to work at an IT company..
So I had the keyword "a place where I can grow as a developer" in mind, and I was thinking about IT companies or foreign IT companies. At the time, I submitted applications to these four places: Kakao, Hyperconnect, Naver, and SAP. (There were other IT companies I was interested in, but these four had the job postings that caught my attention at the time)
The ideal candidate profiles required by these four companies, which all shared the common trait of being IT companies, were actually pretty similar. The core keyword was "a developer who loves and excels at development." Looking more closely, things like understanding Java well, having solid computer science knowledge, etc. — the desired technical competencies were detailed in the job descriptions.
From the company's perspective of hiring developers, it felt like they were asking: You'll need to study a lot more going forward, and you need to have read development books, have collaborative development experience, deep understanding of your major's knowledge, and understanding of your primary programming language to work with us — are you ready? That's right. They were asking whether you, as an undergrad with some interest in development, had put in effort and study to improve your development skills, and whether that studying was done properly.
And I felt that my current state could sufficiently demonstrate the required competencies through the studies, projects, and technical interests I'd pursued during my undergraduate years. Even if there were parts of the job description that didn't match me, I planned to emphasize that I had studied my current tech stack in sufficient depth.

Here's a tip — if you don't know what to study next, look at the qualification requirements of the companies you want to join. In my case, I didn't have Kotlin server development experience, but if I had seen this posting in my third year, I would have found a new thing to study: Kotlin. And even if you already know the content, you should absolutely study it as deeply as you possibly can. For example, if it says "Java-based server development experience," as you can see from some of my blog posts, beyond the Java classes at school, I read books like Effective Java, and when there were concepts I didn't understand like generics, I dug deeper and kept growing.
2. How IT Companies Recruit
The companies I wanted to join were mainly IT companies, and among them, I especially wanted to go to Kakao and Naver. So I looked into and explored many ways to enter these companies as a new hire. From what I could see, these two companies had roughly 3 types of application methods.
- Open Recruitment (Regular Hiring)
- Rolling Recruitment
- Internship (Regular Hiring / Rolling Recruitment)
Open Recruitment
I think most of you are already familiar with open recruitment. Open recruitment is usually divided into first-half and second-half cycles, where they hire a large number of new developers at once. Since open recruitment is a method used by many companies beyond just Kakao and Naver, I think most people already know about it.


However, considering these are IT companies, here are some characteristics of open recruitment:
- A really large number of applicants
- The coding test is difficult
- Interviews mainly focus on basic computer science knowledge questions
- Interviews can be N:N (applicants : interviewers)
- You join directly as a full-time employee
- You have to adjust your job search schedule to match the company's application period
- If you get in, you'll have peers who joined at the same time
- After passing, there's a workshop period before you start
- You don't know which team you'll be assigned to
I mentioned above that the coding test is difficult — among college students preparing for open recruitment, I've seen people who practice past exam problems from these companies for years. In fact, Kakao's open recruitment coding test is conducted on Programmers, and I think I even saw Programmers selling a lecture course analyzing the open recruitment coding test problems (was it 2018?)
Also, this is something I personally noticed while looking at open recruitment postings — they don't list specific technical skill requirements. I got the feeling that regardless of whether you use Java, C, or Python, if you're confident in your development area and have strong computer science abilities, they'll hire you as a new developer.
I didn't apply through open recruitment. Personally, I wasn't confident in coding tests. I did prepare for coding tests in my own way, but I had doubts about whether I could be at the top tier among all those open recruitment applicants. (Though I can solve LeetCode easy~medium problems) I also had doubts about whether they would carefully review my resume among so many applicants. And the most important reason was that I started my job search in June, but I would have had to wait until September for open recruitment, and I thought I could apply to and get accepted at companies in the meantime.
However, the stability of becoming a full-time employee right away and having peers who join together were the biggest advantages of open recruitment and something I was envious of.
Rolling Recruitment
This is how I applied to Kakao. Some college students might not know about rolling recruitment. Rolling recruitment means applying to developer positions posted on each company's career site. You might see "(Experienced)" written on these postings and think "I'm a new grad, so I can't apply to this, right?" But if you dig through the career site carefully, you'll sometimes find postings that say "experience level doesn't matter" or include explanations about probation periods for new developers.
It's true that these sites are primarily intended for experienced developer postings, but there are occasional postings that also consider new developers who meet the tech specs required by the team. So if you're targeting rolling recruitment, check your desired company's career site regularly.

Here are some characteristics of IT company rolling recruitment from a new developer's perspective:
- Hiring considers team culture fit
- Preference for candidates matching the team's required tech specs
- New hires may have a 3-month probation period depending on the company
- If there's a probation period, your continued employment is determined by evaluation (3-month contract)
- Coding tests vary by team
- They ask computer science knowledge questions in interviews
- They dig deep into your experience based on what you wrote in your application
- Interviews are 1:N (applicant : interviewers)
- The overall hiring schedule can be adjusted to fit your situation
With rolling recruitment, since I was the only applicant, they tended to tailor their questions to my application. They also asked tough computer science questions to gauge whether I was at the level of an open recruitment new hire. The coding test was, in my experience, a bit easier than open recruitment past exams, but this probably varies by team. (But most are a bit easier than open recruitment..)
Also, unlike open recruitment, rolling recruitment allowed me to adjust the hiring schedule to fit my own schedule. While open recruitment requires you to take interviews and coding tests on fixed dates, with rolling recruitment, the HR team sends you an email asking about your preferred time and date.
However, when a new hire enters through rolling recruitment like this, there can be penalties like a 3-month probation period. That was my situation, and the uncertainty was a bit tough. Even though I went through a longer hiring process than open recruitment, being on a contract with no peers and the possibility of not being at the company after 3 months was a bit psychologically daunting.
The advantage of rolling recruitment is that you can choose a company and team that fits what you want, and go through a hiring process that's focused on you. I liked this aspect, which is why I chose rolling recruitment.
Internship (Regular Hiring / Rolling Recruitment)
IT companies also hire interns. But there's a saying that "internships are golden tickets" because they're just as hard to get. For internships, I've seen both regular hiring and rolling recruitment formats, and the hiring scale and process really varied company by company.
For example, Kakao internships were conducted similarly to the Kakao new developer open recruitment mentioned above, but Naver intern regular hiring was done on a smaller scale through NBP (Naver's subsidiary) intern recruitment.
In my case, I applied for the Naver Cloud regular hiring internship during my June job search, and when I applied for an internship in January, it was through rolling recruitment. Since it's an internship, I felt it was a softer version of the open recruitment and rolling recruitment methods mentioned above. (But still, prepare hard for the interviews)
3. Writing Your Application
If you've looked at the application method for your desired team or company in section 2 and made your choice, it's time to write your application for the document screening. Document screening usually allows you to submit the company's standard application form along with your personal resume. I mainly tried to pack my activities into my resume, and in the application form, I expanded on the resume content in a more narrative style. Here are some tips I'd like to share for writing applications:
1. A developer resume's first impression should show you're passionate about development.
Since they're hiring developers — especially new developers — I thought my documents should be brimming with passion for development. So when writing my application, I tried to highlight these 5 things:
- Reading development books: Showing I made efforts to go beyond school knowledge and get closer to being a real-world developer
- Hackathons:
(Well... I just did them for fun, but)Demonstrating a fast learning curve by quickly picking up unfamiliar stacks when needed - Projects / Extracurricular activities: Showing I can collaborate with others using technology
- Computer science knowledge (GPA): Showing I diligently completed the developer fundamentals
- Studying my primary language (Java): Showing I can use my language according to its characteristics
These 5 things were what I could use to demonstrate my passion as a developer. As a new grad, what you can highlight in your application isn't real work experience, but rather how you've been studying development, how interested you are in development, and what kind of developer you're growing into — so weave in your experiences and write them in a clear, organized manner.
Actually LOL, so when I applied to Hyperconnect, I boldly submitted my application to an experienced-hire posting despite being a new grad, and after reviewing my documents, they confirmed I was about to graduate and let me interview..ㅇ0ㅇ But I failed the coding test (Hyperconnect's coding test was really interesting — instead of algorithm tests, they mainly asked about real-world code and it was in English)
2. Keep your resume updated as you go
As you participate in various extracurricular activities and clubs, you end up writing multiple applications and your history keeps getting updated. And you'll have takeaways from each activity. Make sure to document those takeaways when they're fresh.

- 1st year - LIKELION: Interest in web, became able to do web development with MVC structure / Focus on completing services regardless of front or back end
- 2nd year - SOPT: Became able to do web development with API structure / Learned Spring Boot / Became proficient in Java / Interested in backend development
- 2nd year - Smilegate: Understanding of server architecture / Became proficient in Spring
- 3rd year - JavaBom: Fundamental knowledge needed as a backend developer / Clean code / Writing test code / Deeper understanding of Spring and Java
- 3rd year - DSC: Running a developer community
- 4th year - Internship and job search preparation
In my case, the rough history was as above, and in between, I also participated in many activities like Open Hack, Naver Hack Day, etc. Through those activities, I wrote applications, and as I kept writing them, I'd just tweak them a little and keep reusing them. Going all the way back, the application I wrote for SOPT became the first draft of the self-introduction letter I used later. So make sure to save everything well in your own way.
3. When writing your application, think about potential interview questions, and thoroughly study the tech stacks you mention
The tech stacks you write in your application are basically expected interview questions. So study everything you put in your application deeply. Let's say you wrote in your self-introduction that you have experience using MySQL. Then the interviewer could ask so many questions — from MySQL characteristics to DB normalization, transactions, indexing, isolation levels, and more. And even outside of interviews, having a deep understanding of the tech stacks you've studied is fundamental knowledge every developer should have. So questions about those technologies in interviews are really hinting at things you should basically know. Whenever I got a question about something I didn't know, I thought "thank you" and immediately studied it in depth. (In fact, in the next interview, they asked me to re-answer questions I couldn't answer before.)
Also, if I felt I couldn't answer well in an interview, or if I had only surface-level knowledge about something, I boldly removed it from my application. In my case, I had freelance frontend work experience, but I removed that from my application because I was worried they might ask about frontend stuff. If they asked me to explain JavaScript event handling, I wouldn't have been confident answering that, and I definitely couldn't have handled follow-up questions either. Plus, even with just the tech stacks already in my application, I had mountains of content to study before the interview — when would I study frontend too?
4. Make your resume easy to read + The first page is the main page
Standing out in your application matters too. With so many applicants applying to these companies, if the content is repetitive, the subject-predicate relationships are off, and it's written in a way the reader can't understand — imagine how exhausting that would be to read. No matter how impressive your experiences and insights are, summarize them as much as possible in your application (the interviewers will see that summary and ask about what intrigues them anyway.)
So I personally used illustration tools to add graphs, color coding, bolding, bullet points — I did everything I could to improve readability. I also asked developer friends I knew to review it.
Backend Developer Resume
Developer portfolio, backend developer resume (update 2020.06.12)
jyami.tistory.com
Also, with resumes, the first page is the main page. College students sometimes write their project experiences in chronological order (past→present). But the first page is the main page. Put your most recent experience — the one closest to the present and showing the most growth — on the first page (present→past). Also, showcase the tech stacks you're most confident in and want to highlight on the front page.
4. Coding Tests
Preparing for Coding Tests
I think I got asked a lot about how I prepared for coding tests.
I often think coding tests are similar to the math section of the Korean college entrance exam (수능). How did we prepare for the math section? First learn the concepts, then practice problems by type, try difficult problems too, and keep doing repetitive learning. Problems 1 through 28 can be solved if you know the patterns, so you keep repeating and applying what you know to mechanically solve each pattern type. And for the hard problems like 29 and 30, you first need the pattern-based repetitive learning and conceptual understanding, then practice with past difficult problems. Coding tests are exactly the same.
Algorithms also have various types like greedy, math, DP, graphs, data structures, etc., and you repeatedly study and practice those problem types to solve the basic problems 1 through 28. And for the hardest problems on company coding tests, like problems 29 and 30, you keep studying trends from that company's past coding tests and repeatedly learn how to approach difficult problems. (I wasn't confident in open recruitment coding tests because I couldn't solve these 29-30 level problems)
Here are the coding test preparation and lecture sites I know of:
- Baekjoon:www.acmicpc.net/
- Programmers: programmers.co.kr/
- LeetCode: leetcode.com/
- Codility: www.codility.com/
- Code Plus: code.plus/
- Inflearn: www.inflearn.com/
The conclusion is actually simple: consistent, repetitive practice. In my case:
- I learned the basic concepts through my school's algorithm class
- I organized problem-solving methods by type using Code Plus's Baekjoon lectures
- I consistently solved problems on LeetCode, Programmers, Baekjoon — whatever was available.
I especially loved LeetCode at the time because they had a daily algorithm problem challenge, which was great for building habits.

Before and After the Coding Test
Before taking the coding test, make sure you're familiar with the platform. Kakao uses Programmers, and I remember Naver using Codility and Programmers. Whatever the platform, they give you a test link beforehand, so definitely practice with it.
Students who are used to Baekjoon will start coding from bufferedReader, but on Programmers you don't need to write IO-related code. So if you just go in and take the test without trying the platform first, you'll 100% be thrown off.
When taking coding tests, I usually used my iPad to work through problems, and on that iPad I always noted not just the solutions but also brief keywords about each problem. This was for reviewing days later, or in case I had another coding test at the same company, so I could try solving them again and see if similar types might come up since it's the same company. Reviewing the problems you solved after the coding test is important.
5. Interviews
Before and After the Interview
Due to COVID, companies have been conducting online interviews since 2020. I also ended up doing way more online interviews than in-person ones. Here are some tips for those doing online interviews for the first time:
- White background: This varies by person, but I wanted them to focus only on me rather than the background, so I positioned myself in front of a white wall for interviews LOL
- Make sure your face is clearly visible + check the lighting: Since we can't meet in person, I tried to make a good impression through the screen.
- Check your internet connection
- Have a notebook and pen ready just in case

Number 4 is the most important. During an interview, you might be asked to draw and explain the server components of a project you worked on, or to diagram something for better understanding. For in-person interviews, the company would prepare materials, but for online interviews they can't, so definitely have paper and a pen ready for explanations. (These days, I believe most companies include this in the preparation instructions in their hiring email.)
In my case, I took advantage of having an iPad + MacBook by connecting the iPad, sharing the screen, and writing on the iPad while explaining. (Look up the Mac Sidecar feature)
Also, just like with the coding test above, right after each interview ended, I reviewed and documented all the questions. I then used those notes to prepare for the next interview or interviews at other companies.
Interview Preparation
Interview preparation is honestly the same as what I said about the application above. The key is to study related content as deeply as possible. Here's how I prepared for interviews:
1. Find lists of expected interview questions.
I was overwhelmed at first, so I Googled question lists. The keywords were:
[Java, Operating Systems, Networking, Algorithms, Databases, Design Patterns] interview questions
These days there are lots of well-organized resources on GitHub like "new developer interview question compilations," which was great LOL. Additionally, I selected potential interview questions related to the tech stacks from my projects (Docker, K8s, ELK, etc.)

The photo above shows the actual interview question list I wrote down, and there's much more. I wrote down keywords for what to remember and how to answer each expected question. There was also a list of questions I'd received from previous interviews.
2. Write down answer keywords and study as deeply as possible
I showed an example of writing down answer keywords in the photo above. Based on those question keywords, study as deeply as possible for the actual interview answers. If you only study simple content without going deep, you'll only be able to give simple answers.
For example, let's say the interview question "What is Java HashMap?" comes up. I would answer as deeply as possible based on these 3 concepts (and I studied specifically to be able to answer this way):
Q. Please explain what Java HashMap is.
A. It's a collection class with a key-value structure that allows you to look up, delete, modify, and insert values by key.
B. It's an implementation of the Map interface, and the key characteristic of this implementation is that it uses hashing. Another implementation of the Map interface is TreeMap, which stores data in a binary search tree format.
C. I mentioned that hash tables use hashing. Using hashing means that the location where a key will be placed in the table is determined by the object's hashcode value. Since you can quickly find where data is located through hashcode calculation, it's advantageous when searching through large amounts of data. But caution is needed. If different keys happen to have the same hashcode, a hash collision can occur. In that case, the bucket containing the hashcode uses a structure like a linked list, placing the key value in the next node of the linked list to store the value.
In reality, even if you only say A, a follow-up question B could come. And even if you say up to B, a follow-up question C could come. Follow-up questions are asked to determine if you have deep knowledge of the subject. I studied deeply by anticipating follow-up questions and writing down answer keywords. Even if you think you already know something, double-check it, look for gaps in your knowledge, and study more.
And once again — if they ask me something I don't know in an interview, I'm genuinely thankful. When I didn't know, I'd say "I know up to A and B, but I'm not sure about what you're asking. Looks like I've found something new to study — thank you." and move on. When I answered that way, in the next interview they actually asked me to re-answer something I didn't know before, and that time I answered perfectly and left a good impression.
3. Practice answering each question out loud
Organizing what you've studied in writing versus verbally conveying what you know to someone else are truly VERY different!!! You absolutely must try this before going in. It's also great to do mock interviews with friends who are also job hunting and get feedback.
In my case, for the expected questions above, I even practiced to the point of deciding which examples to use. For example, when explaining the Template Method pattern, I'd use an abstract class called Message with KakaoTalk, InstagramDM, and FaceMessenger classes. When a concurrency question came up, I'd use the example of depositing and withdrawing from an account simultaneously. I prepared by setting up these scenarios and practicing out loud.
4. What to study for interviews
When writing the application, I thought about potential interview questions. So study the tech stacks in your application thoroughly, as mentioned in point 2.
Basic computer science knowledge is truly fundamental, so no matter how impressive your background is, it can come up anytime in an interview. Definitely prepare for it. If you Google it, there are several representative questions that commonly appear in interviews. Study at least those :)
Studying content related to your primary language (Java) never ends. For Java alone, there are questions about compile time vs runtime, internal JVM structure, GC, memory storage, lambdas, functional programming, streams, and so much more. Beyond just performance, the JVM is also related to operating systems, and Java threads are the foundation for concurrency programming in the real world. As I studied the language, a lot of it connected to computer science knowledge, so I really studied Java hard. (It was fun too..) As a result, I was able to answer most Java-related questions.
6. Conclusion
In the end, I went through the process described above over about a month of job hunting, and ultimately ended up joining Kakao.
- Naver Cloud Recruitment Intern: Resume passed > Coding test passed > 1st interview passed > Final offer > Declined
- SAP Intern: Resume passed > 1st interview passed > Final offer > Declined
- Hyperconnect Experienced Hire > Resume passed > Coding test failed
- Kakao Rolling Recruitment: Resume passed > Coding test passed > Phone interview passed > 1st interview passed > 2nd interview passed > Final offer > Got the job!






Out of the 4 places I applied to, Kakao was where I wanted to go the most. However, the other two places that gave me final offers did so earlier in the timeline. Since I was preparing through rolling recruitment and internships, I tried to adjust the timing by sending emails asking them to wait a bit before signing the contract, but the two offers came in while I was waiting for Kakao's phone interview results and 2nd interview results, respectively. Due to the difference in hiring schedules, I was in a situation where I had to choose between giving up the other places or waiting for Kakao's results. But since Kakao was where I wanted to go the most, I declined to sign the contracts at both places and focused solely on the Kakao interviews using the methods described above — and as a result, I joined Kakao as a probationary contract employee.
After a 3-month contract period, I completed the internal assignment and passed the conversion evaluation.
Honestly, my job hunting approach isn't the definitive answer. Unlike me who targeted rolling recruitment, aiming for regular mass recruitment cycles might be much less stressful. Everyone has their own qualifications and strategies, and they might be different from mine. But I thought the study methods and information I gathered during my job search might help someone out there, and I kept putting off writing this job hunting story, saying "I should write it, I should write it" — but I've finally finished it :) I hope everyone can leverage their own strengths in their job search and land their dream job 🙏
'Daily > About Jyami' 카테고리의 다른 글
| 2022년 회고 | 2022 Year in Review (3) | 2023.01.26 |
|---|---|
| 2021년 회고 | 2021 Year in Review (20) | 2022.01.17 |
| 2020년 회고록 | 2020 Retrospective (31) | 2020.12.31 |
| 2019-2020 DSC Ewha Lead를 마치고 | Finishing My Journey as 2019-2020 DSC Ewha Lead (3) | 2020.12.20 |
| 네이버 백엔드 인턴십 후기 | Naver Backend Internship Review (69) | 2020.07.29 |
댓글
Comments