百科问答小站 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++比较多的公司往往会接触更多的操作系统特性,比如内存映射,调用栈,同步对象等,连同公司本身的业务都需要有一定的了解。

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




  

相关话题

  要怎么努力才能达到 vczh 那样的层次? 
  为什么总有一些人推荐计算机学生把重点放在高数和线代? 
  设计 MySQL 数据表的时候一般都有一列为自增 ID,这样设计原因是什么,有什么好处? 
  对编程感兴趣的程序员是否都对电路、单片机也怀有浓厚的兴趣? 
  Python 中有什么不容易让人察觉的有趣的事实? 
  一般密码10个数字和26个字母组合如果我或有关重要部门造了50新字母,黑客键盘上没有这些字母如何破解? 
  一行 Java 代码(以分号结束)能实现什么丧心病狂的功能? 
  unique_ptr 的底层实现是什么样的? 
  新手该如何使用 GitHub? 
  大家做课题做项目进行科学研究的过程中编程产生的结果(数字,图像,表格等)都是暂时保存在哪里呢? 

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





© 2025-05-31 - tinynew.org. All Rights Reserved.
© 2025-05-31 - tinynew.org. 保留所有权利