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

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




  

相关话题

  如何用python读取下面的csv文件? 
  C语言中指针与数组都可以用a[3]表示,那它们是不是相同? 
  是否存在那种,已经复杂到无法继续有效维护的软件?如果没有,哪些是最接近的? 
  假如我写出了一种秒杀之前所有编程语言各种性能的语言会怎么样? 
  为什么大多数的程序员的编程界面背景都是黑色的? 
  C/C++基本数据类型里面为什么没有byte呢? 
  c#多播或event监听太多后gc和时间都会爆炸,那么比起List<Action>存在的意义是什么? 
  把面试者说得一无是处的公司到底是什么心理? 
  领导面谈绩效时通知为S,实际绩效为A,没有任何沟通和说明,已经影响晋级,该怎么办? 
  服务器之间文件自动拷贝用什么技术好? 

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





© 2024-12-25 - tinynew.org. All Rights Reserved.
© 2024-12-25 - tinynew.org. 保留所有权利