我对C ++的技术评估有什么期望?[关闭]


10

我被要求去进行技术测试/评估,以作为初级开发人员的工作,主要使用C ++。这是我的第一次测试/评估,时间长达2小时。

我的C ++有点生锈,因为我最近一直在用PHP进行项目。

这是一家英国公司,但是我猜对候选人的技术测试到处都差不多。

在这些测试之一中,我应该期待什么?


1
这个问题是PHP,但答案适用于:programmers.stackexchange.com/questions/73654/...
埃里克·威尔逊

Answers:


5

它是C ++,所以您可以期待任何东西,我的意思是任何东西。

通常涉及技巧问题和某种多态性问题。

但是也可能很简单。

准备回答诸如“为什么要虚拟化析构函数”,什么是“易失性”,“为某些不现实的问题设计类”,“实现链表”,“反向字符串”等问题。


我将添加“ mutable关键字的用途是什么?” 到任何类别。
汤姆(Tom)

5

如果这是纯C ++测试(即不是 Windows / MFC / Managed C ++测试),那么花数小时或一天的时间来学习Scott Meyer的Effective C ++,您应该做得很好。它没有涵盖模板和STL,但是如果他们对此感兴趣,他们可能不会给您两个小时的测试。已经有好几年了,但是我以前经常采访C ++开发人员。尽管有效C ++中的思想对于C ++编程至关重要,但只有大约百分之十的候选人知道它们。


1
+1推荐书-跳过Scott Meyer的《更有效的C ++书》。当我以前去采访程序员时,我也会考虑知识上的诚实(您尝试虚张声势还是承认自己不知道),您知道不知道的内容以及您在哪里可以找到答案。(如果要采访自称使用C ++的人,那么问题会难得多)。如果您的简历中没有任何其他语言可以建议您使用其他语言来编程,那么我也将要求您编写一个简单的程序,并查看您是否正确地涵盖了最关键的情况。
MZB 2011年

我是计算机专业的毕业生,我被教过如何在C ++中的控制台中做程序,还被教给我如何实现二进制排序树和双链表等。然后我们还在那里接受了有关抽象类,继承和多态的教导,但不是如何实施它们。工作职位是给毕业生的,所以我不知道他们对我的期望,因为我没有C ++的实际工作经验。
bearbread 2011年

4

好吧,这取决于是否允许他们使用Google。:P

只要可以使用我周围的工具,我通常会在技术测试中表现出色。当他们遇到麻烦时,他们希望我对代码进行盲目处理。因此,我能为您提供的最佳建议是在家中对代码盲目……请确保您记住我们认为理所当然的琐碎内容,因为如果我们不记得,我们可以轻松地对其进行检查。

此外,通常会检查他们需要的特定技能,因此,如果您知道自己将从事什么工作,那就专心于此。

(根据我的一般经验,我不是来自英国)


那么理论,多态性,继承性呢?我只是从毕业就知道这一理论,但我不知道如何在C ++中实现它
bearbread 2011年

它们的实现并不难,您可以非常快速地对其进行审查。重要的部分是知道什么时候适合使用它们,何时需要它。它们更是一种功能模式,而不是实际的先决条件。我的意思是,您无需使用它们就可以脱身,但如果需要的话,希望您知道它们。
AJC

@bearbread:理论本身并没有多大价值。了解有关设计模式并尝试实现它们的信息。
Karoly Horvath'9

我知道MVC for PHP等设计模式,这是您的意思吗?
bearbread 2011年

1

练习代码kata选择一个简单的算法(环形缓冲区,河内塔,二进制搜索等)并从头开始对其进行编码。然后在下一次,下一次,下一次和下一次再次执行此操作,依此类推。看一下如何在每次迭代中改进它们。


1
+1。也可以和经验丰富的朋友一起做。轮流编程,你们都会学到新东西。
汤姆(Tom)

0

的确,您可以期待任何事情。

他们告诉您测试是C ++,但也许实际上是他们在测试中使用的C ++的C子集(您将使用char数组而不是标准库字符串)。这将很难知道。

如果真的是C ++,我建议您看一下基本知识:

  • 类,变量,数组
  • 引用,指针(以及为什么默认情况下不应该使用它们)
  • const关键字的用法
  • 面向对象的概念(继承,多态……)
  • 范本

然后:

  • 标准库用法(std :: string,std :: vector,容器等)

0

到目前为止,已发布的内容很棒,但我会添加一些内容和一个故事!我想说的是将您在C ++中了解的知识应用于软件公司领域的问题。如果您了解C ++的所有知识,那太好了,但是如果您不能解决问题,那么对公司毫无用处。鉴于这是一个初级开发人员职位,所以我认为他们不会期望您了解有关C ++的所有知识。

上周,我为我的第一个开发人员工作进行了第一次技术测试,并对发现的结果感到惊讶。我原本期望像FizzBu​​zz之类的东西或更精巧的东西(这是Java的,顺便说一句),但是我发现他们给了我一个文件,然后让我解析为一种新格式,这就是工作的一部分。最重要的是,他们让我使用Google及其自己的库。最重要的是,您需要了解C ++,但是如果您想知道测试的样子,请查看您所申请职位的领域,并致力于对该领域中的某些事物实施C ++。


我猜想不到1%的C ++程序员会了解所有语言:)仅以所有未定义/未指定/实现定义的行为的情况为例。

0

你是:

  1. 编写代码
  2. 采取多项选择
  3. 面试

编写代码时

他们希望您知道(并使用):

  • 区域情报研究所
  • 三法则
  • 了解智能指针

他们可能会在以下方面对您进行测试:

  • 遗产
  • 虚拟功能
  • 到/从流序列化
  • 重载算术运算符(在现实生活中不经常使用,但易于编写测试)。

如果您不幸,他们可能会认为

  • 您应该了解多重继承和虚拟基类。
    • 它不是,而是有些人疯了。

当选择多项

  • 了解所有OO术语
  • 了解实现OO的C ++方法

面试

  • 以上全部。
  • 递归知识
  • 如何将递归转换为循环
  • 如何估算大O()复杂度
  • 标准的排序算法(不仅是气泡)。

1
我是C程序员,而不是C ++程序员,所以我不知道这个话题...但是我从未听说过RIAA和三定律。但是,我听说过RAII(资源获取是初始化,即您的析构函数应清除其自身的混乱情况),而且我确实知道,如果您的代码需要复制ctr,重载赋值运算符或析构函数,则它需要全部三个。在我看来,面试对编程programming语很琐碎,而不是对您的技能的考验,这对公司来说是不好的。

1
同样,如果他们询问多重继承和递归,我会认为他们的代码库是一团糟。如果他们希望您突然了解所有常见的排序算法,如何进行递归展开,对象序列化等,那么这对公司也有不利的影响。他们难道不希望他们的开发者成为机器人吗?在现实世界中,您在使用它们之前先进行查找。即使我确实了解所有这些事情背后的理论,我仍然会仔细检查它们,只是为了确保我使用的是最佳解决方案,而不是某物,所以我想到了自己。

@Lundin:您不需要知道柔滑的名称,但是您确实需要了解原理,在这里提及它们可以很容易地查找它们。您需要了解排序算法,因为您需要知道使用哪种算法以及何时使用(更重要的是为什么使用)(机器人无法完成的事情,而人类却可以做到)。
马丁·约克

递归或多重继承没有内在的错误。问题是开发人员过度使用了它(并且做得不正确)。使用递归(首先解析树结构深度)只能(轻松)解决某些问题。
马丁·约克


-1

我上次面试了:

通过值/引用/指针将对象传递给函数以及执行操作的位置和原因之间的区别。

将整数的后2个8位交换,例如RGBA到RGAB。

什么是RIAA?

定义模板元编程:您可能会遇到“用TMP解决此问题”的问题。

什么是mutable,volatile,const等等等意思?知道所有关键字。

多重继承...一次又一次。

多线程:生产者使用者和缓冲的共享内存对象。

其他一些外围问题:

UML聚合和组合

设计模式:实现单例... MVC的常见组件是什么?

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.