作者:敬炜8965肀 | 来源:互联网 | 2024-11-12 17:41
这篇帖子最初发布在 Reddit 的 r/programming 社区,链接如下:
原帖链接
不久之后,作者提供的解决方案被发现存在错误,这引发了其他用户的调侃,认为作者自己都无法通过自己的面试题。
相关讨论链接
作者 svpino 遭到了大量批评,许多经历过类似面试题的程序员纷纷加入讨论,表示这些题目并不适合所有软件工程师。特别是关于时间限制的问题,如果题目难度像前三个那样简单(基本是测试你是否了解编程),1小时确实足够。然而,对于第四个和第五个问题,情况就不那么乐观了。许多有超过20年经验的资深工程师表示,他们在规定时间内无法完成,并且在实际工作中很少会遇到类似的挑战。
尽管如此,第四个和第五个问题仍然具有一定的趣味性:
问题 4
编写一个函数,给定一个非负整数列表,将它们排列成能形成最大可能的数字。例如,给定 [50, 2, 1, 9],形成的最大数字是 95021。
问题 5
编写一个程序,输出所有可能的方式,在数字 1 到 9 之间插入 + 或 - 或什么都不插入,使得结果总是 100。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。
对于第四个问题,如果数字较少,可以通过暴力枚举排列来解决。但当数字较多时,如何高效地进行排序就变得相当复杂。
第五个问题同样可以通过暴力枚举来解决,但这需要编写较为复杂的代码,且效率较低。