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



如果你是一个C++面试官,你会问哪些问题? 第1页

  

user avatar   patronumme 网友的相关建议: 
      

我们组是C++深度用户,所以我在面试候选人的时候当然是以C++为主。简单说一下我的一些经验,供人参考。

首先要知道即使是我作为面试官也不可能知道全部C++知识,哪怕你是标准委员会的成员也不敢说C++我全都了解了,所以在面试的时候我肯定不会以某一点边角料的知识你知不知道作为考点。这点不知道那我就换一点,总有一些你深入研究过的,我们可以在此基础上展开愉快的讨论。

基础知识就是类,成员函数,虚函数,构造析构,内存管理,标准库等等,至少怎么用你得明白,这些要是不明白那拜拜了。其他的比方说成员函数指针不知道,虚表不知道,或者placement new不知道(感谢@kusugawa指正),那没关系,工作中用到的不多,需要了现学现用呗。

但是我们面试最重要的一个指标是:确保这个人招进来以后"现学"能够"现用"。比方说你这好几块内容不太清楚,但是有一块内容特别清楚,比如范型编程,你用的特别多,有哪些坑碰到过,语言的设计原则,有什么应用,明显不是靠突击强化学习就能掌握的,我就会觉得你确实是深入研究过的,掌握其他的内容也完全没有问题。

再比如你虽然现在知道的不多,但是我稍微提示一下,你就马上明白了,而且基于刚刚获得的知识立刻有了进一步的想法(推论,或者新问题)。比如我一说thunk函数马上能联想到到多继承和this指针调整。我也认为你是一直在思考这方面的问题的,只不过之前的工作经验没有给你解决这些疑问的机会,那这种人我们也会优先考虑。

在C++面试的内容上,我鼓励面试者在平时多了解和积累以下内容:

  • 构造析构顺序
  • 虚表以及和构造的关系
  • 虚函数实现,成员函数指针调整(那几个cast)
  • new和delete与内存管理
  • 重载和lambda实现
  • 引用,常引用,左值右值
  • 模版和特化
  • STL里一些不太常用却很有用的方法(reserve,sort,unique...)

(补充一下,这个列表只是列举了研究的方向,不是问题本身,已经有人引起误会了,以为我就问这些问题。我们组的面试是会一直问,从易到难,问到你不会为止,如果你某一块了解很深入可以详细介绍那一块,不需要面面俱到。另外如果在另一个大块"problem solving"里有出色的表现也是很加分的,哪怕C++不是特别熟悉。当然这个超出了本回答讨论的范畴)

另外一般用C++比较多的公司往往会接触更多的操作系统特性,比如内存映射,调用栈,同步对象等,连同公司本身的业务都需要有一定的了解。

希望对看到的人有所帮助,也欢迎交流。




  

相关话题

  汇编过程调用是怎样操作栈的? 
  是否无法写一段代码将这段代码自己打印出来? 
  你工作中最推荐的 C/C++ 程序库有哪些,为什么? 
  互联网自行车行业(共享单车)是否需要政府监管?政府从哪些方面能发挥积极作用? 
  程序员如何快速工资翻倍? 
  网传华为研发出属于我国的编程语言「仓颉」,这是真的吗?这意味着什么? 
  正在工作的程序员,生活状态什么样? 
  HR为什么有生杀大权?标准是什么? 
  计算机系应届生参加校招屡屡碰壁,请问像我这样条件的应届生算什么水平? 
  俄罗斯人编程为什么那么厉害? 

前一个讨论
有调频FM收音机、调幅AM收音机,为什么却没有调相收音机?
下一个讨论
如何看待欧美政府放松疫情管控 正式与病毒共存?





© 2024-05-03 - tinynew.org. All Rights Reserved.
© 2024-05-03 - tinynew.org. 保留所有权利