替代FizzBu​​zz问题

And*_*rns 86 fizzbuzz

任何人有任何好的FizzBu​​zz类型的问题不在 FizzBu​​zz问题?

我正在采访某人,而FB相对众所周知而且难以记忆,所以我寻找创意的第一站就是我的新成瘾.

MBC*_*ook 99

我已经看到了一小部分用于清除候选人的相对简单的编程问题,就像FizzBu​​zz一样.以下是我看到的一些问题,为了增加难度:

  1. 反转一个字符串
  2. 翻译句子("鲍勃喜欢狗" - >"狗喜欢鲍勃")
  3. 在列表中找到最小值
  4. 在列表中查找最大值
  5. 计算余数(给出分子和分母)
  6. 从包含重复的列表中返回不同的值(即"1 3 5 3 7 3 1 1 5" - >"1 3 5 7")
  7. 返回不同的值及其计数(即上面的列表变为"1(3)3(3)5(2)7(1)")
  8. 给定一串表达式(仅变量,+和 - )和一组变量/值对(即a = 1,b = 7,c = 3,d = 14)返回表达式的结果("a + b + c -d"将是-3).

这些是针对Java的,您可以使用标准库,因此其中一些非常简单(如6).但他们像FizzBu​​zz一样工作.如果你有关于编程的线索,你应该能够很快地做到最好.即使你不熟悉这门语言,你至少应该能够提出如何做某事的想法.

使用这个测试,我之前的一位老板看到的一切都是从那些能够快速完成这一切的人,到能够做得最快的人,到一个半小时后无法接听一个人的人.

我还应该注意:他让人们在完成这些任务时使用他的电脑.他们被特别指示他们可以使用谷歌等.

  • 这不是我对问题精神的想法,但如果你足够了解这个问题,那么你当然知道足以通过FizzBu​​zz问题,所以我不会反对你.它甚至可能对您有利.我仍然可能会问你如何在没有javax.script的情况下做到这一点. (4认同)
  • 我已经读了你一段时间的答案,并且可以,弄清楚发生了什么,为什么我不喜欢它,问题是你的问题代码并不好玩:)(这是好的,因为这是打算面试).这个评论没有真正意义,但只是想把它从我的系统中删除.:)抱歉所有的笑脸 (3认同)

Bra*_*tte 28

也许这不能直接回答你的问题,但我不确定你是否需要提出另一个问题.除了"易于记忆"之外,FizzBu​​zz问题只是简单的"简单",这就是重点.如果您正在面试的人属于FizzBu​​zz"众所周知"的人群,那么他们就属于FizzBu​​zz类型问题无法过滤掉的人群.这并不意味着你当场雇用他们,但这确实意味着他们应该能够轻松地通过它并接受采访的内容.

换句话说,任何花时间阅读Coding Horror的人都值得进一步采访.让他们快速写出解决方案,简要讨论一下(例如,你如何测试?),然后继续讨论下一个问题.正如文章所说,"真正令人惊讶的是,有多少候选人无法完成最简单的编程任务."

  • 很好的答案."FizzBu​​zz很简单,重点是......任何花时间阅读Coding Horror的人都值得进一步采访"QFT.我经常问候选人"你去哪里阅读有关编程的内容?" 我总是惊讶于有多少人无法提及单个博客,网站或书籍. (7认同)

小智 23

Project Euler的任何早期版本都可能是好的.

例如:

问题25

Fibonacci序列由递归关系定义:

Fn = Fn?1 + Fn?2, where F1 = 1 and F2 = 1.
Run Code Online (Sandbox Code Playgroud)

因此,前12个学期将是:

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
Run Code Online (Sandbox Code Playgroud)

第12个学期F12是第一个包含三位数的术语.

Fibonacci序列中包含1000位数的第一项的索引是多少?


Mik*_*one 13

我发现检查一个字符串,如果它是一个回文是一个非常简单的,可以是一个体面的除草器.

  • 是的,但与此同时,能够看到更简单的解决方案是有价值的...然后你说,"好吧,现在假装你没有反向功能." (3认同)

Leg*_*ion 10

我想要一个不涉及模运算符的FizzBu​​zz问题.特别是因为我经常采访网络开发人员,模数运算符通常不会出现.如果它不是你经常遇到的东西,那么你需要它几次就能找到它.

(当然,这是一个概念,理想情况下,你应该在沿途的某个数学课程中遇到过,但这是一个不同的主题.)

所以,我想出的就是我所说的,缺乏想象力的,反向的三分球.说明是:

编写一个程序,以相反的顺序打印输出1到200之间的3的每个倍数.

按正常顺序执行它很容易:将循环索引乘以3,直到达到超过200的数字,然后退出.您不必担心在之后终止多少次迭代,您只需继续操作直到达到第一个太高的值.

但是倒退,你必须知道从哪里开始.有些人可能直观地认识到198(3*66)是3的最高倍数,因此,硬编码66进入循环.其他人可能会使用数学运算(在200和3的浮点除法上的整数除法或floor())来计算出这个数字,并且这样做可以提供更普遍适用的东西.

从本质上讲,它与FizzBu​​zz的问题相同(循环显示值并将其打印出来,带有扭曲).这个是一个需要解决的问题,它不像模数操作那样使用任何(相对)深奥的东西.

  • 好吧,如果您只是尝试将样式应用于交替行,请使用CSS3的第n个子选择器.jQuery也有交替的选择器来通过JS来做这些事情.但是,就像我上面提到的那样,对你的更大一点说,这是一个被查找,使用,然后很快被遗忘的东西,因为它需要15秒才能找到.我不是说我喜欢它或赞成,但特别是在入门级,它发生了.:) (4认同)
  • 我很好奇军团:你的网络开发人员如何在没有模数的情况下做绿色限制/备用行等事情? (2认同)

Cra*_*gTP 8

For something really super-simple that can be done in 10 seconds, but would remove those people who literally can't program anything, try this one:

Ask: show me (on paper, but better on a whiteboard) how you would swap the values of two variables.

这不是我的想法,但是在一篇名为Jacob的人的评论发布一篇关于原始FizzBu​​zz问题的评论.

雅各继续说:

如果他们不是创建第三个变量开始,那么你几乎可以写下这个人.我发现只用那个问题,我可以减少三分之一到一半(当然是在未经筛查的那些未经筛选的)申请人.

关于在不需要第三个变量(添加/减去,xor等)的情况下执行此变量交换的原始博客文章的评论之后还有一个有趣的讨论,当然,如果你使用支持这个的语言在一个声明/操作中,它可能不是一个好的测试.

虽然不是我的想法,但我想在这里发布,因为它是一个优雅简单,简单易懂的问题,可以(并且应该)在10秒钟内由一个写过最简单程序的人回答.它也不需要使用像modulo运算符那样模糊不清的运算符,很多人都是相当不错的程序员,根本不熟悉(根据我自己的经验我知道).

  • 作为一个认为他们只是一个“好”的程序员的人,这让我感到害怕。我的直接想法是“亲爱的上帝,我会使用第三个变量,但他肯定想要一些没有它的聪明方法!” (2认同)

Tom*_*ter 7

Fibonacci,反向字符串,计数字节中设置的位数是其他常见的. 项目欧拉也有越来越多的难度.


Cod*_*ous 5

让他们编写一个应用程序来返回给定数字的因数。短时间内做好,做起来难。你可以在很短的时间内看到他们的风格和他们思考问题的方式。