프로그래밍-학습기록/코딩테스트

우아한 테크코스 코딩테스트 + 프리코스 회고

leesche 2020. 12. 21. 13:54

일정

  • 서류 지원 ~ Nov 4, 2020
  • 1차 코딩 테스트 Nov 7, 2020
  • 프리코스 Nov 25, 2020 → Dec 15, 2020
  • 최종 코딩 테스트 Dec 19, 2020

서류 지원

  • 질문들이 하나 같이 흥미로웠고 과거를 돌아보고 앞으로 어떻게 살지 생각하는 데 도움이 됐다.
  • 1년 이상 꾸준히 한 것에 블로그와 일기를 적었다. 내년 3월이 되면 프로그래밍도 함께 말할 수 있겠다.
  • 증빙을 위한 포트폴리오 노션 페이지를 처음 만들었다.

1차 코딩 테스트

  • 7문제 중 5문제를 풀었다.
  • 못 푼 두 문제는 그래프 문제 같아 보였다. 사실, 문제를 정확히 이해하지도 못했기 때문에 어떤 자료구조와 알고리즘을 써야하는지 알지 못했다.

프리코스

  • 가장 많이 배우고 성장했던 시기이다. 3주에 걸쳐 숫자 야구, 자동차 경주, 지하철 노선 프로그램을 Java 언어로 구현 해야 했다.
  • 빈 프로젝트가 업로드되어 있는 깃 레포지토리를 fork - clone 해 코드를 작성한 다음 Pull request를 보내는 방식이었다. 깃 레포지토리의 README 파일에 과제의 요구사항이 상세히 적혀 있었다.
  • 지금 와서 생각해보니, 가장 중요하다고 생각한 것은 객체 지향 설계인데 정작 요구사항에는 그것이 적혀 있지 않았다. 그것이 너무 당연하거나 아니면 다른 식으로도 설계할 수 있으니 제한을 두지 않으려고 한 것일까?
  • Java의 고급(?) 문법과 객체 지향 설계 개념을 배웠다. 객체 지향 설계 개념은 <객체 지향의 사실과 오해> 책, Java 문법은 <Java의 정석> 책을 주로 읽으며 배웠다.
  • Java의 코딩 컨벤션을 배웠다. 컨벤션은 코드를 나 뿐만 아니라 다른 사람들이 읽기 쉽게 한다. 읽기 쉬우면 수정하고 확장하기 좋다. 수정하고 확장하기 좋으면 그 코드는 발전할 수 있는 코드이다. 그것을 내 프로젝트에 적용하려 노력했다.
  • README의 중요성을 배웠다. README에 구현할 기능 목록을 적고 그 목록에 기반하여 커밋을 단위대로 하길 권장했다. 나중에 기능을 수정하고 확장할 때 분명히 유용할 것 같은 프로그래밍 방식이었다.

최종 코딩 테스트

  • 지하철 노선이 있고, 출발역과 도착역을 입력하면 최적 경로가 출력되도록 5시간 동안 구현하는 시험이었다. 이른바 3주차 미션의 수정, 확장이었다.
  • 다익스트라 최단 경로 알고리즘 라이브러리를 사용하도록 권장했다.
  • ZOOM으로 영상통화를 하며 시험을 쳤다. 간단한 신분 증명을 했다. 모니터와 본인이 나오도록 카메라 조정을 해야 했다.
  • 최대한 README에 적었던 구현할 기능 목록 단위 대로 커밋하려 노력했다. 그리고 README에 전체적인 프로그램 흐름과 고민한 부분을 적었다.
  • 프로그램 전체를 구현하지 못했다. 주요 기능은 구현했지만 주요 기능 중에서도 빠진 것이 있었고 모든 예외 처리를 하지 못했다.