지난 4월 ~ 7월에 공채를 진행했고, 이제서야 후기를 올립니다. 

결론부터 말하면 2차 인터뷰인 종합 역량 인터뷰에서 탈락했습니다. 

코딩 테스트나 면접 내용의 구체적인 내용의 관해서는 서약서를 작성했으므로 답변드리지 못합니다. 

일정

지원서 작성 코딩테스트 코딩테스트
결과 발표
기술 역량 인터뷰 기술 역량 인터뷰 결과 발표 종합 역량 인터뷰 종합 역량 인터뷰
결과 발표
3/29 - 4/10 4/15 5/9 5/15 - 5/25 6/2 6/12 - 6/21 7/6

※ 종합 역량 인터뷰는 6/23일 정도까지 지연된 것으로 알고 있습니다. 

서류 전형

문항은 대략 이렇습니다. 그대로 가져와도 되는지 모르겠어서 대략적으로 적겠습니다. 

[필수] 1. 지원 계기, 회사에서 어떻게 성장하고 싶은지
[필수] 2. 가장 열심히 한 프로젝트, 문제 해결과정 구체적으로
[필수] 3. 희망 분야, 이유
[필수] 4. Github, Blog 등

제 지원서는 아래와 같이 작성했습니다.

더보기
  • 1번 문항

지속 가능한 열정을 만들 수 있기 때문입니다.
평소 호기심이 많은 편이라 디자인, 공예, 패션, 심리학 등 여러 분야에 관심이 많습니다.
그중에서도 개발은 5년 이상 지속할 수 있던 취미이자 일이었습니다.

개발은 즐거움도 있었지만, 정신적인 피로와 많은 공부량 등 힘든 점도 많습니다.
그럼에도 지속할 수 있었던 이유는 성취감입니다.

"CPU는 0과 1만을 처리하는데 어떻게 화면을 표시하는 걸까", "내가 보낸 메시지는 어떻게 미국까지 가는 걸까" 같은
막연한, 마법 같던 지식의 안개가 걷히는 순간에 성취감과 이렇게 얻은 지식을 다른 사람들에게 설명하고 공유함으로써 나오는 성취감이 열정을 다시 만들어주었습니다.
또한 오류가 발생했을 때, 발생 원인을 파악하고 레거시 코드는 왜 이렇게 작성했을까 생각하며 기술적인 해결에 도달했을 때의 성취감 역시 이 일을 지속 가능하게 만들어 주었습니다.

그리고 이렇게 성취한 지식이 저의 궁극적인 성장에 도움이 된다는 점이 좋았습니다.
기술적인 지식뿐만 아니라 팀원들과 대화하는 능력, 설명하는 능력 그리고 코드에 담긴 의미와 속 뜻을 알아내는 과정이 소프트 스킬 향상에도 도움이 되었습니다.

팀 네이버에서는 레거시 코드를 분석하고 개선하는 경험을 통해 그리고 동료들과의 협업을 통해 성장하고 싶습니다.
네이버는 24년간 많은 사용자를 대상으로 서비스해 온 기업입니다.
그 간의 경험이 들어있는 코드를 통해 과거의 기술과 현재 기술 차이점을 배우고, 더 좋은 방향으로 개선하면서 성장하고 싶습니다.
그리고 적극적인 개발자들이 많은 환경이 큰 성장 동력입니다.
동료들과의 활발한 협업 및 스터디, DEVIEW 같은 콘퍼런스에서 발표하는 경험을 통해 성장하고 싶습니다.

  • 2번 문항

네이버 커넥트재단 부스트캠프에서 했던 RightWeight라는 프로젝트가 있습니다.
운동 루틴을 생성하고, 기록하고, 공유할 수 있는 안드로이드 어플입니다.

데이터 구조를 보면 특정 날에 여러 가지 운동, 한 운동에 여러 세트 수가 중첩되어 있는 구조입니다.
Json으로 보면 다음과 같습니다.
"routine" : {
    "day1" : {...},
    "day2" : {...},
    "day3" : {
        "exercise1" : {...},
        "exercise2" : {
             "set1": {}
        }
    }
}

이런 복잡한 데이터 구조 때문에 몇 가지 문제가 발생하였습니다.

1. 데이터 저장소 선택
파이어 베이스의 Realtime DB와 Firestore 중에 무엇을 선택할지 문제였습니다.
Realtime DB를 사용하면 간단히 데이터 저장이 가능하지만, 데이터가 커질 수 있고, depth가 깊어진다는 문제가 있었습니다.
또한 Recycler View에서 제목 정도만 보여주려 해도 모든 정보를 가져와야 했습니다.
이에 반해 Firestore는 NoSql로 document 컬렉션으로 저장되기 때문에 필요한 정보만 컬렉션 단위로 가져올 수 있고,
Paging 처리를 위한 인덱싱도 지원하기 때문에 Firestore를 선택했습니다.

2. 트랜잭션 처리
팀에서 Firebase를 SDK가 아니라 REST API 방식으로 사용했습니다.
운동 루틴 하나를 삭제하려면, 루틴 안에 있는 모든 day, exercise, set에 대한 삭제 쿼리를 요청해야 했습니다.
루틴이 커질수록 쿼리가 많아지고, 중간에 네트워크가 끊긴다면 데이터의 일부만 남아있는 상태가 될 수도 있습니다.
REST API 방식의 Transaction 처리에 관한 문서의 부재로 해결하지 못했습니다.
최종적으로는 runQuery라는 쿼리를 모아서 요청하는 방식을 사용했지만, 이 역시 네트워크가 끊길 시 같은 문제가 발생합니다.
SDK를 사용하거나, 별도의 서버를 두었다면 이러한 문제에 더 쉽게 대응할 수 있지 않았을까 아쉬움이 남았습니다.

  • 3번 문항

Android

사용자에게 가장 가까운 분야이고 클라이언트 분야 중에서도 휴대폰의 성능과, 디자인, 터치 인터페이스의 사용성까지 고려해야 한다는 점에서 흥미를 느꼈습니다.
또한 자바, 코틀린 언어를 사용하여 객체지향적인 코드를 작성할 수 있다는 점도 매력적이었습니다.

Java에 대한 이해도가 높습니다.
Java에 대한 스터디를 진행하며 객체 지향의 장정, 특징은 무엇인지, 컴퓨터에서는 어떻게 자원이 할당되고 실행되는지 등 지식이 언어에 한정되지 않도록 했습니다.
언어와 함께 JVM도 공부하며, 자바 코드가 어떻게 바이트코드로 변환되어 어느 메모리에 할당되고, 어떻게 실행되는지와 Garbage Collection도 함께 공부하였습니다.
안드로이드 OS도 JVM 기반의 ART를 사용하기 때문에 Java에 대한 지식이 안드로이드를 더 쉽게 이해할 수 있게 도와주었습니다.
이런 추상적인 사고방식 덕분에 자바에서 코틀린으로 빠르게 전환할 수 있었습니다.

'지역 XR 챌린지'라는 공모전에서 AR 내비게이션 앱으로 수상한 경험이 있습니다.
해당 프로젝트에서는 Lane Detection 을 하기 위해 OpenCV를 사용해야 했습니다. 
카메라 정보를 서버로 보내면 레이턴시가 생기기 때문에 Android NDK로 C++을 사용하여 기기 안에서 처리하도록 구현했습니다.
완성한 프로젝트는 플레이스토어를 통해 배포하였습니다.

네이버 커넥트재단 부스트캠프 웹・모바일 7기 과정, 안드로이드 분야를 수료하였습니다.
부스트캠프의 팀 프로젝트에서 1주일 단위로 스프린트 계획을 세우고, 매일 스크럼을 통해 진행 상황을 공유하고, 페어 프로그래밍을 하며 문제를 해결해보는 경험을 했습니다.
프로젝트는 MVVM 아키텍처로 앱을 구성하였고, 서버에서 가져오는 정보는 Paging과, Room을 사용해 로컬 데이터베이스에 캐싱하여 네트워크 사용량을 줄이고 오프라인 사용성을 높였습니다.
그리고 Retrofit을 사용한 네트워크 처리, Coroutine을 사용한 비동기 처리 등의 경험을 했습니다.

  • 4번 문항

RightWeight / 안드로이드 어플 개발 / https://github.com/boostcampwm-2022/android09-RightWeight
운동 루틴을 기록, 관리, 공유할 수 있는 서비스
역할: 
MVVM, Repository 패턴 적용
Toolbar, Navigation 관련 설정
타이머 Service 알림 표시 및 딥링크 설정
Room에 저장된 데이터 RecyclerView로 표시
Retrofit으로 Firebase와 통신

MusicHub / 백엔드 개발 / https://github.com/pknu-wap/Musichub
프로젝트 설명 : https://yoon6.github.io/work/0.html
여러명의 사람들이 함께 플레이 리스트를 만들어가는 서비스
역할:
Spring Security를 통한 로그인/회원가입 기능 구현
MVC패턴 사용, CRUD 처리  

자바의 정석 스터디 / https://gdsc-pknu.notion.site/2791abcc40804df3b9dacb15071b0d81
책 내용에서 더 깊게 공부한 내용 발표, 이해한 내용으로 비유 하기
역할: 스터디 운영, 참여

JVM 동작 원리 공부
블로그 : https://yoonda.tistory.com/12
유튜브 : https://youtu.be/w9-NfxfC9JY

코딩테스트

4/15일(토)

코테를 복기하지 않아서 기억이 흐릿합니다. 

총 4문제가 나왔고, 2문제를 풀었습니다. (정답여부는 확실하지 않습니다.)

1번은 구현이었고, 2번은 DP로 풀었던 것으로 기억합니다. 

3번도 구현이었던거 같은데 3,4번은 잘 기억나지 않습니다. 죄송합니다. 😥

주변과 오픈 톡방을 봤을 때, 1솔까지 합격한 사례가 있었습니다. 

지원서를 꽤 보는 것 같습니다. 

기술 역량 인터뷰 

5/24일(수)

기술 인터뷰는 Zoom을 통해 진행되었습니다. 

저는 마지막 타임이기도 해서 70분 - 80분 정도 봤습니다. 

메일에는 70분 본다고 적혀있습니다. 

2:1로 진행되고, 자유로운 편안한 분위기 였습니다. 

지원서 기반 질문과 기타 CS 질문 등이 나오고, 답변마다 추가적으로 면접관분들의 질문이 들어왔습니다. 

문제에 대한 답을 도출하는 게 아니라 저의 의견이 무엇인지, 어떤 사고과정을 통해서 그런 생각을 했는지를 깊게 물어보셨습니다. 

모르는 부분에 대해서는 제가 물어보기도 하고, 직장 동료/ 상사분과 커피챗하는 느낌이었습니다. 

종합 역량 인터뷰

6/14일(수)

종합 인터뷰 역시 Zoom으로 진행되었고 30분 정도 소요 되었습니다. 

2:1로 진행되었습니다. 

지원서 기반 질문과 약간의 기술적인 질문, 그리고 인성 면접 질문들을 받았습니다. 

그리고 면접 당시에 4개월 정도의 경력을 가지고 있었어서 그 부분에 대해서도 질문을 받았습니다. 

결과

 

결과적으로 합격을 하지는 못했습니다. 

멘탈도 적당히 나가고 조금 힘들긴 했지만, 그런다고 달라지는 건 없기 때문에 제 부족한 점을 찾고, 메타인지 능력을 키우고, 맡은 일을 열심히 하며 정진하고 있습니다. 

앞으로는 경력때문에 신입공채에는 지원하지 못하겠지만, 기술적 역량을 키우고, 개발을 더 좋아하고, 나 자신을 더 잘 알게될 때 면접을 한 번 더 보고싶긴 하네요. 

종합 역량 인터뷰에서 스스로 아쉬웠던 점은 이런 것들이 있습니다. 

  1. 기술 인터뷰 이후에 약간의 자만심과 게으름으로 면접 준비를 소홀히 했다.
  2. 답변을 얕게 했다. 표면적인 답변만 하고 근거가 되는 이유를 말하지 않았다.
  3. 동문서답 했다.
    • e.g. A를 하고싶다 하셨는데 어떻게 하실건가요?
      • 왜 제가 A를 하고싶었냐면~

 

+ 진행하면서 힘들었던 점

각 전형과 결과발표의 간격이 너무 길었고, 딜레이 되기도 하고, 정확한 결과 발표일을 알려주지 않아 매일 메일에 들어가 확인했다 ㅋㅋ

처음 예정되었던 OPEN CLASS는 기술 역량 인터뷰 합격자들이 대상이었는데, 최종 합격자들 대상으로 바뀐점도 아쉬웠다. 

 

뭐 어찌 되었든 모든 인터뷰를 경험해봤음에 감사하고 있습니다. 읽어주셔서 감사합니다. 

혹시 문제되는 내용이 있으면 수정하도록 하겠습니다. 

 


모집 사이트 참고

https://recruit.navercorp.com/micro/teamnaver/tech

 

2023 팀네이버 신입 공채

당신의 가능성이 팀네이버의 가능성으로!

recruit.navercorp.com

 

 

+ Recent posts