Software Engineering Note

코딩 테스트는 어떠해야 하는가 본문

일하며 개발하며

코딩 테스트는 어떠해야 하는가

devmoons 2022. 9. 4. 11:12

코딩 테스트에 대한 생각을 적어보려 한다.

 

코딩 테스트의 유형은 크게 두 가지로 나뉜다.

온라인 코딩 테스트, 그리고 직접 만나서 티키타카를 하며 진행하는 코딩 인터뷰

온라인 코딩 테스트는 주로 테스트 환경을 제공하는 업체를 통해 진행되고 지원자에게 링크가 전송되어 언제까지 풀라고 요구한다.

 

코딩 테스트를 생각하기 전에 먼저 어떤 개발자를 뽑고 싶은지 생각할 필요가 있다.

- 최소한의 코딩 능력만 갖춰도 괜찮은 개발자를 원하는가?

- 알고리즘에 탁월하거나 머리가 좋은, 순발력이 뛰어난 개발자를 원하는가?

- 기본적인 코딩능력과 문제 해결 능력이 있고 잠재력이 있는 개발자를 원하는가?

 

알고리즘에 탁월하거나 문제 해결 능력이 엄청 뛰어난 개발자를 뽑고 싶다면,

미친 수준의 하드코어 알고리즘 문제를 내고 온라인 코딩 테스트로 필터링하면 될 것이다.

 

나라면 기본적인 코딩 능력과 문제 해결 능력이 있고 잠재력이 있는 개발자를 선발 기준으로 삼겠다.

 

어떻게?

온라인 코딩 테스트와 코딩 인터뷰를 둘 다 진행한다.

온라인 코딩 테스트에서는 기본기를 평가하고, 코딩 인터뷰에서 잠재력을 확인한다.

 

온라인 코딩 테스트 문제의 구성은 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/

 

코딩 인터뷰어들도 다양하게 풀어보고 인터뷰에 활용하면 좋을 것이다.