C++ 面试 - 测试潜在候选人

标签 c++

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

那么有人有什么建议吗?

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

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

最佳答案

我不会让他们编写代码。相反,我会给他们一些代码片段以供审查。

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

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

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

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

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

关于C++ 面试 - 测试潜在候选人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1398436/

相关文章:

c++ - 使用 join() 从不同范围运行 C++ 线程

c++ - C++验证数字输入中的逗号位置

c++ - 递增指向派生类的指针

c++ - Xcode 4.5.2 中的 boost::regex 链接问题

c++ - 如何通过 boost spirit 提取 std::string 对象

c++ - WinDbg 是如何认识源码的?

c++ - 我怎么知道哪个线程调用了方法

c++ - 为什么在这种情况下 lambda 没有转换为函数?

c++ - LibGit2 SSH 身份验证失败

c++ - 如何确保虚方法调用一直传播到基类?