代码之家  ›  专栏  ›  技术社区  ›  Andrew Burns

备选问题[关闭]

  •  81
  • Andrew Burns  · 技术社区  · 17 年前

    这个 汽水问题?

    我正在面试一个人,FB相对来说很有名,也不难记住,所以我寻找想法的第一站就是我的新瘾。

    14 回复  |  直到 17 年前
        1
  •  113
  •   MBCook    17 年前

    我看到过一小部分相对简单的编程问题,它们被用来排除候选程序,就像FizzBuzz一样。以下是我所看到的一些问题,按照难度增加的顺序排列:

    1. 颠倒字符串
    2. 在列表中查找最大值
    3. 计算余数(给定分子和分母)
    4. 返回不同的值及其计数(即,上面的列表变为“1(3)3(3)5(2)7(1)”)
    5. 给定一个表达式字符串(仅变量、+、和-)和一组变量/值对(即a=1、b=7、c=3、d=14),返回表达式的结果(“a+b+c-d”将是-3)。

    这些都是针对Java的,您可以使用标准库,因此其中一些非常简单(如6)。但它们的作用就像汽水一样。如果你对编程有一点了解,你应该能够很快地完成。即使你不太懂这门语言,你至少应该能够给出如何做某事的想法。

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

        2
  •  33
  •   Stefan Ernst    17 年前

    也许这并不能直接回答你的问题,但我不确定你是否需要提出另一个问题。除了“容易记忆”之外,这个问题也很简单,这就是问题的关键所在。如果你正在面试的人属于FizzBuzz“知名”的那一类人,那么他们属于FizzBuzz类型的问题不会过滤掉的那一类人。这并不意味着你会当场雇用他们,但这确实意味着他们应该能够轻松地通过面试,进入面试的关键阶段。

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

        3
  •  25
  •   Captain Man Joachim Sauer    8 年前

    任何早期的 Project Euler 可能会很好。

    例如:

    Problem 25

    斐波那契序列由递推关系定义:

    Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
    

    F1 = 1
    F2 = 1
    F3 = 2
    F4 = 3
    F5 = 5
    F6 = 8
    F7 = 13
    F8 = 21
    F9 = 34
    F10 = 55
    F11 = 89
    F12 = 144
    

    第12个术语F12是第一个包含三位数字的术语。

    包含1000个数字?

        4
  •  15
  •   Mike Stone    17 年前

        5
  •  12
  •   Legion    15 年前

    我想要一个不涉及模运算符的FizzBuzz问题。特别是因为我通常会采访那些模运算符并不经常出现的web开发人员。如果这不是你经常遇到的事情,那就是你在需要的时候会去查阅的事情之一。

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

    倒三

    编写一个程序,以 逆序 ,在1和200之间每3的倍数。

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

    但回顾过去,你必须知道从哪里开始。有些人可能会直觉地意识到198(3*66)是3的最高倍数,因此,将66硬编码到循环中。其他人可能会使用数学运算(整数除法或浮点除法为200和3时的floor())来计算该数字,这样做可以提供更通用的方法。

        6
  •  11
  •   CraigTP    15 年前

    任何东西 ,试试这个:

    问:给我看(纸上的,但最好是纸上的) (白板)您将如何交换

    这不是我的主意,而是 posted in a comment blog post 所有关于最初的问题。

    雅各布接着说:

    如果他们没有 创建一个 第三个变量,你可以 把那个人一笔勾销。我发现 我可以把我的头发剪掉三分之一到一半 (无可否认,当时未进行筛选)

    在最初的博文评论之后,有一个更有趣的讨论,关于如何在不需要第三个变量(加法/减法、xor等)的情况下执行变量交换,当然,如果您使用的语言在单个语句/操作中支持这一点,那么这可能不是一个很好的测试。

    虽然不是我的想法,但我想在这里发布这个问题,因为这是一个非常简单的问题,可以(而且应该)在大约10秒钟内由编写过最简单程序的人回答。它也不需要使用一些明显晦涩的运算符,比如模运算符,这是许多人不熟悉的,他们是相当不错的程序员(我从自己的经验中知道)。

        7
  •  9
  •   Tom Ritter    17 年前

    斐波那契、反转字符串、计算字节中设置的位数是其他常见的方法。 Project Euler 也有大量的收藏,难度越来越大。

        8
  •  5
  •   Serafina Brocious    17 年前

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

        9
  •  2
  •   Justin    17 年前

    字符串X在字符串Y中的出现

    实现strstr()需要对该语言有基本的了解,同时提供巧妙优化的机会。

        10
  •  2
  •   INS    17 年前

    如果是C/C++面试,请确保该人员了解指针。

    通用-简单算法([单/双]链表)。询问每种情况下添加的复杂性(开始时、结束时、优化…)?

    (常规)如何从仅进行3*N/2比较的数组(N个大小)中找到最小值和最大值?

    C/C++:如何优化缓冲区中的多个“strcat”?

        11
  •  1
  •   John    17 年前
        12
  •  1
  •   Chris    17 年前

    查找素数列表是一个相当常见的问题,但它仍然需要一些思考,人们可能会给出不同程度的答案。

        13
  •  0
  •   torial    17 年前

    怎么样: 我想用一个整数来存储多个值。请描述这将如何工作。

    如果他们对位掩码和操作一无所知,他们可能无法解决其他问题。

        14
  •  0
  •   UlfR    16 年前

    我已经要求我的候选人创建一个计算程序 factorial 用他们选择的任何伪语言表示给定的数字。这是一个相当容易解决的问题,它非常适合于关于递归的自然后续问题(经常会被问到)。