百科问答小站 logo
百科问答小站 font logo



你遇到过哪些高质量的 C++ 面试? 第1页

  

user avatar   gu-yuan-91-31 网友的相关建议: 
      

只适用于Linux c/c++后台开发的职位,不适用于算法职位,不适用于图形职位:

我出的题就是给40分钟,当场用c++写一个线程池框架(可以自己用list/queue实现也可以用conditional variable,方法任选),以及必要的test code。代码风格如何、多线程操作的怎么样、c++面向对象建模和多态掌握如何、单元测试水准如何,全部都能考察出来了。

写完之后逐行代码检验并做点评,并且引申出额外问题,例如有何思路做CPU之间的负载调度、做异步编程接下来如何做反应、非阻塞线程的拓展思路、非阻塞线程和可阻塞线程之间死锁关系,等等,从中可以去看面试者的编程经验。


这两年遇见过各种各样的面试者,能顺顺利利过关的寥寥无几。有把线程池定义的很奇怪的,有不会c++只会c但写不出回调函数的,有理解不了线程池框架含义的,有用c++11和模板做静态线程池框架的(大量用到lambda、promise、future、bind、function,看得我很崩溃,框架实用性太差,纯属炫技),有多线程写的好但框架设计的实在糟糕的,有整体答的很不错但加锁方面疏漏严重的。总之是百花齐放。

关于题目的通用性,可能会遇到没接触过线程池的同学,这个时候是需要通过拆解需求来逐步引导的,额外增加10~15分钟和面试者沟通需求的时间。这个时候顺带可以考察面试者的沟通,如果实现出来的不能满足需求(有些需求是在引导的过程中临时想到而要求的,例如不要做成编译期的多态,但是就有人跟需求对着干),通常在别的工程师和经理讨论最终offer人选的时候得到的反馈也是沟通性不好,评论区有我和诸多大神的详细讨论,供参考。

关于c11的更新及一些看法:

我个人不排斥c11的语法和编程模式,只不过用async, future, promise实现线程池天然就会有一些困难,面试时根据潜在的、百变的需求,很难应对。lambda亦如此。在线程非池化的场景下会更简单,在大量需要策略来调度的高级功能的线程池里面就会比较难用,即使是用于实现基础版本,如果不是母语的熟悉程度,40分钟内实现出来的难度远超古董级的c++多态或c的函数指针。

如果不使用多态来定义线程池框架,用bind+function也可以,代码可以比较优雅,而且难度不大。




  

相关话题

  为何不创造实体价值的人反而收入更高? 
  程序员这种职业理论上完全可以在家写程序,开会视频会议,为什么还要每天挤地铁去公司? 
  x86的8和6分别指什么? 
  在编程语言中,循环语句为何选择 while 而不是 when 作为关键词? 
  台湾一公司停电后程序员用纸笔手写代码,作为一名程序员,你有过哪些神奇的工作经历? 
  对于初入职场的程序员, 读书 读好的代码 造轮子 哪个更重要? 
  「贝塞尔曲线」有哪些作用和特点,该如何正确使用? 
  请问各位程序员,是我的思维方式有错误吗? 
  共用体只能同时储存一个值吗? 
  在大学里学的是建筑行业, 但是想先自学然后转行IT 我想问我现在该怎么做,从哪里开始? 

前一个讨论
如何看待小米 9 起步价 2999 元?
下一个讨论
有哪些一眼难忘的视频?





© 2024-11-23 - tinynew.org. All Rights Reserved.
© 2024-11-23 - tinynew.org. 保留所有权利