일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 해커컵
- 테스트주도개발
- Raw-Request-URI
- hackercup2017
- 알고스팟
- 2016년회고
- 2017회고
- 데이터플랫폼
- spray
- clean code
- 데이터야놀자
- 단위테스트
- 함수형 사고
- 코딩인터뷰
- 동시성
- 실전사례
- 회고
- 켄트백
- datalake
- 개발자
- wait region split
- 박종천
- 데이터레이크
- kafka
- 클린코드
- functional thinking
- 데이터유통
- 개발7년차매니저1일차
- coursera
- 개발자로살아남기
- Today
- Total
Software Engineering Note
코딩 테스트는 어떠해야 하는가 본문
코딩 테스트에 대한 생각을 적어보려 한다.
코딩 테스트의 유형은 크게 두 가지로 나뉜다.
온라인 코딩 테스트, 그리고 직접 만나서 티키타카를 하며 진행하는 코딩 인터뷰
온라인 코딩 테스트는 주로 테스트 환경을 제공하는 업체를 통해 진행되고 지원자에게 링크가 전송되어 언제까지 풀라고 요구한다.
코딩 테스트를 생각하기 전에 먼저 어떤 개발자를 뽑고 싶은지 생각할 필요가 있다.
- 최소한의 코딩 능력만 갖춰도 괜찮은 개발자를 원하는가?
- 알고리즘에 탁월하거나 머리가 좋은, 순발력이 뛰어난 개발자를 원하는가?
- 기본적인 코딩능력과 문제 해결 능력이 있고 잠재력이 있는 개발자를 원하는가?
알고리즘에 탁월하거나 문제 해결 능력이 엄청 뛰어난 개발자를 뽑고 싶다면,
미친 수준의 하드코어 알고리즘 문제를 내고 온라인 코딩 테스트로 필터링하면 될 것이다.
나라면 기본적인 코딩 능력과 문제 해결 능력이 있고 잠재력이 있는 개발자를 선발 기준으로 삼겠다.
어떻게?
온라인 코딩 테스트와 코딩 인터뷰를 둘 다 진행한다.
온라인 코딩 테스트에서는 기본기를 평가하고, 코딩 인터뷰에서 잠재력을 확인한다.
온라인 코딩 테스트 문제의 구성은 3-4 문제로 하고,
1번 문제는 자신감을 심어줄 수 있는 비교적 쉬운 난이도의 문제를 선택한다.
긴장감을 풀어주고 자신감을 주어 제대로 실력을 발휘하도록 하기 위해서다.
난이도는 쉬운 문제에서 어려운 문제 순서로 배치하고 시간은 충분히 부여한다.
온라인 코딩 테스트는 기본기를 평가하므로, 온라인 코딩 테스트는 반드시 전부 풀 수 있어야 한다.
코딩 인터뷰는 어려운 문제를 선택해도 상관없다.
단, 일방적으로 풀라고 하는 것이 아니라 조금씩 힌트를 주면서 문제 해결을 유도하고, 함께 푼다는 분위기를 조성해야 한다.
이런 측면을 고려하면 처음에는 쉬운 해결책이 생각나지만, 그 방법으로는 실행시간이 너무 오래 걸리는 등의 문제로 더 나은 해법이 필요한 문제가 좋다. 해법이 여러 개일 수 있는 문제가 좋다는 의미도 된다.
코딩 인터뷰에서 중요하게 봐야 할 것은,
더 나은 해법이 왜 더 나은지를 제대로 이해하는지, 시간/공간 복잡도를 잘 따져보는지, 해법을 제대로 구현하는지 등이다.
다음은 leetcode 문제를 풀면서 코딩 인터뷰 문제로 쓸만하다 생각되는 것들을 정리한 것이다.
two pointers
https://leetcode.com/problems/find-the-duplicate-number
bfs
https://leetcode.com/problems/network-delay-time
Sliding Window
https://leetcode.com/problems/permutation-in-string/
https://leetcode.com/problems/longest-substring-without-repeating-characters/
DP or Expand Around Center
https://leetcode.com/problems/longest-palindromic-substring/
Trie or BinSearch
https://leetcode.com/problems/search-suggestions-system/
hash or union-find
https://leetcode.com/problems/longest-consecutive-sequence/
greedy, priority queue, parametric search
https://leetcode.com/problems/furthest-building-you-can-reach/
greedy
https://leetcode.com/problems/container-with-most-water/
merge sort, segment tree, etc
https://leetcode.com/problems/count-of-smaller-numbers-after-self/
segment tree
https://leetcode.com/problems/range-sum-query-mutable/
코딩 인터뷰어들도 다양하게 풀어보고 인터뷰에 활용하면 좋을 것이다.
'일하며 개발하며' 카테고리의 다른 글
application 이 out of memory 로 죽을 때 개선 사례 (0) | 2024.02.19 |
---|---|
좋은 개발자가 되는 방법 (2) | 2023.02.18 |
개발자 준비생들을 위한 조언 (0) | 2021.02.20 |
시간 복잡도는 왜 따져봐야 할까? (0) | 2020.03.18 |
shell script 부분 병렬화 사례 (0) | 2020.03.01 |