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

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 条回复
justou
2019-07-19 09:35:30 +08:00
@Actrace 是以完成编程任务为导向来的, 当初制定的路线大概是这样的:
1. 写一个程序来统计这个程序的词频 (其实就是任意文本文件的词频), 限定在 ascii 里面;
2. 制作静态库, 将上面的函数作为库函数;
3. 写一个类来实现相同的功能, 使用上面那个库, 增加了一些接口, 比如可以查询 top n;
4. 制作动态库, 重新设计接口, 使其能在 C 中调用;
5. 还是统计词频, 不过目标是指定路径下所有指定后缀的文件;
6. 用多线程来完成 5, 一个线程读文件, 多个线程统计, 最后合并结果
7. 强行用 Qt 加个界面吧

虽是为了深入学习故意设置的牵强任务, 但每个任务都可以辐射出大量专题, 两个月这个路线他只走到 3, 要完成后面的需要学的东西太多了, 但感觉他只是为了完成任务, 并没有在涉及到的专题上深究, 这与我的初衷完全背道而驰了╥﹏╥
raysonlu
2019-07-19 09:36:47 +08:00
所以你为什么还离职
justou
2019-07-19 09:38:44 +08:00
@raysonlu 去更合适自己发展的地方
sinopec
2019-07-19 09:52:49 +08:00
虽然一直都是 C++主语言,楼主的题也不难,但是还是要说 C++真 tmd 的事儿多,早日脱坑早日爽。
belin520
2019-07-19 09:54:52 +08:00
@Actrace #126 都行了差不多 5000 里的路了,起码还是要补一下 3000 卷的书吧?
wuweijia
2019-07-19 10:16:20 +08:00
一看就会,一问就跪系列
564425833
2019-07-19 10:16:20 +08:00
楼主真的好,我要是能一入职遇到这样的师傅,真是做梦笑醒。
nealwx
2019-07-19 10:28:52 +08:00
我跟你讲,我用 return strdup 但不去 free 的,写的代码各种内存泄漏。
nealwx
2019-07-19 10:29:17 +08:00
@nealwx 我用->我遇到过
947211232
2019-07-19 10:34:53 +08:00
楼主,记得你女装,但还想看你女装
icefrogisgreat
2019-07-19 10:36:11 +08:00
那个新人可能过段时间会发现他曾今遇到过天使,可是他没发现
justou
2019-07-19 10:39:42 +08:00
@947211232 黑历史别提了, 至今不敢问综合部的要视频来看
Actrace
2019-07-19 10:49:49 +08:00
@justou 不知道你有没有发现,其实很多项目做到最后用的东西,频率最高的那些部分,其实只用到了编程语言的一部分,大部分都是没用的。
wildlynx
2019-07-19 10:53:15 +08:00
楼主公司是做什么的,很少看到用 Qt 开发的大公司了。金山算一个
dbpe
2019-07-19 10:56:53 +08:00
求大佬的学习的方式。。。我是一个笨鸟。。。常常。。先飞了。。但是不行。。我也觉得是我学习方法有问题。。但是却又不知道在哪里
lzynb
2019-07-19 10:57:27 +08:00
楼主好人,但对一个新人来说确实有点难度
justou
2019-07-19 11:23:31 +08:00
@Actrace 虽然单个项目用到的东西可能比较集中, 尤其是一些为了解决具体问题的项目, 如果设计的问题比较广, 用到的东西就比较广了, 其实从我开始编程以来, 用到最多的东西就几个方面: 数值计算的工具, 画图工具, 图像处理工具, 界面工具, 文件管理


@wildlynx 前面我放了个公司链接, 小公司, 这个 Qt 项目在我之前的同事用的 MFC 写的, 写得超级乱, 可维护性≈0, 全局变量一串一串的, 运行效率超低, 各种跑丢数据, 他自己改程序都改得吐(是真的吐了, 程序要在车上调试, 跑起来调), 我接手后他说: 你用 Qt 重新写一个吧!(啊, 说到我心里去了), 理清需求后就用 Qt 重写了. 其实他并不擅长写程序, 能写出来真是难为他了.
guoyuchuan
2019-07-19 12:04:26 +08:00
原来大佬是重庆的
guoyuchuan
2019-07-19 12:04:45 +08:00
公司链接进不去
ninjachen
2019-07-19 12:23:18 +08:00
居然还有答案,楼主好人

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

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

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

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

© 2021 V2EX