C ++是软件工程面试的好语言吗?

那么,采访不是在真空中进行的。 面试官可能希望将其雇主使用的技术整合到面试过程中。 受访者可能会从未来雇主的家庭作业中获益并做出相应的回答。

也就是说,C ++是一种繁荣的语言,具有广泛的应用程序。 因此,有很多机会可以采访需要C ++熟练程度的就业。

Titus Winters(谷歌图书馆基础设施和C ++活跃委员会成员)将“软件工程”定义为“随时间推移集成的编程”。 C ++经常成为最终跨越数十年的大型项目的首选中心语言:在这样的规模上,“软件工程”的观点确实很重要,这是另一个支持C ++成为软件工程访谈的坚实语言的论据(其中“软件工程” “是一种更具体的解释。”

根据我的经验,C / C ++是SW采访的一种非常好的语言。 这就是为什么:

  1. 它“接近硬件” – 通过提出正确的问题,很容易理解“事情如何工作”(而不仅仅是语言知识)。
  2. 它支持多范式编程 – 在单个白板会话中,您可以访问OO,Functional,Generic,…的知识/理解。
  3. 对特定平台(Windows,Linux等)的了解也很容易检查。
  4. 它是您不断进步的语言之一 – 您仍然可以分辨出10年的经验和5年的经验。

这取决于你想要测试的内容。

我的经验是,例如在算法方面,Python更简洁地表达算法思想并在简单的白板上进行测试。 此外,Python(或C#)中的一些构造类似于生成器,它们允许您动态操作任何类型的输入数据。 试着用C ++迭代器做到这一点。

不要误会我的意思,我喜欢C ++并且从1996年开始使用它,但我在采访中的经验是,事情发展得更慢,更容易出错。

另一方面,如果您正在寻找在高性能或硬件环境附近工作的候选者,那么Python,Ruby甚至内置垃圾收集语言等语言可能是次优选择。 此时,您不仅对测试候选人如何开发算法感兴趣,而且了解底层硬件或关心资源分配,初始化或使用,并且知道安全的编程习惯,如RAII或此处列出的其他内容:更多C ++成语 – 维基教科书,为开放世界打开书籍,避免像对象切片等错误。

我通常会考虑我想问的问题,我对候选人和候选人未来工作环境的时间框架。 比我去白板并尝试自己解决面试问题。 看看我有多快,是否有任何编译或解释器错误,以及程序是否做了它需要做的事情。 然后我知道我可以期待什么以及陷阱在哪里。

尝试抓住LeetCode中的任何简单问题并使用不同语言编写代码。 首先使用简单的(如Python或Ruby)来了解解决方案的速度。 然后考虑解决方案的想法尝试用C ++编写代码并测量只编写C ++代码的时间。

不。事实上,我认为任何编程语言都不适合SW Eng采访。

问问自己为什么要专注于一种编程语言。 我没有在30年内看到一种新的(和有用的)语言,这对于一个有能力的SW开发人员来说并不是一件容易的事。 当然,可能会有一些不明显的语法或语义技巧,但那又如何呢? 无论如何,这些功能很少是必需的。

在接受采访时,您正在寻找以下内容:

  1. 候选人是否适合您的工作环境?
  2. 他们一般都能胜任这项工作吗?
  3. 他们的工作之外是否有兴趣?

我想到提出一些问题来建立基本能力。 这可以在几个问题中相当容易地建立,或者向他们询问他们在过去的工作中解决的非常酷的问题。 (或者如果他们是新毕业生的课程)

根据我的经验,提出一个问题,并要求他们用一种或另一种语言来解决它不会帮助你找到一个更好的候选人。 事实上,在聘请了解C ++书中每一个技巧的候选人之前,我会雇用那些不懂C ++而且非常适合我的组织的候选人,但我认为他们不会很好适合。

绝对。 假设您的面试官允许您在面试中使用您想要的任何语言,就像在许多情况下一样。 C ++有许多应用程序,几乎任何东西都可以用C ++制作(并且已经制作完成)。

一定要好好准备。 练习C ++面试问题可以提供帮助。 您也可以事先询问面试中的预期。 许多公司对他们的面试过程都足够透明,并会让您知道会发生什么,以便您做好准备。