什么样的面试问题适合c ++手机屏幕?

时间:2008-12-13 22:08:07

标签: c++

很想得到别人的想法。我经常接受采访,并且在我的职业生涯中有足够的时间来反思他们,我注意到了一系列问题。我特别提到了这个c ++,但是值得注意的是我曾经让人们通过电话问我算法复杂性问题,我甚至不知道哈希查找与二叉树的复杂性是什么,我的意思是更像分析问题,例如“想象有4只大黄蜂,每只嗡嗡的bla bla bla。”

现在我个人更喜欢让手机屏幕更加具体,并留下白板的抽象问题。因此,在进行c ++电话采访时,您会涵盖哪些主题,特别是对于高级开发人员?

我知道还有另外一个与此类似的线索,但坦率地说,它似乎完全错过了关于电话屏幕的观点,而不是面对面的采访。此外,这更具有c ++特性。

4 个答案:

答案 0 :(得分:12)

我会问资源/内存管理,因为它是C ++中的一个重要主题,它不需要具体的代码。只是勾勒出一个简单的假设场景,并询问他们如何确保即使面对错误/异常,也可以释放一些重要资源。假设他们正在开发网络应用程序,他们如何确保我们正确关闭套接字?当然正确的答案是将它包装在RAII对象中,但不要直接问它们(谷歌“RAII”很容易,而上述问题“你如何确保资源得到正确发布”实际上向你展示了或者他们不知道适当的技术。如果他们回答“将所有内容包装在try / catch中”,他们可能会遇到问题。这与堆和堆栈之间的差异问题很好地联系在一起。

您也可以提出一些关于异常安全的简单问题,这不需要任何真正的代码。一般来说,我会说对所有各种C ++习语的讨论可能是一个好主意,因为其中许多不需要太多实际代码,但仍然是重要的语言特定概念。

看看他们是否知道智能指针(再次最好是给他们一个需要智能指针的情况,并看看他们如何解决问题),也许是模板/元程序(在后一种情况下,可能只是找出来)如果他们知道这是可能的,而不是要求他们在手机上编写实际的元编程代码

您可能还想询问一些未定义行为的常见区域(执行a = b++ + b++?后a和b的值是什么?),或者分配10个元素的数组,并将10或11添加到数组指针,并询问每种情况下的结果是什么(+ = 10是合法的,给你一个过去的结束指针,+ = 11是未定义的)。或者给他们一个他们需要复制很多对象的场景,并询问他们如何做到这一点(一次只能循环复制每个元素,memcpy或std :: copy是明显的答案。请注意memcpy的注意事项,它对非POD对象不安全)

或者询问他们的编码风格。他们对迭代器有何看法?他们更喜欢普通的老式循环吗?他们知道如何使用std :: for_each或std :: transform吗?

编辑: 似乎a = b++ + b++(答案是未定义的行为,btw)建议特别产生了很多评论。也许人们读得太多了。由于OP说他更喜欢问具体的(不是抽象的,并且很容易通过电话解释/回答/讨论)的问题,这可以揭示一下受访者的C ++技能,这是一个简单(也许,也许是挑剔)的例子。它背后的原因是1)它具有直观的意义,这是错误的,2)在你意识到这一点之前,你必须具备一定的C ++经验。当然3),通过电话询问是简短易行的。它不需要任何人编写代码。不,它不会透露候选人是否是“伟大的程序员”,但正如我所理解的那样,这也不是目标。如果有人弄错了,那根本就没有多大意义,但是如果他们做对了,你就可以相当肯定他们知道一些C ++。但如果你再次阅读我的答案,你会发现它只是我认为应该代表的一类问题的一个简单例子。 C ++充满了未定义的行为,即使在看起来完全无害和直观的代码中也是如此。要求候选人识别某些实例,这可能是有用的,无论是“在同一个表达式中修改相同的变量两次”,还是不同的东西。

答案 1 :(得分:5)

我想知道人们是否真正了解他们正在使用的工具。我还发现“高级”开发人员的知识存在严重差距。

您可以考虑提问

  • 什么是vtable。
  • 模板如何工作
  • 堆和堆栈之间的区别是什么。回复这个问题的深度可能非常有启发性!

“你真的需要采访我”回答最后一个问题将涵盖

  • 分配 - 限制,用例,失败模式,效率,资源清理,析构函数
  • 堆栈调用帧 - 调用函数,参数,回溯
  • 时会发生什么

答案 2 :(得分:3)

作为C ++职位的电话屏幕的一部分,我已经开始问'谁是Bjarne Stroustrup'。

我觉得很多人声称自己是高级C ++开发人员无法识别。英语使用者的提示:在提出问题之前,请转到他的常见问题并听取正确的发音。

答案 3 :(得分:1)

  • 设计模式
  • C / C ++基础知识
  • 虚拟功能
  • 多态性
  • Scott Mayer系列的概念
  • 关于模板。 (不是特别有序)

最后但并非最不重要。我将给出一些示例问题,我告诉他们设计类。只是接口。