우아한테크코스 5기 백엔드 과정에 지원했고,
2022년 12월 17일에 시험을 마치고 왔습니다.
지난 기수 분들의 후기를 통해 많은 도움을 받아 합격할 수 있었기에,
이번 5기 시험에 대한 정보를 나누고자 글을 적어 봅니다.
적고자 하는 내용은,
1) 우아한테크코스 최종 코딩테스트를 준비한 방법 공유
2) 5기 시험에 대한 정보 공유 (난이도 등..)
입니다.
글을 읽으시기에 앞서,
우테코 최종 코딩테스트 유형에 대해 잘 모르신다면,
아래 링크를 통해 5기 최종 코테 리파지토리를 확인하실 수 있습니다.
GitHub - woowacourse-precourse/java-menu
Contribute to woowacourse-precourse/java-menu development by creating an account on GitHub.
github.com
지원자 상황 공유
최종 코딩테스트와 관련한 얘기에 앞서서,
저의 상황을 대략적으로 공유드리는 것이 객관적인 정보 획득에 도움이 될 것 같아
몇 자 적어봅니다.
- 비전공자(전자전기공학 전공 / 컴퓨터 관련 과목 교양 C언어, Matlab만 수강)
- 개발 공부한지 약 10개월 차에 지원 (파이썬, 노드로 프로젝트 경험 O)
- 자바 경험 X (위키독스 점프 투 자바 1 회독 한 경험만 있었고, 그마저도 까먹어 우테코 지원하면서 다시 1 회독했습니다.)
- 풀타임으로 우테코에 집중할 수 있는 상황 (주 2회 아르바이트, 주 1회 학교 등교 정도 외에는 우테코에 전부 집중했습니다.)
우아한테크코스 최종 코딩테스트를 준비한 방법
이번 5기는 지원자 전원이 프리코스(4주)에 참여할 수 있었고,
지원서 + 프리코스(4주)의 정성적 평가로 최종 테스트 대상자를 선발했습니다.
프리코스부터 최종 코딩테스트를 준비하며 제가 선택한 전략은
"할 수 있는 모든 것을 하기"였습니다.
최종 코딩테스트를 위해 준비한 것을 나열해 보겠습니다.
- 프리코스 기간 동안, 미션 해결하기 전에 시간 재서 풀어보기
- 프리코스 기간 동안 받았던 피어 리뷰 복습하기
- 5기 미션 동안 구상한 프로그램 설계 정리하기 -> 추후 문제 풀면서, 빠른 풀이에 적합한 설계 확정
- 5기 미션 시간 재서 다시 풀어보기
- 1~4기 프리코스 미션 시간 재서 풀어보기
- 2~4기 최종 코딩테스트 시간 재서 풀어보기
- 5기 프리코스 기간 동안 받은 공통 피드백 다시 읽어보고 공부하기
- 불편한 상황에서 문제 풀기(시끄러운 카페의 기울어진 책상에서 60%의 시간 재고 문제 풀기)
- (오픈북 시험이므로) 위의 모든 과정 동안, 시험장에서 사용할 참고 노트 작성
- 자바 문법 관련 정리
- 프로그램 설계 및 구현 방식 정리
- 시험 직전 및 제출까지의 체크리스트 정리
문제를 풀 때는,
1. 시간 재서 문제 풀고 채점하기 (테스트 코드 동작 확인, 모든 프로그래밍 요구사항 만족 체크)
2. 어려웠던 부분, 새롭게 사용한 문법 등 -> 적절한 참고 노트에 정리
3. 다른 사람들 코드(PR) 보면서 참고할 부분 정리 -> 다만,
요약하자면 아래와 같습니다.
1. 프리코스 기간에 공부한 내용을 복습하고,
2. 이번 + 지난 기수 모든 문제를 풀면서 참고 노트를 정리하고,
3. 여러 돌발 상황에 대해 대비하고,
4. 시험장에서 해야 할 일들(세팅, 설계, 구현, 검사)을 정리하고 이미지 트레이닝하기
프리코스가 끝나고 1차 합격자(최종 코딩테스트 대상자) 발표가 2주,
그리고 발표부터 시험까지가 3일밖에 주어지지 않았습니다.
3일이라는 시간은 (적어도 저에겐) 최종 코딩테스트를 준비하기에 턱없이 부족한 시간이라고 생각했고,
나름의 객관적인 판단(많은 사람들의 미션 확인, 나의 지원서에 대한 지인들의 평가 등)을 통해
1차는 합격할 것이라는 확신이 있었기 때문에,
1차 발표 전부터 코딩테스트를 계속 준비해 왔습니다.
그 덕에 여유를 가지고 계획한 모든 것을 잘 준비할 수 있었고,
다행히 5기 최종 코딩테스트에서 테스트 케이스 통과,
그리고 (개인적 확인으로는) 모든 요구사항을 만족시킬 수 있었습니다.
제가 정리한 노트, 기수 별 문제 링크 정리한 것 등
자료들을 전부 공유드리고 싶지만,
저의 공유가 도움을 주는 것 이외에
전형 자체를 너무 고이게 만들고, 그것이 결국 지원자분들의 피로를 가중시키는 일이 될까 봐
고민 끝에 자료 공유는 하지 않기로 했습니다.
다만 요구사항에 "테스트 코드가 통과하지 않으면 0점으로 간주한다."는 내용이 있다면
테스트 코드 통과를 최우선 목표로 하시는 것이 좋지 않을까 싶다는 생각을 전달드립니다.
그리고 제가 준비한 내용들이 누군가에겐 무난하게 보일 수도,
누군가에게는 너무 과하다고 생각이 들 수도 있을 것 같습니다.
여러 사람의 준비 과정을 보고 들은 것으로는,
제가 평균보다는 확실히 많이 투자한 것으로 이해해주셔도 될 것 같습니다.
무엇보다, 구글링을 통해 접할 수 있는 많은 지원자들의 후기를 통해
종합적으로 판단하시는 것을 추천드립니다.
5기 시험에 대한 정보 공유
우테코 5기 최종 코딩테스트 문제에 대해 간단하게 생각을 적어보고자 합니다.
아직 문제를 풀어보시기 전이라면, 문제를 풀어보고 읽어보시기를 추천드립니다.
(이건 스포를 싫어하는 제 성향이니 무시하셔도 좋습니다.)
난이도
무난하다 못해 쉽게 느껴지는 난이도였다고 생각합니다.
물론 시험 자체, 문제 자체가 쉬운 것은 아니고
제가 똑똑해서 쉬웠다는 것도 절대 아닙니다.
이전 기수의 모든 문제를 풀어본 경험 + 다른 지원자들의 얘기를 미루어볼 때 그렇습니다.
3기 최종 코딩테스트였던 지하철 경로 문제는 개인적으로 쉽지 않았고,
4기 최종 코딩테스트였던 페어 매칭 문제는 개인적으로 정말 어렵다고 느꼈었는데요,
그에 비해 이번 5기 점심 메뉴 추천은, 설계부터 구현까지 비교적 직관적으로 진행할 수 있었습니다.
풀이
개인적으로 Enum을 잘 활용한 것이 이번 시험을 무난하게 마칠 수 있었던 결정적 이유라고 생각합니다.
관련하여, 저의 풀이 PR 링크를 공유드립니다.
[점심 메뉴 추천] 이우진 미션 제출합니다. by horsehair · Pull Request #152 · woowacourse-precourse/java-menu
프로그램 설명 입력된 코치들에게 점심 메뉴를 추천해주는 프로그램 기능 구현 목록 UI InputView 코치 이름 목록 입력 (예외 처리) 시작과 끝에 있는 "," 제거 요청 못 먹는 메뉴 목록 입력 콘솔에
github.com
아래는 Enum을 사용한 코드입니다.
public enum Category {
JAPANESE(1, "일식", Arrays.asList("규동", "우동", "미소시루", "스시", "가츠동", "오니기리", "하이라이스", "라멘", "오코노미야끼")),
KOREAN(2, "한식", Arrays.asList("김밥", "김치찌개", "쌈밥", "된장찌개", "비빔밥", "칼국수", "불고기", "떡볶이", "제육볶음")),
CHINESE(3, "중식", Arrays.asList("깐풍기", "볶음면", "동파육", "짜장면", "짬뽕", "마파두부", "탕수육", "토마토 달걀볶음", "고추잡채")),
ASIAN(4, "아시안", Arrays.asList("팟타이", "카오 팟", "나시고렝", "파인애플 볶음밥", "쌀국수", "똠얌꿍", "반미", "월남쌈", "분짜")),
WESTERN(5, "양식", Arrays.asList("라자냐", "그라탱", "뇨끼", "끼슈", "프렌치 토스트", "바게트", "스파게티", "피자", "파니니"));
private final int number;
private final String name;
private final List<String> menus;
Category(int number, String name, List<String> menus) {
this.number = number;
this.name = name;
this.menus = menus;
}
public static void checkMenuExist(String menu) {
boolean haveMenu = false;
for (Category category : Category.values()) {
if (category.haveMenu(menu)) {
haveMenu = true;
break;
}
}
if (!haveMenu) {
throw new IllegalArgumentException("[ERROR] 존재하지 않는 메뉴입니다.");
}
}
private boolean haveMenu(String menu) {
return menus.contains(menu);
}
public static Category getRandomCategory() {
int randomNumber = Randoms.pickNumberInRange(START_NUMBER_OF_CATEGORY, COUNT_OF_CATEGORIES);
return Arrays.stream(Category.values())
.filter(category -> category.isNumberOf(randomNumber))
.findAny()
.orElseThrow(() -> new IllegalArgumentException("[ERROR] 존재하지 않는 번호의 카테고리입니다."));
}
public String getRandomMenu() {
return Randoms.shuffle(menus).get(0);
}
// 이하 메서드 생략
}
시험 진행 관련 정보
1) 실제 교육 장소에서 시험을 치렀습니다.
아마 백엔드 과정은 선릉 캠퍼스에서 시험을 응시하신 것 같고,
다른 과정은 정확히는 모르겠으나 잠실 캠퍼스에서 응시하시지 않았나 싶습니다.
2) 넓지 않은 책상에서 시험을 응시했습니다.
노트북, 마우스와 패드, 노트와 펜, 충전기
이 정도를 사용하고자 하면 책상이 가득 찰 정도의 너비였습니다.
아무래도 많은 지원자가 교육장에서 한꺼번에 시험에 응시하니 어쩔 수 없지 않나 싶습니다.
좁은 자리에서 연습해보시는 것도 좋을 것 같습니다.
3) 이어폰, 노트북 거치대, 키보드는 사용 가능했습니다.
다만 기수 별로 어떻게 바뀔지는 모르겠습니다.
저는 블루투스 이어폰을 착용하고, 노래는 틀지 않은 채 노이즈 캔슬링 기능만 이용했습니다.
시끄러운 카페에서 연습하다, 이어폰에 노캔을 켜고 작업하니 세상 집중이 잘 되었습니다.
4) 과자, 물, 귤, 마이쮸 등 제공
당 보충용 초콜릿을 사갔는데, 간식을 엄청나게 제공해 주셨습니다.
진짜 최고최고..
그 외
영상으로만 뵈었던 코치님들을 실물로 뵈니 좋았습니다 ㅋ ㅋ
교육장에서 사진, 셀피 찍어도 되냐고 여쭤보니
당연히 된다고 하셨습니다! 일부를 공유합니다.
크리스마스 전 주라 테헤란로의 크리스마스 야경을 내려다볼 수 있었습니다.
불 꺼진 페어룸..
최종 코딩테스트가 쉽지는 않지만,
프리코스에 열심히 참여하고
코딩테스트 준비에 많은 시간(진짜 많이..ㅋㅋ) 할애하면
자바를 잘 모르던 비전공자도 만족할 만한 결과를 얻을 수 있다고 말씀드리고 싶습니다.
파이팅 하세요 🔥🤞
'우아한테크코스 5기 백엔드' 카테고리의 다른 글
프리코스 4주차 회고 - 곧은 철학의 개발자가 되리라 다짐하며.. (우아한테크코스 5기 백엔드 프리코스) (2) | 2022.11.23 |
---|---|
프리코스 3주차 회고 - 돌아보는 것의 중요성 (우아한테크코스 5기 백엔드 프리코스) (1) | 2022.11.17 |
프리코스 2주차 회고 - 나만의 페이스를 유지하자 (우아한테크코스 5기 백엔드 프리코스) (2) | 2022.11.11 |
프리코스 1주차 회고 - 더도 말고 덜도 말고 1주차만 같아라~ (우아한테크코스 5기 백엔드 프리코스) (2) | 2022.10.31 |