计算中位数:我偏爱的面试题

A software engineering interview question I like: computing the median

我在技术面试中从不问那些低价值的谜题,而是偏爱像“计算中位数”这样看似简单却暗藏玄机的题目。这道题不仅能像 Fizz Buzz 一样快速验证候选人的编程基本功,还能引出排序策略、API 设计、边界条件处理等深层讨论。从奇偶数分支的陷阱到统计学中中位数优于平均值的原理,再到如何利用 Python 标准库中的 statistics 模块,这道题给了候选人充分展示调试能力和知识广度的机会。

我不问谜题,因为我觉得它们价值很低。
  • 有评论者指出,在 Python 等语言中直接使用 statistics 或 numpy 等标准库是更务实的解决方案,手写算法反而显得脱离实际工作场景。
  • 一位从业者提到,大厂面试设置此类基础算法题的核心目的是作为过滤器,快速剔除 90% 无法编写基本代码的候选人,而非考察真实工作能力。
  • 有观点认为,面试不应追求写出生产级代码,而应通过此类问题观察候选人的思维倾向,例如是否优先考虑哈希表或单遍计算等解决模式。
  • 亲历者分享,当候选人提出如基于位表示的二分查找等面试官未曾预料的解法时,优秀的面试官会表现出好奇与赞赏,而非固守标准答案。
  • 关于算法效率存在技术分歧,有评论者指出 introselect 实现的最坏情况时间复杂度常被误认为是 O(n log n),而 Median of medians 虽理论最优但实际因常数过大常被避免。

同日更多故事

2026-07-09