• [코딩테스트] java 과제 제출 유형
    개발공부 2022. 3. 13. 00:59
    반응형

    코딩테스트는 크게 세 가지 방법이 있습니다.

    1. 코딩 과제 제출

    2. 알고리즘 사이트 코딩 테스트

    3. 면접에서 손코딩 및  화이트보드 테스트

    이번 글은 처음 코딩 과제를 제출하면서 했던 생각들을 준비해봤습니다.:)

    -------------------------


     이력서와 포트폴리오를 제출하고 나면 위와 같이 과제 제출 기한과 제출 방법, 과제 내용 등을 알려줍니다.

     언어나 자료구조의 선택은 자율이었기 때문에 제일 자신있는 java로 진행했습니다.

    1) 과제 제출에 대한 생각
     먼저 제가 작성할 코드를 전달할 방법을 생각해 보았습니다. 아무리 구현을 잘 했더라도 전달 후 보는 사람이 불편하다면 좋은 인상을 주긴 힘들 것이기 때문입니다. 일단 코딩테스트를 확인하는 분도 회사에서 업무를 하는 분이고, 코딩 과제를 확인까지 해야 하는 상황이니까요!

     Java SpringBoot 개발자로 지원했지만, SpringBoot환경을 구축하고 Maven 세팅하고 View를 개발하고 jar로 묶는 과정과 과제를 확인하는 분이 tomcat과 nginx를 실행해야 제 소스의 동작을 확인할 수 있다는 단점이 있었습니다.

     그렇기 때문에 javaproject를 Running Jar로 Export하고 실행하는 방법, 제가 사용하는 Eclipse IDE에 코딩 과제를 Import하는 방법의 가이드를 작성해서 전달 드렸습니다. 이유는 혹시라도 IntelliJ를 하시는 분이라면 Eclipse에 관한 정보를 찾아보셔야 할것 같았습니다. 
     
    2) 과제 구현에 대한 생각
     ※ IDE를 시작하자마자 Class 및 workspace의 인코딩을 UTF-8로 변경해줍니다. ( 맨날 회사에서 인코딩 UTF-8로 해야된다고 잔소리를 그렇게 해놓고 제가 과제 제출 할 때는 인코딩을 안 바꾸고 제출했습니다. 면접 과정에서 부끄....러움을 속으로 생각했습니다. )

     코딩 과제로 나의 스타일과 기술을 보여줄 수 있어야 한다고 생각했습니다. 제가 보여주고 싶었었던 것들 목록은 다음과 같습니다.

     - main함수를 통한 DI 직접적인 구현
     - 인터페이스의 분리
     - 확장성을 고려한 설계
     - 디자인 패턴
     - Clean Code - 변수는 명사, 함수는 동사, 의미 단위의 띄어쓰기, 함수의 추상화 수준 맞춤

     - lint 또는 코딩 컨벤션 맞추기
     - jUnit 테스트 작성 및 예외 테스트
     - Exception 구현
     - common ( 공통 클래스 패키지 )

    3) 과제 제출 방법


     Eclipse 프로젝트 폴더에서 .metadata와 target함수를 제거하고 압축합니다. .metadata는 이클립스 세팅 파일이 있는 폴더고 target은 class파일이 존재하는 폴더기 때문에 전송 시에 필요하지 않습니다.

     다음으로 Gmail을 통해 제출하려고 시도했지만 Jar 파일은 Gmail의 정책상 전송하지 못합니다. 그래서 Google Drive에 올리고 올린 파일의 주소를 전달 드렸습니다. 그리고 인사담당자분을 통해 개발 리더님에게 과제가 전달되므로 "링크가 있는 모든 사용자가 볼 수 있음"으로 공유를 설정했습니다.

     처음 해보는 것이라 많이 불안했습니다.

     

    첫 번째로 공유 설정이 잘못되어 제대로 파일을 open하지 못할경우 제가 보낸 소스는 평가조차 받아보지 못할 수도 있었습니다.

     

    두 번째로 제출 기한이 정해져 있는데 부정하게 Drive의 파일을 나중에 바꿔치기 한다든가 하는 등의 고려를 할 수도 있다고 판단했습니다.

     

    (사실 첫 번째와 두 번째 모두 Drive의 세부정보를 확인하면 되는 문제들이었습니다. 처음에는 몰랐는데 이제 확인해보니 이런 게 있었네요.;;;;)

    -------------------------

     

    - 결론
       첫 번째) 코딩 과제를 보고 평가하는 사람을 고려한다.
       두 번째) 한줄 한줄 내가 작성한 코드의 의미를 생각해본다.
       세 번째) 면접 과정에서 진행 될 더 나은 코드를 위해 개선해야 할 부분을 설명할 준비를 한다.
       네 번째) 문서의 인코딩이 UTF-8 인지 확인한다!
       다섯 번째) Jar파일을 전송할 방법을 생각한다.


    하여튼...합격해서 잘 다니고 있습니다.

    반응형

    댓글

Designed by Tistory.