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




  

相关话题

  C语言 乘以0.01快?还是除以100快? 
  GPU 与 CPU 比较,为什么说 GPU 更适合深度学习? 
  国内Java面试总是问StringBuffer,StringBuilder区别是啥?档次为什么这么低? 
  如何看待全球超级计算机 TOP 500 榜单日本登顶,中国跌出前三?近年中国超算发展现状如何? 
  没有程序员觉得高单侧覆盖率完全就是在浪费生命和宝贵的时间吗?程序员最卷最没用的就是为了覆盖率而写单侧? 
  为什么技术总是被轻视?国内做技术能不能有较大发展? 
  如何看待腾讯发布第三季度财报,员工突破 10 万人,人均月薪为 8.06 万元?互联网工资这么高? 
  如何评价Linus Torvalds编写的LINUX内核的技术含量? 
  如何看待又一位深圳 24 岁程序员倒在工位上?是否程序员下班晚、加班多成了常态? 
  如何看待 IBM 宣布成功研制 50 量子比特量子计算机原型机? 

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





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