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




  

相关话题

  计算机系统是如何显示一个字符的? 
  如何看待 2022 年秋招算法岗竞争如此激烈? 
  有哪些IT初学者(新人)成长为技术大牛的真实经历? 
  如果编程语言有性别?Java、C++、C、C#是男是女?是GAY还是LES? 
  C++为何不允许在函数中直接传递数组? 
  JVM 常量池中存储的是对象还是引用呢? 
  程序员是怎么度过 1024 程序员节的? 
  为什么我面试时什么都答不上也被HR录用实习了? 
  为什么在面试时爽约成为一种越来越普遍的现象了? 
  为什么很少看到计算机类专业学生或者程序员进入《最强大脑》? 

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





© 2025-01-23 - tinynew.org. All Rights Reserved.
© 2025-01-23 - tinynew.org. 保留所有权利