메뉴 건너뛰기


커리어 세부메뉴

합격자소서

네이버 2021년 상반기 신입 앱개발자합격자소서

합격자 정보

  • 서울4년
  • 전자정보공학과
  • 학점 3.9/4.5
  • 토스 Level6
  • 자격증 2개
  • 인턴 1회
  • 수상 2회
  • 동아리 2회
  • 42,541읽음

전문가 자소서 총평

3

이 회사의 경우, 특별히 어려운 항목이 없다는 점에서 지원자의 내용도 크게 문제가 되는 부분이 없습니다. 다만, 첫 항목에서 이수 과목을 제시하고 해당 과목을 선택한 이유를 쓰라고 했는데, 이 부분을 보지 않고 작성한 것 같습니다. 두 번째 항목은 지원분야와 연관된 개발분야의 이야기 소재로 질문의 요구사항을 잘 반영하여 작성한 점이 좋습니다.

합격자소서 질문 및 내용

답변
프로그래밍 언어/A0/1학년 때 처음으로 C언어 수업을 듣고 게임을 제작하는 프로젝트를 진행하였습니다. 게임을 제작하는 것은 어려웠지만 하나씩 기능을 완성하며 얻는 성취감이 프로그래밍에 흥미를 느끼게 만들었습니다.

객체지향언어/B0/해당 수업을 들었을 때에는 C 언어를 완벽하게 이해하지 못한 상태였기 때문에 객체지향언어가 생소하게 느껴졌습니다. 하지만 4학년 때 졸업 프로젝트로 Java를 사용한 수화 번역기를 개발하면서 객체지향 프로그래밍에 매력을 느끼게 되었고, Java 기반 개발 방법론을 찾아보던 중 웹 개발에 대해 관심을 갖게 되었습니다.

데이터베이스/A0/개체, 관계, 속성의 개념에 대해 이해 할 수 있게된 수업이었습니다. 이해한 개념들을 바탕으로 개체들 사이의 일대일, 다대일, 다대다 관계를 파악하고 ERD를 그리는 방법을 터득할 수 있었습니다. 또한, SQL을 사용하여 DB 데이터를 CRUD 하며, INNER JOIN, LEFT/RIGHT OUTER JOIN에 대해 이해하고 Query를 작성할 수 있게 되었습니다.

자료구조/B+/배열 스택 큐 트리 및 그래프 등에 대한 다양한 자료구조의 설계 및 구현 방식에 대해 배울 수 있었습니다. 이러한 자료구조가 어떠한 상황에 적용될 수 있는지 알고리즘의 예도 학습하며 기초를 탄탄히 갖출 수 있는 수업이었습니다.

알고리즘 분석/A+/해당 수업을 통해 알고리즘 표기법, 정렬, 탐색, 그래프 등을 이해할 수 있었다. 다양한 자료구조를 사용하여 상황에 따라 문제를 해결하기 위한 효율적인 알고리즘을 선택하는 방법을 학습하였습니다.
아쉬운점 1

글자수 7931,304Byte

아쉬운점 1 제시한 과목은 문제가 없습니다. 하지만 질문에서 해당 과목을 택한 이유를 각각 쓰라고 했는데, 그에 대한 언급이 없습니다. 질문을 제대로 읽고 성실하게 답변을 해야 합니다

답변
"10초에서 3초로 단축"

빅데이터를 사용하여 사용자 취향에 기반한 레시피 추천 플랫폼을 제작한 경험이 있습니다. 저는 Django에서 컨텐츠 기반 필터링을 사용하여 연관레시피를 추천해주는 기능 구현을 담당하였습니다. Python을 사용하여 크롤링을 통해 5000여 개의 레시피 데이터를 가져왔으며, 7만여 개의 리뷰 데이터를 가공하였습니다.

컨텐츠 기반 필터링을 사용하여 비슷한 재료로 만들 수 있는 레시피를 추천하는 기능을 구현하는 데에 성공하였지만, 문제가 발생하였습니다. 해당 데이터를 받아오는데 10초가량 걸리면서 서비스를 이용하는 데 불편함이 있다는 것이었습니다. 원인을 파악하기 위해 코드를 한줄씩 실행시키며 테스트를 진행하였습니다. 그 결과, 데이터를 받아오는데 오래 걸리는 원인은 query에 있었습니다. 리뷰 데이터가 7만여개 다보니 성능을 저하시키는 주 원인이었고 , 5개의 테이블이 한꺼번에 조인되면서 query의 성능이 급격히 저하 되었습니다. 따라서 리뷰 테이블과 레시피-해시태그-재료-재료이름 4개의 테이블을 조인하여 따로 불러왔으며 필요한 컬럼으로만 구성하였습니다. 데이터를 받아오는 데에 10초가 걸리던 API가 3초로 줄어들게 되었습니다. 시간은 단축되었지만, 초반 DB 설계 시 반복적인 조인을 줄이기 위해 반정규화를 진행하였다면 시간이 좀 더 절약됐을 것 같다는 아쉬움이 남았습니다.

결과적으로 프로젝트는 성공적으로 마무리되었으며, 시간이 걸리더라도 꼼꼼한 설계의 중요성에 대해 깨달았습니다.좋은점 1


"엔티티와 DTO를 구분해야 하는 이유"

끊임없는 도전정신과 끈기로 여행 플랫폼 제작 프로젝트의 백엔드 개발을 맡아 SSAFY 공통프로젝트 대회에서 우수상 수상에 기여한 경험이 있습니다. SpringBoot를 기반으로 한 백엔드를 맡게 되었고, 한 번도 배워보지 않은 JPA를 적용해보기로 하였습니다. 물론 MyBatis를 쓰는 것이 익숙하였지만 JPA가 성능, 생산성, 유지보수 면에서 우수하다고 알려져 있어 JPA를 적용해 새로운 기술을 익히고자 하였습니다.

하지만 JPA가 익숙하지 않아 개발 도중 문제가 발생하였습니다. 엔티티에 다른 테이블들을 매핑시키고 나니 무한 루프를 돌아 에러가 발생하였습니다. 또한, 응답에서는 불필요한 데이터까지 제공되어 응답 데이터의 양이 많아지는 현상이 발생하였습니다. 이러한 문제점은 엔티티와 DTO를 따로 생성해 주지 않아서 발생하는 것임을 뒤늦게 알게 되었습니다. DTO는 Request/ Response에서 사용하는 View를 위한 클래스이고, 자주 변경이 필요하므로 따로 분리해서 생성하는 것이 적합하다는 것을 깨달았습니다. 이를 해결하기 위해 DTO를 따로 생성해 주었고, BeanUtils.copyProperties 메소드를 사용하여 엔티티에서 DTO로 변환해주는 작업을 수행하였습니다. 모두 수정하는 데까지 시간이 오래 걸렸지만 DTO의 필요성과 DTO가 설계서의 역할을 해준다는 것을 깨달았습니다.좋은점 2


새로운 기술을 습득하려는 도전정신과 문제를 해결하려는 끈기 덕분에 성공적으로 프로젝트를 마치고 우수상을 수상할 수 있었습니다.

글자수 1,5382,558Byte

좋은점 1 지원직무와 연관이 있는 개발 경험을 제시한 점이 좋고, 질문의 요구 사항을 정확하게 반영한 점도 좋습니다. 당시 경험을 구체적으로 설명하고 있어 이야기가 신뢰가 간다는 점도 좋습니다.

좋은점 2 이 부분 역시, 지원직무와 연관이 있는 개발 경험을 제시한 점이 좋고, 질문의 요구 사항을 정확하게 반영한 점도 좋습니다. 당시 경험을 구체적으로 설명하고 있어 이야기가 신뢰가 간다는 점도 좋습니다.