在接下来的几周内,我必须采访一些 C++ 候选人,作为公司中最资深的程序员,我应该尝试弄清楚这些人是否知道他们在做什么。
那么有人有什么建议吗?
就我个人而言,我讨厌被留在房间里填写一些 C++ 问题,所以我宁愿做一个更复杂的测试,以便在我们进行过程中与受访者讨论他们的方法等。即他们是否得到正确的答案并不重要,重要的是他们如何解决我感兴趣的问题。我不在乎他们是否理解语言的晦涩特性,但我确实关心他们对指针有很好的扎实理解,以及理解指针和引用之间的潜在差异。我也很想看看他们如何处理给定问题的优化,因为在我看来,可靠的快速代码是必须的。
因此,任何关于这些方面的建议将不胜感激!
原文由 Goz 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不会让他们写代码。相反,我会给他们一些代码片段来查看。
例如,第一个是关于 按合同设计的:看看他们是否知道前置条件、后置条件和不变量是什么。犯一些小错误,例如从不初始化整数字段但在不变量中断言它> = 0,然后看看他们是否发现了它们。
第二个是给他们
bool contains(char * inString, char c)
。用一个简单的循环来实现它。然后问有没有错误。当然,您的代码不会在输入参数inString
中 检查 null (即使前面的问题谈到了先决条件!)。此外,循环在字符 0 处结束。当然,候选人应该发现可能的问题并坚持使用std::string
而不是这个char *
废话。这很重要,因为如果他们确实抱怨,您就会知道他们不会将自己的char *
添加到新代码中。另一种解决 容器 的方法:给它们一个
std::vector<int>
和搜索素数或计算奇数或其他东西的代码。犯一些小错误。看看他们是否发现任何问题并且他们理解代码。询问在哪种情况下std::set
会更好(当您要非常系统地搜索元素并且原始输入顺序无关紧要时。)。现场讨论一切,让他们思考几分钟。抓住他们所说的精髓。不要专注于“覆盖范围”(他们发现了多少东西),因为有些人可能会感到压力。听听他们实际说的话,看看是否有意义。
我不同意在面试中编写代码。我永远不会要求任何人编写代码。我知道我的手写代码在这种情况下可能会很糟糕。实际上,我很少被要求这样做,但是当我有的时候,我还没有被录用。