当前位置: 首页 > 面试经验 >

某造车新势力c++算法一面

优质
小牛编辑
89浏览
2023-05-16

某造车新势力c++算法一面

面了足足两个小时,讲真这是招日常实习生么,最后果然凉了

八股

  1. 方法重写(override)和重载(overload)的区别

  2. 你刚才说到的情景 func(int &a)func(int &&a) 的具体场景可以讲一下吗。

讲了有左值右值和拷贝构造。

  1. 你刚才说的左值引用,右值引用,移动构造,完美转发具体讲一下
  2. 回到我们开始的问题,假如有 class B :: public A ,那么 B::test 是调用的谁的方法,为什么。

这里我才知道第一题的目的是要问虚函数表

  1. 接上一问,在构造的时候是先构造父类还是先构造子类?
  2. 那么对于A类中有一个其他类C的成员变量的时候呢,是先构造A还是先构造C

其实是同时有参数列表和在类内部自行实现的构造函数,哪一个先构造

  1. 知道 extern "C" 吗

不知道,extern "C"主要作用就是为了能够正确实现C++代码调用其他C语言代码。

加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。

  1. 说说你常用的 C++11 新特性,能说下智能指针吗

  2. 一个模版类内部能不能有虚函数呢?

面试官提示我从编译阶段,虚函数表考虑,我还事没想出来

还是虚函数表的问题

模板类中可以有虚函数,但是模板的成员函数不可以是虚函数

编译器都期望在处理类的定义的时候就能确定这个类的虚函数表的大小,

如果允许有类的虚成员模板函数,

那么就必须要求编译器提前知道程序中所有对该类的该虚成员模板函数的调用

而这是不可行的。

详解

  1. 进程,线程有什么不同呢? 进程运行的几个状态和他们之间的转换关系。

  2. 你刚才说到了进程有的几个属性:上下文,Program Counter,讲一下吧

  3. 进程间通信的几种方式?

  4. 讲下你的项目,它们的多线程体现在哪里了。线程之间通信怎么做的。

  5. 你认为你的项目中遇到的最难的问题是什么。

  6. 你说你对 Linux 很熟悉,给我说说你对 Linux 有什么独到的理解吧。

  7. 说下vector,list,map,unordered_map的底层结构吧。

  8. 说下进程所占用的内存空间吧,比如全局变量是在哪,malloc的,calloc的空间都在哪,函数内的变量都在哪?

  9. int (*a)[10]; int (*a[10])(int); int (*a)(int);分别是什么?

  10. emplace_backpush_back?

  11. 用过std::optional吗?


算法(只说思想就够了,面试官会提醒边界条件)

  1. 如何计算一个二叉树深度?

  2. 如何判断有向图A到B的连通性?

  3. 给你一个浮点型的数组,如何找出第N大的元素?

(回答了quick select或者heap)


反问:

  1. 刚才的问题为什么强调浮点数啊,是要特殊处理什么吗?

面试官哥哥笑而不语

  1. 这是暑期还是日常?
  2. 工作内容?

主要是算法落地

#我的失利项目复盘##实习#
 类似资料: