在求职面试中要求解决NP完全问题是否正确?

P S*_*ved 19 algorithm np-complete

今天有一个关于SO 的问题,作者在采访中遇到了NP完全问题,他显然没有被告知这是一个问题.

问这些问题的目的是什么?在询问这些事情时,面试官会有什么样的行为?证明?有用的启发式方法?如果它不是每个人都应该知道的众所周知的NP完全问题,那么问一个人是否合法?(这里有很多)

Ant*_*ima 16

对我完全合法.如果你是计算机科学专业人士,很有可能你可以非正式地争论为什么问题似乎很难,或者(甚至更好)提供一个减少已知的NP难题的草图.

许多现实世界的问题最终都变成了NP难题,而stackoverflow现在还有一个问题的复杂性问题,这个问题最终变得很困难(例如NP难).它是CS专业人员工具箱的重要组成部分,能够识别和争论已知难以解决的问题.

  • "提供一个减少已知的NP难题的草图" - 请注意,你需要从一个NP难问题中减少*,而不是*到一个NP难问题(这通常都很容易). (6认同)
  • 提供减少已知NP完全问题的草图通常是困难的.你想花多少时间在一个问题上花费多少时间,你想知道一个人在准备好的记忆中是否有一批NP完全问题,并且在面试时可以提出一个校对草图的重量? (5认同)

Par*_*ppa 10

问这样的问题,我没有看到任何问题.此外,不应期望程序员通过死记硬背来识别NP完全问题.但是,无论给定问题是否为NP完全,他们都应该能够确定他们的算法可能很慢.

  • @Ben S,你之间*感觉*问题是NPc而你*证明*它是十分之一到无限分钟可能会通过. (5认同)

tlo*_*ach 8

当然,为什么不呢?NP-complete并不意味着无法解决,它只是意味着你的解决方案会很慢.您可能正在寻找候选人是否会选择暴力解决方案,或尝试动态编程解决方案.这类问题可能导致关于运行时和其他有用理论的问题.


Car*_*icz 7

有些类型的面试问题在某些国家是非法的,通常与个人详细信息有关,而这些细节与雇主的业务无关.除此之外,如果面试官认为这有助于了解受访者的能力,那么任何问题都是公平的游戏!

如果您正在招聘一个需要思考者而不仅仅是代码猴的职位,那么向申请人提出这类问题可能会有所帮助.谁关心一个问题是否是"众所周知"的NP?如果这个人很好,他会在分析问题时达成这种理解.这很可能是面试官想要看到的结果,或者申请人可以继续进行更多的预分析,并描述他如何暴力破解问题,或者他可以考虑采用哪些优化来使其更易于管理.

  • NPc问题存在问题:它们的NP完全性需要很长时间才能得到证实.那么面试应该多久? (2认同)

Jas*_*ams 5

提出一个难以回答的问题是很好的,看看程序员如何通过问题推理。

但这一切都取决于面试官如何提出问题,如果他们不是数学天才,他们会提示程序员找到解决方案(即看看他们如何推理,以及他们如何对诸如“这是一个好的开始,但是什么? if...") 而不是检测他们是否患有自闭症,并且可以在 4.3 秒内提供最佳解决方案)。

值得记住的是,面试是压力很大的事情,很多人发现这样的问题很难回答好——一个简单得多的问题通常就足够了,而不会让受访者承受过度的压力/压力。

如果你故意尝试看看他们如何处理压力只是愚蠢的 - 这不是程序员在工作中必须处理的那种压力,所以你没有测试任何有价值的东西。