- 알고리즘? 코딩테스트?
- 코딩테스트 종류
- 코딩테스트 준비하기
- 데이터 구조와 알고리즘
- 어떤 문제를 해결 하기 위해 정해진 일련의 절차나 행동
- 문제란 Input을 넣었을 때, 원하는 Output이 나오도록 하는것
- 흐름도..
- 기업에서 지원자를 대상으로 코딩을 통한 문제 해결 능력을 테스트 하는 것
- 평가항목
- 문제 의도를 정확히 파악하고, 적절한 해결 방법을 적용할 수 있는가?
- 해결 방법을 프로그래밍을 통해 능숙하게 구현할 수 있는가?
- 코딩테스트와 현업 능력의 연관
-
코딩테스트
문제 파악 > 해결 방법 구상 > 정답 구현 -
현업
비지니스 문제 발생 > 해결 방법 구상 > 구현 및 수정 -
하지만 코딩테스트는 SW 개발과는 달라
완벽하게 현업 능력을 평가할 수는 없지만
신입의 실력을 측정하는데 좋은 지표가 된다!
-
- 온라인
- 프로그래머스 등..
- 사전에 연습장과 필기도구 준비
- 테스트 케이스 이외의 엣지(edge) 케이스도 확인
- 인터넷, IDE, 알고리즘 노트 적극 활용
- 오프라인
- 개발형 코딩테스트(Rest API, json)
- 화이트보드 손코딩
- 지원자가 어떤 방식으로 문제를 해결하는지 논리, 과정, 커뮤니케이션 스킬을 평가
- 면접관과 협업하는 느낌
- 현실 업무라고 생각하고 모든 지식과 자원 총동원
- 문제에서 적절하게 사용될 수 있는 기술 선택
- 구글 기술면접(Technical Interview) 재연
- 문제 해결법, 접근방법 말로 설명
- 연산 횟수, 입력 형식 등에 대해 설명
- 손코딩
- 테스트 케이스
- Optimizing
- How to: Work at Google — Example Coding/Engineering Interview
- 기업별
- 많이 풀기
- 유형별로 연습
- 실전대비는 모의고사처럼 시간 제한을 두고 여러 유형
- 한 문제에 오랜 시간 매달리지 말고, 답을 보자
이후에는 답을 보지않고 반드시 한번 더 풀어서 내것으로 만들기
- 변수명 대충 짓지 않기
- 내장 함수, 라이브러리 적극 활용
- 반복되는 코드는 함수화를 통해 가독성 있게 작성
- 면접을 위해 풀이를 남에게 설명하는 연습 반드시 필요
- Array(배열)
- Linked List(연결리스트) - list
- Hash(해시)
- Stack(스택)
- Queue(큐)
- Priority Queue(우선순위 큐)
- Heap(힙)
- Tree(트리)
- Graph(그래프)
- Dictionary(딕셔너리)
-
기본
- 완전탐색
- 재귀
- 시뮬레이션
- 그리디
-
심화
- DFS
- BFS
- 백트래킹
- 이진탐색
- DP
- 다익스트라
- 크루스칼
- 프림
-
주요 문제유형
- 완전 탐색, 구현, 그리디, 시뮬레이션,
탐색, 다이나믹 프로그래밍, 자료구조
- 완전 탐색, 구현, 그리디, 시뮬레이션,