[준비하기] (8) 코딩테스트 - 2. 준비방법

productuidev·2022년 3월 18일
50

개발자 준비하기

목록 보기
17/19
post-thumbnail

인프런 비전공자를 위한 개발자 취업 올인원 가이드 강의 정리


(8) 취업하기 편 : 코딩테스트

2. 코딩 테스트 준비 방법

모든 개발자는 이렇게 준비해야한다는 건 없다.

  • 준비 방법은 목표 회사, 각자의 문제 해결 능력, 주어진 준비 기간에 따라 달라진다.
  • 단기간 준비 방법 vs 장기간 준비 방법

단기간에 코딩 테스트 준비하기

  • 가장 효율적인 방법 == 본인이 원하는 회사에서 채용할 때 사용하는
    코딩 테스트 플랫폼의 문제를 최대한 많이 풀기
  • 한국에서 가장 많이 활용되는 코딩 테스트 플랫폼 이용
  • 문제 풀이를 시도한 후에, 올바른 문제 풀이 방법을 검색해보고, 다시 풀어보기
  • 코드 작성 환경과 테스트 케이스 추가 방법 미리 익히기
  • 문제가 영어인 플랫폼의 경우, 자주 나오는 영어 표현들을 미리 익히기

알고리즘이나 자료구조를 1도 모른다면?

Big-O 표기법, 시간복잡도/공간복잡도 개념을 알아야 함.
이 개념을 몰라도 문제는 풀 수는 있지만,
다만 기술면접 때 이 개념에 대해 물어보는 경우가 있기 때문에
어느 정도 공부해두는 것을 추천

추천 자료

장기간에 코딩 테스트 준비하기

3개월 이상 준비한다면 자료구조 알고리즘부터 제대로 학습
(컴퓨터공학 전공자가 1학년 1학기 또는 2학기 때부터 배우는 과목)

1. 추천하는 자료구조/알고리즘 학습 순서

  1. 본인이 사용하는 개발 언어로 코드가 작성된 자료구조 책 학습
  1. 엔지니어 대한민국 유튜브 채널 영상 학습
  • 자료구조 코드 구현 부분을 혼자서 작성할 수 있도록 학습
  • 효과적인 방법 : 책을 읽고 이해하지 못한 부분을 영상으로 학습
  • 영상의 장점 : 기술면접 시 라이브코딩을 구현할 경우를 대비할 수 있음
  1. 영리한 프로그래밍을 위한 알고리즘 강좌 학습
  • Recursion(재귀함수) 부분
  1. LeetCode 문제 풀이 시작
  • 난이도별 문제 풀이와 다른 사람의 풀이과정을 볼 수 있음
  • Top 100 Liked Questions로 필터링해서 해당 문제푸는 것 추천
  • 자료구조 책 학습 > 자료구조 문제 풀이 > 어떻게 풀어갔는지 풀이과정 복습
  1. 그 외 (외국)
    2020년 최고의 자료구조/알고리즘 무료 강의 모음
    Cracking the Coding Interview

2. 코딩 테스트 스터디를 만들거나 참여해서 꾸준히 준비하기

3. 아직 준비가 되지 않았다는 생각이 들어도, 일단 지원해서 실제 코딩 테스트 경험하기

  • 떨어지더라도 어떤 채용 프로세스로 진행되는지 경험해 보는 것도 도움이 된다.
    (회사 입장에서는 손해지만 지원자 입장에서는 이득)

3. 10일 준비하고 코딩 테스트 통과한 노하우

당시 상황

  • 체대출신 개발자의 회고글 참고
  • 당시 기준 6개월 전에 자료구조 책 1권 학습 완료한 상태 (그룹 스터디)
  • 자료구조/알고리즘 강의나 유튜브 영상을 보지 않은 상태
  • 평생 풀어본 알고리즘 문제가 10문제 안팎인 상태
  • 서류전형 통과 및 7일 내로 Codility에서 테스트에 응시하라는 메일 수신
  • 인사팀에 연락하여 준비 기간을 더 줄 것을 요청 > 3일을 더 받아서 총 10일 간 준비

1. Codility 연습문제 풀이에 집중

  • Codility를 둘러보다가 연습문제(Lessons)를 제공한다는 사실 발견
  • 연습문제는 총 17개의 주제로 나뉘었고, 한 주제당 2~4개의 문제 제공
  • 10일 동안 연습문제만 풀어도 시간이 부족할 것으로 판단 > 연습문제 풀이에 집중하기로 결정
  • 각 주제별로 개념을 설명해주는 읽기 자료 제공. 읽기 자료를 먼저 읽고 풀이 시도

2. Youtube에서 풀이 영상 보기

  • 문제를 어떤 방식으로 해결해야 할지 전혀 감을 잡지 못한다. (이과적 사고를 요구하는 문제들)
  • 누군가 문제를 풀어나가는 과정을 눈으로 보면 감을 잡을 수 있을 거 같았다.
  • Youtube에 연습문제 제목 검색 > 풀이 영상들이 존재했다.
  • 유튜버들이 풀이 방법을 의외로 차근차근 잘 설명해줬다.
  • 누군가 문제를 풀어나가는 과정을 시각적으로 복 나니, 조금씩 감이 잡히기 시작

3. 시간복잡도 생각하며 문제 풀기

  • 시간복잡도에 따라 점수가 달라지거나, 정답 여부가 달라지는 문제 유형들이 있다.
  • 처음에는 모든 문제를 for문 중첩을 풀어나가려 했다. O(N^2)
  • for문을 중첩하는 것은 무조건 틀린 방법이라 여기고, 다양한 접근 방법 고민 > 다양한 자료구조 활용도 증가
  • 자료구조 책을 통해 기본적인 자료구조들을 학습해둔 것이 이 때 많은 도움이 되었다.
  • 최소한 Big O 표기법, 시간복잡도/공간복잡도, 기본적인 자료구조들은 미리 학습해두는 것이 필요하다.

4. 안 풀려도 최소 1시간은 고민하기

  • 고등학생 때 4점짜리 수학 문제들을 고민하며 풀던 것과 비슷한 느낌이었다.
  • 단 번에 해결책이 보이지는 않았지만, 고민하다보면 실마리가 보이는 문제들이었다.
  • 물론 1시간 동안 고민해도 해결하지 못하거나, 테스트 케이스를 통과하지 못하는 경우도 많았다.
  • 1시간 동안 여러 방법으로 문제 풀이를 시도하는 과정에서, 문제 해결 능력이 길러지는 느낌을 받았다.
  • 코딩 테스트에서 문제 해결의 핵심에 접근하기 위해서는, 각 단계의 갈림길에서 올바른 선택을 해야 한다.
  • 1시간 동안 고민하는 과정에서, 잘못된 길을 선택해보는 것.
  • 실제 문제에서 비슷한 갈림길을 마주했을 때, 옳은 길을 선택할 수 있는 감(혹은 실력)이 생긴다.

5. 출퇴근 길 지하철에서 나 홀로 타임어택

  • 아직 이전 회사에 다니던 상황이라 준비할 시간이 턱없이 부족했다.
  • 최대한 준비하기 위해, 출퇴근 길 지하철에서도 알고리즘 문제를 풀었다.
  • 출근 전날 미리 노란색 옥스퍼드 노트에 Codility 연습 문제 2개를 적어 둔다. (쉬운 난이도 위주)
  • 출근 길 지하철에서 30분, 퇴근 길 지하철에서 30분 동안 각각 1문제씩 풀었다.
  • 실제 코딩 테스트 처럼 시간 압박을 느끼며 문제 푸는 연습
  • 지하철은 출발 시간과 도착 시간이 정확하고, 도착하면 무조건 내려야 한다. (상당한 시간 압박)
  • 실제 코딩 테스트에서도, 시간이 촉박한 상황에서 이상하게 집중력이 좋았던 것이 이 연습 덕분이라 생각됨.

실제 코딩 테스트에서는 문제 수 대비 시간 안배를 잘 해야 함

6. 운도 따라줬다.

  • 상대 평가가 아니라 절대 평가였다. (상대 평가였다면, 면접 기회를 얻지 못했을 것)
  • 코딩 테스트를 본 직후에, 약 2시간 동안 문제를 복기해서 다시 풀어보면서 실수한 부분들을 기록해두었었다.
  • 기술 면접에서 내가 코딩 테스트에서 제출한 코드를 다시 보여주면서, 어디가 문제인지 찾아보라는 질문을 받았다.

프론트엔드 개발자의 사례?

강사는 백엔드 개발자라 강의를 듣다가 프론트엔드 개발자 지원자
코딩테스트 어떻게 준비하는거지? 알고리즘도 알아야 한다고?란 생각이 들어 개인적으로 몇 가지 서칭.


프로그래머스 레벨1부터 한번 알아봐야겠다.

profile
필요한 내용을 공부하고 저장합니다.

6개의 댓글

comment-user-thumbnail
2023년 12월 5일

안녕하세요!
노베이스 입문자인데요
현재는 0레벨부터 차근차근 풀어나가고 있는데
위 방법대로 따라간다면 몇 레벨부터 푸는게 좋을까요?
그리고 문제 풀때 시간제한을 미니멈 1시간말고 맥시멈 몇 시간정도까지 고민하는게 좋을지 추천부탁드릴게요 ㅠ_ㅠ!!

답글 달기
comment-user-thumbnail
2024년 7월 1일

깔끔한 정리 감사합니다 ㅠㅜ

답글 달기
comment-user-thumbnail
2024년 7월 3일

자세하게 정리되어 있어서 따라 공부할 수 있을 것 같아요!
좋은글 감사합니다^^

답글 달기
comment-user-thumbnail
2024년 11월 30일

Nice Blog!
web developer course in bangalore,
web designing in bangalore,
web designing course in bangalore

https://www.achieversit.com/web-dev-training-course-institute-in-bangalore

답글 달기