前言:答主从八月初开始先后面试了近十家公司的C/C++岗位,最终拿到南京一家自研的offer,这一次绝对是八股问的最深的一次面试,没有之一,一直追问,给场景题,甚至涉及到一些没听过的
总共将近一个小时的拷打
----前面大概十几分钟项目细节的追问
8、封装继承多态,分别的含义,追问面向对象和面向过程的区别,保护继承的用法
9、外部对象如何访问类内的保护和私有成员---友元
10、C++支持多继承吗,菱形继承的问题,如何处理,虚继承后对基类的变量初始化几次?
11、对多态的理解
12、基类可以不实现虚函数吗
13、虚函数的底层原理,多个派生类实例,它的虚函数表是一样的吗,为什么一样
14、构造函数、析构函数能不能设为虚函数,
15、析构函数和构造函数的调用顺序;
16、场景题,基类的析构函数中调用了虚函数(printA,派生类重写了这个虚函数(printB),派生类的析构也调用了这个虚函数;
对象发生了析构,调用的顺序是怎样的,会如何打印
17、静态和动态的区别
18、函数重载时,(int a = 3, int b), (int b)这样可以形成函数重载吗 --不行
(int a), (const int a)可以形成重载吗 --可以
19、vector和list的区别
20、vector在头部插入和尾部插入删除的时间复杂度,list呢
21、vector容器是线程安全的吗,为什么,一个线程在遍历vector,另一个线程在删除其中的元素,会出现问题吗
22、如何找出一个链表有环
23、unordered_map和map的区别
24、红黑树的实现原理,和平衡二叉树的区别 --知识盲区了属于是
25、常见的智能指针,shared_ptr底层是如何实现的,weak_ptr的用法
26、weak_ptr能不能知道shared_ptr被析构
27、左值和右值的概念,右值引用,移动构造函数如何声明
28、调用移动构造时传入一个左值会发生什么
29、完美转发的概念