新同事的考核, 一题也不会

2019-07-18 13:22:16 +08:00
 justou

因为要离开现公司, 两个月前招到一个来接替我的小伙子, 此子只用过 C, 做了半年嵌入式, 我对他进行了两个月的 C++培训, 带着他看 C++ primer 这本书(这本书既厚又杂,想着有我帮着梳理的话亦可事半功倍, 感觉这本书不太好, 但是又没找到可替代的又是中文版的 C++入门书), 让他完成一些编程任务, 帮他 debug 并解惑, 更多的是解释原理: 为什么是这样的.

现在到考核期了, 公司要求用英文出题考核他, 题如下:

C++ Questions

Single Choice

(3 points each, 15 points total)

  1. Which one of the following C++ codes is correct C++11 expression?

    • [ ] A. const int i{3.14};
    • [ ] B. int & i = 233;
    • [ ] C. const int& i{3.14};
    • [ ] D. constexpr double pi{3.14};
  2. which one of the following is valid lambda expression usage?

    • [ ] A.

      int i = 10;
      auto f = [](){ return i+1;};
      f();
      
    • [ ] B.

      int i = 10;
      auto f = [](int i){ return i+1;};
      f();
      
    • [ ] C.

      int i = 10;
      auto f = []{ return i+1;};
      f();
      
    • [ ] D.

      int i = 10;
      auto f = [i]{ return i+1;};
      f();
      
  3. What does public inheritance mean?

    • [ ] A. Implementation details
    • [ ] B. Private interfaces
    • [ ] C. Composition
    • [ ] D. Is-a relationship
  4. What does private inheritance mean?

    • [ ] A. Implementation details

    • [ ] B. Private interfaces

    • [ ] C. Composition

    • [ ] D. Is-a relationship

  5. Suppose we have two classes(both with default constructors): class Base{...};, class Derived: public Base {...};, which one of the following usage is correct?

    • [ ] A. Derived* d = new Base;
    • [ ] B. Derived* d = new Base{};
    • [ ] C. std::unique_ptr<Base> ptr = std::make_unique<Derived>();
    • [ ] D. std::unique_ptr<Derived> ptr = std::unique_ptr<Derived>(new Base);

Answer the following questions

(5 points each, 25 points total)

  1. Use range for syntax to add 10 to each elements of the following vector:

    auto numbers = std::vector<int>{1, 2, 3, 4, 5};

    
    
  2. Use std::for_each to answer the previous question.

    
    
  3. Suppose Buffer* create_buffer() is some library function to allocate resources, and bool release_buffer(Buffer* buffer) is the counterpart to free the allocated resources, use std::unique_ptr to manage the resources.(hint: when the std::unique_ptr object is out of scope, the allocated resources are automatically released.)

    
    
  4. Suppose class Object must have a copy constructor, a copy assign operator, a move constructor, a move assign operator and a destructor, write down their signatures .

    
    
  5. RAII is a key C++ programming technique, write down your understanding of RAII (not the literal meaning)

    
    

我参考当初他问过的问题以及给他的解答出的, 当然考核只是个形式, 所以我直接把题给他先看看, 让他先尝试着做, 结果一题不会! 苦口婆心两个月 == 0.

有一些想法:

  1. 想 21 天精通 C++, 得参考某张漫画里面来, 一时找不到图了, 就是最后发明时光机穿越回到学 C++第 21 天, 然后捅死自己那张漫画;
  2. 新同事学习方法很有问题, 每次我跟他讲一些原理的时候让他记一下, 他说这个很显然啊, 没必要记, 然后下次问他相同问题, 对方回答无非是"搞忘了", "你跟我讲过这个吗?" ,根本带不动!
  3. 不梳理知识, 只在书里面随便勾勾画画, 当然这本书等于没看;
  4. 题可能出得太难了, 不适合 C++初学者, 但是平时这些主题讲得特别多, 现在看来对方的"嗯嗯, 理解了"明显是在敷衍我了, 其实那根本是在敷衍自己;
  5. 英文太差, 其实一开始题都没读懂, 我一个个地解释了一遍, 还是不会做;
  6. 搜索引擎对他来讲是摆设.
  7. 人不笨, 但是思维方式已经出现严重问题了, 想甩锅给他之前受过的应试教育. 平时给他讲了很多学习方法跟思考方式, 估计也早成耳边风了.

考核肯定是过不了的了, 最后估计会留在公司打杂, 因为最近又招了个新的人, 还没来报道, 看简历是个硕士, 虽然没写过 C++, 但会 python 跟 java, 在学校也搞过正儿八经的研究. 这个带起来应该能很快起飞, 但已经等不到了, 今天是在该公司的最后一天, 只能祝福着这位"带不动同事", 平静地离开了.

20488 次点击
所在节点    程序员
173 条回复
nmgwddj
2019-07-18 21:37:12 +08:00
学习了,尤其是第三题那个私有继承的解释。如果有一些编程经验,21 天精通 C++03 我认为是可能的(前 10 天 C,后面 15 天 C++,剩下 5 天例子),C++0x 就算了。但前提是你要有个好老师。
stevexu
2019-07-18 23:44:17 +08:00
楼主威武
20015jjw
2019-07-19 00:07:08 +08:00
这个题目里很多语法错误..
justou
2019-07-19 01:03:02 +08:00
@Raisu 嗯, 普通的 markdown, 发现这里并不支持任务列表的语法 - [ ]

@a566 北京鸭梨大, 而且担心空气质量, 有鼻炎, 想换个环境稍微好点的城市, wife 也想去深圳广州

@nvioue 唔嗯...怎么讲呢, 其实没啥语法糖呀, 都是现代 C++里最常见的东西了

@20015jjw 语法错误是不少, 错误选项里面, 就是为了考察基础知识掌握情况
Mirana
2019-07-19 01:06:06 +08:00
这种题太无聊了
Actrace
2019-07-19 01:28:53 +08:00
歪个楼,读万卷书不如行万里路。
如果没有项目去做,学东西基本都是很低效的。
Actrace
2019-07-19 01:30:38 +08:00
现在很多编程语言都喜欢大量语法糖,我觉得其实有点本末倒置了。
好用的东西本身应该是简单的,语法糖太多反而会导致消化不良。
20015jjw
2019-07-19 02:53:48 +08:00
@justou 我说的是英语语法..
yuikns
2019-07-19 03:33:02 +08:00
其实题目还好。不过我盲猜楼主教一个有些 C 经验的人过多的理论知识,以至于对方眼中是
熟悉的熟悉的熟悉的啥熟悉的熟悉的熟悉的熟悉的熟悉的
这种状态。
该了解的被隐藏在很多熟悉的细节中。感觉这并不是很好的方法。
另外,强行 ==0 我觉得人家可能也是不太服气的,至少现在写出 0 bug 大师那种代码应该还是可以的吧。

当年我学 Scala 也是这状态,看了大半个月的 Scala 感觉晕乎乎的,感觉不能这么玩了,于是重新扫一遍目录 index 一下入口,然后直接自己想了点需求实现了几个玩具。貌似当时是给我的 alfred 写的自用功能,各种炫技想办法让自己看到的东西都实现一下。一周多感觉脑子就比较清楚了,再理理思路一两天重新看一遍书,直接上马工程。
la1850
2019-07-19 04:40:09 +08:00
没学过 c++,选择题都猜对 4 题,有编程基础学个 21 天做个 30 分问题应该不大吧。
maple
2019-07-19 04:44:12 +08:00
楼主带我吧 可能更有成就感一些 英语完全没有问题 学过 python Java,人生第一次接触 c++是上 python 前老师给了 c++的入门测试题过了。然而完全不懂~
lovestudykid
2019-07-19 05:15:07 +08:00
什么都不会也可以找工作吗,还老员工手把手教,求这么好的工作。
Poko
2019-07-19 06:56:11 +08:00
楼主好人,带带我吧
lisicong
2019-07-19 07:33:23 +08:00
什么公司?在哪里?楼主来招我进去啊,两个月时间,绝对给你一个船新的体验😀
lawse
2019-07-19 07:35:59 +08:00
现在可以回复了吗
keymao
2019-07-19 08:25:45 +08:00
cpp 就这样能找个人过来坐着学都挺难得。。。
gaoan000
2019-07-19 08:42:37 +08:00
最怕的就是普通人得了聪明人的懒病
justou
2019-07-19 09:05:35 +08:00
@20015jjw 嘿嘿, 我平时看英语比较多, 听说写都比较鸡肋, 估计有些 chinglish, 烦请指正一下;

@yuikns 其实出现这种结果后我也在反思, 一开始定的要求太高了, 招进来, 要两个月内带他熟悉 C++, 熟练使用 opencv, 熟练 Qt...当时一听我也是一时语噻, 最后说了句: 给两年时间也许能行. 现在他也算有个 C++入门了, 各方面的东西都了解了一下, 以后多写多看就行了
weichengwu
2019-07-19 09:15:25 +08:00
歪个楼,V 站居然不支持 markdown 的 `- [ ]` 语法
pb941129
2019-07-19 09:16:47 +08:00
收藏了收藏了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/584098

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX