百科问答小站 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++」? 
  利用无理数压缩数据是否可行? 
  在windows以及许多剪辑软件出现之前 电影都是如何制作的? 
  从语言设计的角度来看, Pascal 是一门优秀的语言吗? 
  win7笔记本,外接扩展显示器,如何在不缩小外接显示器像素的同时去除外接显示器的桌面背景黑边? 
  有没有工具能找出程序01代码相同的部分, 精简掉相同部分,只操作他们的地址码来让程序依然能运行? 
  在编程中有没有巧妙运用数学知识解决过问题? 
  假设开发某款软件1个程序员10天可以做好,那么找10个同等水平程序员一起做1天能否做好? 
  为什么我用c++写的游戏那么简陋? 
  喜欢编程而又干着程序员的工作是一种什么样的体验? 

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





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