P S*_*ved 19 algorithm np-complete
今天有一个关于SO 的问题,作者在采访中遇到了NP完全问题,他显然没有被告知这是一个问题.
问这些问题的目的是什么?在询问这些事情时,面试官会有什么样的行为?证明?有用的启发式方法?如果它不是每个人都应该知道的众所周知的NP完全问题,那么问一个人是否合法?(这里有很多)
Ant*_*ima 16
对我完全合法.如果你是计算机科学专业人士,很有可能你可以非正式地争论为什么问题似乎很难,或者(甚至更好)提供一个减少已知的NP难题的草图.
许多现实世界的问题最终都变成了NP难题,而stackoverflow现在还有一个问题的复杂性问题,这个问题最终变得很困难(例如NP难).它是CS专业人员工具箱的重要组成部分,能够识别和争论已知难以解决的问题.
Par*_*ppa 10
问这样的问题,我没有看到任何问题.此外,不应期望程序员通过死记硬背来识别NP完全问题.但是,无论给定问题是否为NP完全,他们都应该能够确定他们的算法可能很慢.
当然,为什么不呢?NP-complete并不意味着无法解决,它只是意味着你的解决方案会很慢.您可能正在寻找候选人是否会选择暴力解决方案,或尝试动态编程解决方案.这类问题可能导致关于运行时和其他有用理论的问题.
有些类型的面试问题在某些国家是非法的,通常与个人详细信息有关,而这些细节与雇主的业务无关.除此之外,如果面试官认为这有助于了解受访者的能力,那么任何问题都是公平的游戏!
如果您正在招聘一个需要思考者而不仅仅是代码猴的职位,那么向申请人提出这类问题可能会有所帮助.谁关心一个问题是否是"众所周知"的NP?如果这个人很好,他会在分析问题时达成这种理解.这很可能是面试官想要看到的结果,或者申请人可以继续进行更多的预分析,并描述他如何暴力破解问题,或者他可以考虑采用哪些优化来使其更易于管理.
提出一个难以回答的问题是很好的,看看程序员如何通过问题推理。
但这一切都取决于面试官如何提出问题,如果他们不是数学天才,他们会提示程序员找到解决方案(即看看他们如何推理,以及他们如何对诸如“这是一个好的开始,但是什么? if...") 而不是检测他们是否患有自闭症,并且可以在 4.3 秒内提供最佳解决方案)。
值得记住的是,面试是压力很大的事情,很多人发现这样的问题很难回答好——一个简单得多的问题通常就足够了,而不会让受访者承受过度的压力/压力。
如果你故意尝试看看他们如何处理压力只是愚蠢的 - 这不是程序员在工作中必须处理的那种压力,所以你没有测试任何有价值的东西。