[특강] 코딩 테스트 면접
코딩테스트 왜 하는가?
최소한의 문제 해결 능력을 확인(검증)하기 위하여
문제의 분석과 해결 방법 착안 -> 이것을 코드로 구현
코드를 잘 짰는지는 체크하지 않는다.
코딩 테스트(하한선)와 코딩 인터뷰(실제로 일을 시켰을 때 잘 할까?) 차이:
코딩 테스트: 코딩 문제를 풀어보게 함, 검증하려는 역량에 따라 문제 종류와 난이도가 달라짐
코딩 인터뷰: 직무에 필요한 배경지식을 충분히 갖추고 있는지 점검, 생각한 바를 논리적으로 올바르게 전달할 수 있는지 점검, whiteboard test, live coding 방법 등 활용
코딩 문제(대강의) 종류:
- implementation: 제시된 흐름에 따라 실행하는 코드를 만들도록 요구 (난이도: 하)
- algorithm comprehension: 문제의 효과적(정확하게 답에 접근할 수 있는가)/효율적(얼마나 짧은 시간 내에 잘 풀어내는가) 해법을 찾아내도록 요구
- competency test: 특정한 (고난도) 자료구조와 알고리즘을 착안하여 제한시간 내에 문제의 답을 도출하도록 요구, 대회에서 자주 등장
- 기타: 특정한 언어 구문(예: SQL) 을 활용할 수 있는지를 테스트
코딩 테스트에 대한 대비
- 구현 능력 갖추기 (적어도 하나의 프로그래밍 언어)
- 기본적인 자료구조 이해 (Array, Stack/Queue, Hash/Map, Tree, Graph, ...)
- 기초 알고리즘 및 시간/공간 복잡도에 대한 이해
- 현실 문제를 해결하기 위한 알고리즘 적용 해법 착안 사고훈련
- 제한 시간 내에 오류 없이 코드 작성 및 디버깅할 수 있는 능력 훈련 (악기 연주 등 연습과 유사)
자료구조(data structure)
- 자료구조란 무엇인가요? : 정보의 표현 방식과 여기에 정의되는 연산들의 집합
- 자료구조는 왜 알아야 하나요? : 문제의 해결에 적용할 수 있는 도구를 갖추어야 하므로
- 자료구조와 알고리즘의 관계는 무엇인가요? : 같은 문제의 해결에 대해서도 어떤 자료구조를 택하는지에 따라 적용할 알고리즘이 달라짐
알고리즘 공부
- 일일이 외워야 하는 것이 아님
- 그러나 복잡한 문제에 대한 (게다가 현실의 문제를 해결하기 위해 빈번히 적용될 수 있는) 해결법을 바닥부터 고안해 내기란 쉽지 않음
- 알고리즘 하나하나의 절차와 성질을 암기하는 것이 아니라 그것을 착안하는 생각의 흐름을 따라가는 훈련을 하는 것(수학 공부 하는 것과 비슷)
요약 : 문제 -> 추상화 -> 해법 착안(problem solving) -> 코드 구현(implementation)
반응형