1. 拷贝构造函数
自己定义拷贝构造函数,例如可能涉及到深拷贝浅拷贝的问题,初始化时候可以匹配到拷贝构造函数,没有设置系统会产生一个默认的拷贝构造函数
2. 深拷贝、浅拷贝
深拷贝,及拷贝内存的数据,
浅拷贝,拷贝指针,或者是地址
3. 智能指针
每一个对象维护一个指针的计数器,赋值拷贝这些计数器会增加,当计数器减少到0的时候,会调用析构函数析构掉这个对象。
4. extern c
不同源文件中,使用同一个变量
5. 说说知道的STL容器
vector,list,queue,map,set,unordermap
6. map底层实现
红黑树实现,红黑树的每一个节点都是一个键值对,红黑树是有序的,map是有序的。
7. static作用
静态成员,在作用域类不会被销毁
8. 虚函数,构造函数、析构函数能否为虚函数,为什么
虚函数时为了面向对象里面的多态
构造函数不能为虚函数,因为先构造才有虚函数表,第二点如果定义虚函数,子类覆盖的话,构造的时候子类是一个未初始化的状态
析构函数可以定义,因为析构从子类的对象开始析构,一直到父类。
9. 源文件到可执行文件的过程
源文件,经过预编译,编译,汇编,链接
预编译:处理源代码中的预处理指令,例如宏定义这些替换操作,不进行安全性的检查
编译:编译过程所进行的是对预处理后的文件进行语法分析,词法分析,语义分析,符号汇总,然后生成汇编代码。
汇编:将汇编代码转成二进制文件
链接:其实就是将二进制文件链接称为一个可执行的指令。链接所完成的任务是合并段表,然后把符号表合并并且对符号表进行重定位扫描二维码关注公众号,回复: 4363127 查看本文章
10. 动态库和静态库
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存。
11. Linux io模型
阻塞,非阻塞,同步,异步
12. epoll触发类型
水平触发,不断的通知上层
边缘触发,只通知上层一次
13. timewait产生的原因
保证最后一个挥手,服务器端没收到,可以在这个时间内重传数据
14. TCP流量控制
滑动窗口
15. 游戏中的用户排名怎么实现
top k
16. 1-n随机打乱
洗牌算法