百科问答小站 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也可以,代码可以比较优雅,而且难度不大。




  

相关话题

  面试时有没有遇到很恶心的公司? 
  带一堆指针的链式结构怎么写才好? 
  为什么有些 95 后面试不带简历? 
  程序员如何在每年出现的 framework、library 等等一些新技术推出的时候,让自己不落伍? 
  你们觉得长沙未来发展怎么样? 
  Borland 是间什么样的公司 他给我们留下了什么文化遗产? 
  面向对象编程的弊端是什么? 
  为什么别选计算机专业? 
  你在读程序的过程中见到过哪些令人难忘的变量命名或者函数函数命名? 
  公司是否能够亦或是否有权截获员工在公司电脑使用https访问网站的内容?如何实现? 

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





© 2025-04-24 - tinynew.org. All Rights Reserved.
© 2025-04-24 - tinynew.org. 保留所有权利