C 面试 - 测试潜在候选人

新手上路,请多包涵

在接下来的几周内,我必须采访一些 C++ 候选人,作为公司中最资深的程序员,我应该尝试弄清楚这些人是否知道他们在做什么。

那么有人有什么建议吗?

就我个人而言,我讨厌被留在房间里填写一些 C++ 问题,所以我宁愿做一个更复杂的测试,以便在我们进行过程中与受访者讨论他们的方法等。即他们是否得到正确的答案并不重要,重要的是他们如何解决我感兴趣的问题。我不在乎他们是否理解语言的晦涩特性,但我确实关心他们对指针有很好的扎实理解,以及理解指针和引用之间的潜在差异。我也很想看看他们如何处理给定问题的优化,因为在我看来,可靠的快速代码是必须的。

因此,任何关于这些方面的建议将不胜感激!

原文由 Goz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 374
2 个回答

我不会让他们写代码。相反,我会给他们一些代码片段来查看。

例如,第一个是关于 按合同设计的:看看他们是否知道前置条件、后置条件和不变量是什么。犯一些小错误,例如从不初始化整数字段但在不变量中断言它> = 0,然后看看他们是否发现了它们。

第二个是给他们 bool contains(char * inString, char c) 。用一个简单的循环来实现它。然后问有没有错误。当然,您的代码不会在输入参数 inString检查 null (即使前面的问题谈到了先决条件!)。此外,循环在字符 0 处结束。当然,候选人应该发现可能的问题并坚持使用 std::string 而不是这个 char * 废话。这很重要,因为如果他们确实抱怨,您就会知道他们不会将自己的 char * 添加到新代码中。

另一种解决 容器 的方法:给它们一个 std::vector<int> 和搜索素数或计算奇数或其他东西的代码。犯一些小错误。看看他们是否发现任何问题并且他们理解代码。询问在哪种情况下 std::set 会更好(当您要非常系统地搜索元素并且原始输入顺序无关紧要时。)。

现场讨论一切,让他们思考几分钟。抓住他们所说的精髓。不要专注于“覆盖范围”(他们发现了多少东西),因为有些人可能会感到压力。听听他们实际说的话,看看是否有意义。

我不同意在面试中编写代码。我永远不会要求任何人编写代码。我知道我的手写代码在这种情况下可能会很糟糕。实际上,我很少被要求这样做,但是当我有的时候,我还没有被录用。

原文由 Daniel Daranas 发布,翻译遵循 CC BY-SA 4.0 许可协议

是一项非常复杂的任务,尽管它看起来很无害。

原文由 h0b0 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题