소프트웨어 엔지니어링 기술 인터뷰에서 흔히 사용되는 작은 구현 문제 중 하나인 '중앙값 계산'이 단순한 코딩 능력을 넘어 지원자의 깊이 있는 설계 감각과 문제 해결 능력을 평가하는 데 효과적이라는 분석이 나왔습니다. 이 문제는 겉보기에는 간단해 보이지만, 실제 구현 과정에서 다양한 기술적 판단과 논의를 이끌어내며 지원자의 역량을 다각도로 보여줄 기회를 제공합니다.
중앙값(median)을 계산하려면 기본적으로 입력된 숫자 배열을 정렬해야 합니다. 여기서부터 중요한 설계 논의가 시작됩니다. 함수가 직접 배열을 정렬할 것인지, 아니면 호출자가 이미 정렬된 배열을 넘겨줄 것인지, 그리고 원본 배열을 변경해도 되는지 등 API(응용 프로그래밍 인터페이스) 계약에 대한 고민이 필요합니다. 또한, 배열의 길이가 홀수일 때와 짝수일 때 중앙값을 계산하는 방식이 달라지며, 이 과정에서 인덱스 계산 오류(off-by-one error)와 같은 흔한 실수를 통해 지원자의 디버깅(debugging) 능력을 관찰할 수 있습니다. 파이썬(Python)의 `statistics` 표준 라이브러리 활용 여부나 빈 리스트 처리 방식 등도 지원자의 실용적인 지식을 엿볼 수 있는 지점입니다.
이러한 중앙값 문제는 단순한 알고리즘 지식 테스트를 넘어섭니다. 평균(mean)과 중앙값의 통계적 차이, 그리고 특정 상황에서 중앙값이 왜 더 적절한 대표값이 될 수 있는지에 대한 논의로 확장될 수 있습니다. 또한, 명확한 입력과 기대값을 바탕으로 테스트 코드를 작성하기 용이하여 지원자가 테스트 주도 개발(TDD)에 대한 이해나 테스트 작성 감각을 보여주기에도 좋습니다. 비록 일부에서는 선형 시간(O(n))에 중앙값을 찾는 퀵셀렉트(Quickselect) 같은 고급 알고리즘을 모르면 불리할 수 있다고 지적하지만, 대부분의 면접관은 라이브러리 함수를 활용한 직관적인 정렬(O(n log n)) 풀이에서도 충분히 깊이 있는 대화를 이끌어낼 수 있다고 봅니다. 이처럼 중앙값 계산 문제는 기본적인 프로그래밍 역량부터 설계 원칙, 통계적 사고, 그리고 디버깅 능력까지 폭넓게 평가할 수 있는 유연하고 효과적인 질문으로 평가받고 있습니다.