自我介绍,介绍自己实习经历,然后打断我直接问我项目相关问题。
项目介绍不是很清楚,算法推荐介绍得重新理一下,说话太快,别急。
1.C++虚函数作用?虚函数父类做了很多功能,有些做不了-》需要子类实现
2.虚函数与纯虚函数区别
3.纯虚函数父类可以实现纯虚函数吗?这个好像不可以
4.纯虚函数跟虚函数在虚表里面放的是不是一样的,编译的时候有没有不一样?说的有点问题
5.析构函数是干什么的?虚析构?虚析构紧张了,
参考:https://www.cnblogs.com/chio/archive/2007/09/10/888260.html
答:我们知道,为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数。因为在delete一个抽象类指针时候,必须要通过虚函数找到真正的析构函数。如果析构函数不加virtual,delete pb只会执行Base的析构函数,而不是真正的Derived析构函数。
因为不是virtual函数,所以调用的函数依赖于指向静态类型,即Base
6.构造函数是什么?构造函数可以定义虚函数吗?不可以
7.深拷贝浅拷贝?指针地址指向不一样
8.一般情况下怎么实现深拷贝?两个对象怎么做深拷贝?这个没搞懂后来扯到strcpy去了,实际上搞错了实际上是开辟内存空间,然后。。。
参考:https://www.cnblogs.com/bluetzar/articles/1223313.html
答案:通过拷贝构造函数来完成整个复制过程的
8.Strcpy会出现什么问题?有什么可以解决?
参考:https://blog.csdn.net/punk_lover/article/details/19824499
答:strcpy()函数将源字符串复制到缓冲区。没有指定要复制字符的具体数目。复制字符的数目直接取决于源字符串中的数目。如果源字符串碰巧来自用户输入,且没有专门限制其大小,则有可能会陷入大的麻烦中!
解决办法:避免内部缓冲区溢出,realpath(),堆栈可以提供保护
10.extern?函数引用?在C++里面引用C代码?extern C
11.常用的C++代码内存错误?new了之后没有delete/野指针,指针指向空delete/free去删除他指针就会变空?说的不全
参考:https://blog.csdn.net/qq_36570733/article/details/80043321
12.结构体对齐?没说清楚。声明之后是编译器自动对齐还是?编译器自己做不需要我们开发人员去管?不用想太久,不就会不会就不会
参考:https://zhuanlan.zhihu.com/p/26122273
规则一:结构体中元素按照定义顺序依次置于内存中,但并不是紧密排列。从结构体首地址开始依次将元素放入内存时,元素会被放置在其自身对齐大小的整数倍地址上。
规则二:如果结构体大小不是所有元素中最大对齐大小的整数倍,则结构体对齐到最大元素对齐大小的整数倍,填充空间放置到结构体末尾。
规则三:基本数据类型的对齐大小为其自身的大小,结构体数据类型的对齐大小为其元素中最大对齐大小元素的对齐大小。
13.常见的数据结构了解吗?哈希表?
14.数组和链表的区别?查找效率高,插入删除很耗时间。链表插入删除简单查找效率低。
15.key和value怎么实现?map实现?数据结构实现字典?红黑树/哈希表,介绍红黑树?没介绍清楚,得重新理解理解
参考:https://www.cnblogs.com/skywang12345/p/3245399.html
16.两种实现方式哈希表和红黑树有什么优略?map为什么用红黑树不用哈希?查找稳定?哈希表链表长问题冲突怎么解决?这个有点懵实际上记得但是紧张忘了,开放地址法,减少mod,细分
17.排序问题,假设有一个文件有好几个T,给这个文件一组数排序?冒泡排序/堆排序,这个自己挖坑了,用代码实现,文件所有的树都建成节点?文件很大怎么排?数据存在内存里?后来给提示冒泡,才发现自己走错了。
18.面试官跟我说考察的是了解问题思路,具体问题涉及的方法
19.跟我说我基本功有问题,打扎实了,酌情考虑。
20.面试结果啥时候出来,多跟hr沟通。
总结:基础知识还是不是很牢固,然后说话有点快,说话慢点,真的说话比较急,得改!!!