“解释RAII习惯用法”是一个很好的C ++筛选问题吗?[关闭]


13

与我合作的一家公司要求我进行候选电话筛选,以确保在将某人转移给潜在客户时不会完全让他们感到尴尬。

事实证明,有相当多的人被安排担任C ++开发人员角色。我并没有花太多时间在C ++上,但是我已经用该语言完成了一些琐碎和琐碎的项目。我认为“解释RAII习惯用语”将是一个不错的垒球问题,大多数严肃的C ++开发人员都可以在半睡着时回答,并且可以让我继续讨论有关经验的更有趣的问题。但是事实证明,即使我将首字母缩写词扩展为“资源获取就是初始化”,具有10年以上C ++经验的人也不认识该术语。一位候选人甚至说,他认为在Windows开发中应用该技术并不总是可行的,我认为这是一个奇怪的想法,但我可以看到几个可以支持该思路的示例。)。

甚至我认识的几个C ++开发人员都知道他们的能力,他们说他们不认识该术语,但是在阅读了该技术的摘要后说:“哦,是的,我不知道这个名字。我只是将这些事情视为您要做的事情。” 我记得Stroustrup的第二版中的术语,尽管当时并没有完全发挥作用。

因此,是“您能向我解释RAII的习惯用法吗?” 一个公平的筛选问题?期望所有有能力的C ++开发人员理解它是否合理?这个词比我想象的更神秘吗?假设候选人不知道该术语,是否有后续问题可以帮助我弄清楚他们是否至少已使RAII发挥作用的内在化?是否有更好的替代“杂草”问题使应试者有一定的自由度,并帮助应聘者证明他们对C ++开发的理解?

编辑要补充:澄清一下,我并不是那种使人们失去资格的面试官,因为他们不知道流行语和首字母缩写词。但是,我确实希望有经验的C ++程序员能够内部化资源管理的良好实践,这是合理的。我还认为,在继续进行有关设计,解决问题等更有趣的问题之前,验证候选人是否了解他们声称拥有专业技能的技术的“基础知识”非常重要。提出一个适用于简短电话筛选的开放式问题,在我提出“困难”问题之前,我可以用它来判断候选人对C ++中良好资源管理实践的基本理解。


3
“即使我认识的几个C ++开发人员也足以判断他们的能力,他们说他们不认识这个词”。好的。“那么,“您能给我解释RAII的习惯吗?”是一个公平的筛选问题吗?” 为什么这么问?您找不到知道这一点的人。您还需要知道什么还不知道?也许您应该淡化这个主题(因为您已经知道答案了),而专注于“是否有更好的替代“除草剂”问题”,这可能很有趣。除了那是点子出炉的意见,人们对此不太满意。
S.Lott

9
习惯用法会改变,好的习惯不会改变。与其问一个特定的习惯用法,不如问一个简单的问题:“在设计类时要采取什么步骤来确保它不会泄漏?”
Blrfl 2011年

足够公平,尽管我的样本量很小,并且我不再积极参与C ++社区,所以我不知道这些天社区认为什么是基本知识。我本质上是在尝试找出如何扩展我的问题清单,这些问题清单可用于判断真正的C ++知识,例如语法基础。
JasonTrue 2011年

2
你的问题不是我所期望的。我以为您会找到一个知道RAII是什么,被录用的人,直到后来您才发现他们仍然很讨厌编码。
凯文

1
@JasonTrue:我认为嘶嘶声嗡嗡声问题应该是诸如反转字符串之类的实际编程问题。但是无论如何,我认为这是一个很好的问题。您还可以考虑询问受访者认为c ++-0x中哪些功能最令人兴奋或最重要。这有点困难,但是如果您得到一个好的答案,那可能意味着好事。如果您茫然无措,问题总是可以归结为:“什么增强库最重要/最有趣”。
凯文

Answers:


24

您似乎已经发现,从经验中了解到的C ++开发人员胜任该缩略词甚至完整的表达。仅此一点似乎表明该问题不适合作为电话中的筛选问题。

另一方面,通过摆出场景,您可以通过更round回的方式到达同一点。诸如此类:“您正在实现一个Log类,该类将日志记录信息写入文件。显然,您将需要具有一个作为文件句柄的成员变量(std :: FILE *)。在哪里分配和释放该文件处理?” 如果考生开始谈论创建open()和close()方法,而不是在构造函数中分配文件句柄并在析构函数中释放句柄,则可以通过询问诸如此类的行为来跟进,如果调用代码引发异常等


一个很好的建议。我喜欢这种方法。
JasonTrue 2011年

在电话采访中花费了太多时间。
HelloWorld '09

15

我认为这不是一个实际的问题。我认为您会发现很多开发人员都会加入“哦,是的,我不知道有个名字”阵营。我建议您在概念上而不是概念名称上测试候选人。给他们一个代码示例,并询问为什么它不完整或让他们证明他们知道这个概念。


3

我认为这是一个有效的问题。尽管我不知道RAII术语的流行程度(在我们的团队中,我们一直都使用RAII术语),但是资源处理的概念非常重要,尤其是在您还希望异常安全和多线程安全的情况下。


3

好吧,我知道,当我想知道某人是否称职时,我要做的第一件事就是检查他们对缩略语的了解。一旦建立,我确保他们知道我认为很酷的其他技术的名称。如果之后他们仍然在那里,那么我请他们提供他们最喜欢的颜色的列表。

我受不了这种事情。我的意思是,在访谈结束时,这是警报器和警钟。我不想在一个真正重要的地方工作,我知道老板认为这是“基本的”奇异的助记符。我不必费心去学习多年来与我打交道的人的名字,所以我敢肯定,地狱不会用描述最佳实践的可爱缩写来浪费大脑空间。

看我的代码。问我怎么做。我将废话涂在白板上,直到奶牛回家。我会为您编写一个应用程序。不要给我废话琐事问题。琐事总是命中注定或遗漏,而且从来都不是根本。


在筛选面试中,我通常不会问很多深奥的知识问题,但是我希望做一些尽职调查,以确保某人不会完全不称职。因此,我正在寻找一个开放式的问题,该问题可以让我验证一定程度的知识,同时让候选人展示自己的背景。如果有人说他们在简历中知道技术X,我期望“一些”直接的知识;我的问题归结为,我对C ++程序员应该有什么知识,而C ++程序员是进行进一步对话的有用途径?
JasonTrue 2011年

4
@jason:好吧,我可能会记住几个月的RAII缩写。即使我多年没有接触过C ++,这些短暂的知识也会使我胜任吗?真是琐碎的琐事。询问他们如何处理锁,并确保他们了解实际的知识,而不是奇怪的缩写。
Satanicpuppy 2011年

1
@杰森:我同意。我只是不同意这些基本知识。一个白痴可能知道,而专家可能不知道。您的选择过程基于与技能无关的东西。
Satanicpuppy 2011年

5
知道RAII叫什么不是必需的知识。但是自动达到模式是。
btilly 2011年

2
RAII是优质C ++的基本概念,这个术语已经存在至少20年了。我认为将其视为琐事是不公平的。尽管您可以拥有不知道该术语的优秀C ++开发人员,但对我来说,它却散发出一些未研究其技术的人的气味。
Kaz Dragon 2014年

1

如果您的目的是快速筛选出全部不称职的人,请尝试以下操作:

FizzBu​​zz测试

然后,您可以将C ++概念和实践留给更适合评估C ++专业知识的人员。


1
我经常使用并收到这个问题,并在上​​面的评论中提到了此问题,但是在25分钟的电话交谈中,我觉得提出这个问题很尴尬。
JasonTrue 2011年

0

这是一个有效的问题,但不是筛选。我将其用作书面问题,将在面试时进行讨论。提前通知,您可以对思维模式有很多了解。作为筛选问题,这只是一个令人讨厌的陷阱。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.