파이썬 알고리즘 인터뷰
📚📚📚👈🏻 책 구매 링크
🤴🏻👸🏻👵🏻👴🏻 👈🏻 소스코드 깃허브
😥😱🤪👈🏻 책 정오표
🏓📡📺 👈🏻 유투브 채널
코딩인터뷰란 기술문제 주임의 개발 인터뷰이다. MS사가 처음 개척한 것으로 알려져 있다. 빌 게이츠는 퍼즐에 상당히 몰두했었고, 퍼즐관련 문제들이 출제되기 시작해, 차츰 논리, 프로그래밍에 관련된 질문들로확대되었다. 이후, 페이스북, 구글 등이 적극 도입하면서 꾸준히 발전해왔다.
일반적으로 코딩 인터뷰란 오프라인 면접장에서 화이트보드를 이용해 후보자의 기술 지식, 코딩 능력, 문제 해결 역량,창의성 등을 테스트하는 것이다.
최근에는 코딩 인터뷰보다 코딩 테스트라는 용어를 많이 쓰는 편이다. 여러형태로 구분하기도 하는데,
명칭 | 온라인/오프라인 | 면접관참석 | 도구 |
온사이트(오프라인) 코딩 인터뷰 | 오프라인 | O | 관계 없음 |
화이트보드 코딩 인터뷰 | 오프라인 | O | 화이트보드 |
온라인 코딩 인터뷰 | 온라인 | O | 메모장 |
온라인 코딩 테스트 | 온라인 | X | 코딩 테스트 플랫폼 |
국내에서 주로 사용하는 코딩 테스트 플랫폼으로는 크게 4개 서비스 이다.
- 해커랭크
- 코딜리티
- 리모트인터뷰
- 프로그래머스
백준과 같은 사이트트 플랫폼이 아닌 개인용 문제 풀이 서비스에 가깝다. 리트코드 또한 개인용 문제 풀이 서비스이다.
기업의 코딩 테스트 합격 기준은 각각 다르다.
어떤 기업은 문제가 틀려도 면접 기회를 주는 반면, 카카오의 경우는 합격 기준이 상당히 높은 편이다.
테스트케이스 하나만 틀려도 진행이 어렵다.
게다가 입력값을 보여주지 않기 때문에 스스로 코드 디버깅을 통해 문제를 풀어 낼 수 있는 역량이 필요하다.
면접관은 면접자가 제출한 코드를 꼼꼼히 살핀다.
동작이 된다고 풀이를 아무렇게나 작성하거나 다른 사람이 풀이 흔적이 있다면 집중 질문 대상이 되므로 명심해야한다.
무엇보다 이와 같은 각 플랫폼의 특징을 파악하는게 중요하다.
네이버는 팀 단위로 별도 시행하며 카카오처럼 일관된 합격 기준을 갖고 있지않다. 재량껏 합불 여부를 결정한다. 라인은 네이버와 비슷하지만, 최근 프로그래머스 플랫폼을 이용하고 있다.
카카오는 프로그래머스/해커랭크를 사용하며, 공채, 경력 등 다양한 채용에 따라 활용한다.삼성전자는 자체 플랫폼을 사용하고 있다. (온라인이 불가능, 화이트보드 코딩 테스트로 보는게 맞다. 심지어 파이썬 사용불가, 내부망 사용)
연습장/필기도구
- (문제를 많이 풀다보면 당연한 것이다. 먼저 손으로 코딩을 해보고 논리를 만든후 구현해보는 것이 당연하다...)
사용 프래그래밍 언어 선택
- (파이썬을 주로 활용하지만, 안드로이드 개발자에게는 코틀린, 자바를 무시하기는 어렵다. )- (현재는 거의 100 % 파이썬을 쓰고 있지만, 가끔 기업에서 코틀린 , 자바만을 요구하기도 해서 개념정리는 필요하다.)
자신만의 코드 스니펫 준비한다.
코딩 테스트 시 자주 쓰이는 동작들에 대해서 코드 스니펫 (Code Snippet)을 미리 만들어 두면 좋다.
ex) 연결 리스트를 뒤집거나 삭제하는 등의 작업을 미리 만들어 둔다. 헷갈리는 부분
깃허브를 활용해서 사용하는 것이 가장 좋다. 인터넷에 검색해서 가져오는 것보다, 참고만하고 자신이 직접 만들어서
작동원리를 파악하고 저장해두는 것이 좋다.
타임아웃 발생 / 예외 처리
(알고리즘 문제를 풀다보면 항상 걸리는 부분이다. 절대 간과해서는 안되는 부분이다. 예외를 먼저 생각하고 문제에서 주어진 조건을 가볍게 보지말고 예외가 어떻게 될지 시간복잡도를 생각하는 습관이 필요하다. ... 하지만 생각처럼 안되는게 함정...)
시간 제한 과 잘못 접근한 것을 인지한 경우
문제를 풀다보면 잘못 접근하고 있다는 싸한 느낌이 든다. 그렇다고 방향을 틀기에는 시간이 부족한 현상이 비일비재하다. 이러한 경우는 별 방법이 없다. 다음 문제로 넘어가거나, 훈련이 필요하다. 또한 풀 수 있는데, 시간이 부족하다면 시험이 종료 되어도 이메일로 풀이를 보내는 노력을 하는게 좋다.
REPL 도구로 코드를 검증하자
REPL 은 Read Evaluate Print Loop 의 약어로 사용자 입력에 대한 실행 결과를 바로 되돌려 주는 상호작용 환경을 말한다. ( 문제를 풀다보면 당연한 부분이다.) Jupyter Notebook 이 이러한 환경을 극대화한 도구이다.
화이트보드 코딩 인터뷰
면접관 앞에서 코딩 테스트를 본다는 것은 매우 위축되고 어렵다. 연습을 많이하고 스스로 코드에 대해 설명할 수 있는 능력을 키워야 한다. 온라인은 사소한 오류도 체크해가며 문제를 풀어야 한다면, 화이트보드 코딩 인터뷰의 경우에는 핵심을 관통하는 알고리즘을 중심으로 구현하면 된다.
화이트보드 코딩 인터뷰는 인터넷 검색을 사용 못한다. LRU Least Recently Used 가 뭔지 모른다면 끝까지 풀이하지 못할 것이다. 이런 경우 면접관에게 끈임없이 질문을 하여 힌트를 얻어내야 한다. 이러한 질문은 평가 기준이 되기도 한다.
'Algorithm > Algorithm' 카테고리의 다른 글
🧩 코딩 테스트 정복기 @21#B*02 (0) | 2021.01.28 |
---|---|
😵 백준 9184번 신나는 함수 실행 풀이 ( Dynamic Programming, Memoization) (0) | 2021.01.26 |
😤 백준 1753번 최단경로 풀이 (Dijkstra Algorithm) (0) | 2021.01.25 |