面试总结
1.虚函数表的原理,单继承和多重继承有什么不一样的
1)基类和继承类的虚函数表的存储的函数指针;
每个类都有自己独立的虚函数表,存放在类内存的首地址。一个虚函数表可以理解为一个函数指针数组。子类继承基类的虚函数表,如果有重写虚函数则子类虚函数覆盖虚函数表中的基类函数的指针;
2)多重继承的模型
多重继承的模型中,子类会保存多个虚函数表以对应不同父类;重写虚函数的话就替换表中相同的虚函数,自己的虚函数会添加到第一个继承的类的虚函数表后面;
3)菱形继承
菱形继承会出现通过不同的途径继承过来的父类或者爷爷类在派生类种存在多份,浪费了内存且存在二义性。可以通过虚继承来实现,具体为:虚基类表指针(virtual base table pointer),该指针指向了一个虚基类表(virtual table),虚表中记录了虚基类与本类的偏移地址;通过偏移地址,这样就找到了虚基类成员,而虚继承也不用像普通多继承那样维持着公共基类(虚基类)的两份同样的拷贝,节省了存储空间。
2.三次握手的模型(client和server的状态变化)
3.多线程和进程间通信有什么方式
4.动态库的加载方式
5.共享内存的实现
6.win32界面函数调用过程
7.i/0模型(网络连接场景有上千个client)
8.运行时库多线程修改里面的全局变量,什么结果
9.__cdecl 和__stdcall的区别
https://blog.csdn.net/luoweifu/article/details/52425733
10.虚拟内存是怎么出来的
11.vs生成c++代码生成的MD和MT区别
/MT和/MTd表示采用多线程CRT库的静态lib版本。 提高了运行效率,但是代码会变得臃肿
/MD和/MDd表示采用多线程CRT库的动态dll版本,会使应用程序使用运行时库特定版本的多线程DLL。代码体积小
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?