宽德投资c++
1.自我介绍
2.内存对齐
所谓内存对齐,是为了让内存存取更有效率而采用的一种编译阶段优化内存存取的手段。
3.给了一个函数,让指出语法问题
虚函数不能是模板函数,为什么
4. 内存分区
5.堆和栈的区别
6.虚函数表存在哪个区
虚函数表在 .rodata ( Linux g++ );虚函数指针在对象里,对象在哪,虚函数指针就在哪。虚函数表在编译期生成。
7.new和malloc的区别,new的原理
8.malloc能否用detele
9.stl用过哪些
10.map和unordered_map的区别,什么时候用unordered_map效率高
适用处:对于查找问题,unordered_map会更加高效一些,因此遇到查找问题,常会考虑一下用unordered_map
11.vector中的resize和reserve
12.list用途,底层是双向还是单向链表
- list是由双向链表实现的,内存空间是不连续的。由链表的实现原理可知:
优点:插入和删除非常快。只需要在插入的地方更改指针的指向即可,不用移动数据。
缺点:不支持随机访问,查询效率较低,时间复杂度为O(n)
13.c++11新特性 用过移动构造吗
14.智能指针,shared_ptr的原理,shared_ptr如何保证线程安全
算法:
15.如何判断链表是不是有环
16.给一个数字a,去除其中k位之后,使得这个数字最小,说思路。