如果您可以问一个C ++程序员一个问题来衡量他们的C ++技能,那会是什么?
我认为最好的问题是:您可以称之为“删除此”吗?成员函数内部?(我将其作为链接,因此您可以首先考虑一下,然后转到“最佳C ++面试问题–永远!”以查看正确的答案。)
我不问这个问题是因为我希望大多数人都知道答案。如果他们这样做了,那么这将不是一个有用的问题。我要求看看他们是否可以按照自己的方式来获得正确答案,以及如何做到这一点。
如果您可以问一个C ++程序员一个问题来衡量他们的C ++技能,那会是什么?
我认为最好的问题是:您可以称之为“删除此”吗?成员函数内部?(我将其作为链接,因此您可以首先考虑一下,然后转到“最佳C ++面试问题–永远!”以查看正确的答案。)
我不问这个问题是因为我希望大多数人都知道答案。如果他们这样做了,那么这将不是一个有用的问题。我要求看看他们是否可以按照自己的方式来获得正确答案,以及如何做到这一点。
Answers:
我想问问他们为什么虚拟成员函数不能与C ++中的模板一起使用的原因。当然,只有少数人可以立即真正回答问题。但是,如果受访者正确理解了C ++的核心机制(模板在C ++中的工作方式,虚拟函数的实现方式,编译器和链接器如何从源代码生成可执行文件等),则可以通过适当的逐步操作获得答案。提出主要问题。
已添加:此答案中的模板虚拟成员函数表示模板函数是某个类的虚拟成员函数,而不是模板类中的常规成员函数。抱歉让您感到困惑:(
最好的C ++面试问题将是编程问题,而不是测验问题。
CString
,char*
,std::string
等; 他们返回新字符串还是原地反转?他们是手动循环遍历字符还是调用库函数。当然,如果他们不能做一些简单的事情,例如反转字符串,那也可以告诉您很多有关它们的信息!也有很多的后续问题,比如使用Unicode它的工作原理,它使用UTF-8等工作
我想问问他们对C ++ 0x的看法。由此,我可以将它们“分类”为各种刻板印象:
这些存储桶中有一些对您而言非常合适,而有些则是“感谢您的光临”。作为一个使您快速获取大量信息的问题,这是我的赢家。
我对为什么“可以删除它”感到困惑。被认为是一个有趣的问题。用C ++编写COM代码的任何人都知道,您在基本COM编程的第一天就学到的第一件事就是如何正确使用“删除此内容”。我想确定某个人是否正在躺在关于编写COM程序的履历表上可能很有用,但是作为一个常识性C ++问题,如果某人不能立即回答,那么他们就不太适合为我的团队。
无论如何,如果您的目标是提出一个衡量C ++技能的问题,那么选择一个问题是错误的方法。扭转局面。正确的问题是:
从1到10的规模,您是一名C ++程序员,您有多好?
这不是让您获得想要的答案的问题。所有人都说“八”。为您提供所需答案的问题是:
好,你八岁了。您认为七岁的孩子会遇到什么困难呢?
和繁荣,现在您已经拥有了它们。如果应聘者认为“与递归有关”或“何时使用虚拟析构函数”是七岁以下儿童所无法承受的事情,那么您知道他们对递归或析构函数或其他知识了解得很少,并且他们的知识没有比这更深入的了。
与提出一些琐碎问题相比,这应该给您更好的校准。如果要强迫我提出一个有关C ++事实的好问题,我可能会问类似“您如何为处理虚拟方法的C ++编译器部分设计语义分析器和代码生成器”在基类析构函数中调用?” 您应该问一些与您从事的实际工作有关的问题,并且候选人可能会从事工作。这是我不得不处理的一个问题,我认为它可以很好地了解一个人如何设计语义分析器和代码生成器以及他们对C ++的了解。
只是为了好玩,我让C ++程序员迷上了这个小宝贝:
为什么会遇到无限循环(是的,它的键入正确)?
int x=0;
while (x<3) {
x = x++;
}
令人惊讶的是有多少人被绊倒了。我当然不能用了它在Stack Overflow上出现后就。咕......咕utter ...
(要获得正确的答案,请阅读自白,并务必阅读评论)
添加了奖金问题
有史以来最经典的FizzBuzz(如现在著名的《编码恐怖》文章所述))。我本人从未真正在面试中使用过它,但是在午餐时间将它扔给开发团队之后,结果是……嗯……令人惊讶地准确。
告白
我被标准的“ x ++返回原始值”响应所困扰。但是,正确的答案是由于序列点,行为是不确定的。在我使用此序列之前,没有人一直提到序列点。
我受过教育,并且我真的要感谢所有花时间发表评论的人。
StackOverflow上有很多。我将分享一些:
https://stackoverflow.com/questions/2428404/tricky-interview-question-for-c
https://stackoverflow.com/questions/50447/favorite-c-interview-question
https://stackoverflow.com/questions/4269838/interview-question
https://stackoverflow.com/questions/2532102/can-a-pointer-ever-point-to-itself
https://stackoverflow.com/questions/3055141/interview-question-about-virtual-functions-in-c
我想问一下他们对的设计的看法std::string
。我还要问他们是否使用了其他设计(例如MFC / ATL CString
,wxString
等),并假设他们有,请他们比较和对比的设计。
字符串已被广泛使用,以至于几乎所有具有C ++实际使用经验的人都应该至少使用过上述一种或两种。几乎所有设计都在理论纯度和实际使用之间做出了一些折衷。有些功能确实可以很好地工作,但前提是必须完全按预期使用,而另一些功能则具有更大的通用性,可能会有些笨拙。简而言之,几乎任何有实际经验的人都应该能够对他们的设计表达一些有意义的意见,这些意见应该告诉您很多有关他们的想法,他们如何设计代码,他们重视实用主义与理论纯度的程度,等等。