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




  

相关话题

  为什么ipconfig和浏览器查询出的ip不一样? 
  如果面试官问你如果没被录取怎么办要怎么回答? 
  在中国,有多少程序员干到40了?那么其他人去干什么了? 
  Java 集合类库的顶层里的 Collection,List,Set 是抽象类的话是否更“正确”一些? 
  如何看待互联网大厂程序员因厌恶编程,辞去月薪2w+的工作去当司机? 
  Python如何调用一个py文件并输出部分行内容? 
  感觉算法在程序员中快被吹上天了,如果只是搞编程的话,是不是没必要死磕算法? 
  如何看待 Github 对美制裁国家的账号进行限制这一行为? 
  程序员反感(讨厌、不喜欢)什么? 
  一个程序员多年累计编写一百万行代码是什么体验? 

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





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