众所周知,C++开发工程师的从业方向很广,职位自然也就较多,所以可供选择的空间相对较大。作为候选人,除了选择适合自己技能的职位之外,薪资自然也是一个很重要的考察因素。年的IT市场上,很多企业都开出相当高的薪资来招聘C++开发工程师。
当然,如果想要高薪资,面试自然要比他人更胜一筹。霸哥整理了一份C++基础面试题汇总,看看你能回答多少道呢?建议大家先收藏再自测!
C++基础面试题汇总
1、C++基础
1、C语言和C++的区别与联系
2、struct和class的区别与联系
3、extern"C"的作用
4、函数重载和覆盖的区别与联系
5、如何理解多态,运行多态的原理
6、如何理解虚函数机制,单继承、多继承、虚继承条件下虚函数表的结构
7、如果虚函数是有效的,那为什么不把所有函数设为虚函数
8、构造函数、析构函数能否是虚函数
9、纯虚函数使用场景及作用
10、介绍RAII
11、类的大小怎么计算
12、volatile关键字的作用
13、实现一个线程池
14、强制类型转换的原理及使用
15、指针和引用的区别与联系及使用情况
16、new和malloc的区别与联系
17、malloc的内存是否能用delete释放
18、new[]和delete[]必须配对使用吗
二、C++11新特性你都了解多少?
1、谈谈auto和decltype
2、谈谈左值和右值及其引用
3、移动语义和完美转发是什么
4、列表初始化是什么
5、function、bind、lambda的使用场景
6、谈谈C++11的mutex和RAIIlock
7、C++11的智能指针是什么,能否独立实现一个智能指针
8、enum和enumclass的区别与联系
9、内存泄漏的出现场景及解决措施
10、unique_ptr如何转换所有权
11、谈谈对面向对象的理解
12、继承方式及组合方式的使用场景
三、STL系列
1、C++直接使用数组与std::array的利弊,std::array的实现原理
2、std::vector和clear的特点及实,resize和reserve的区别
3、deque的底层数据结构及内部实现原理
4、map和unordered_map的区别及使用场景
5、list的使用场景
6、std::find能否传入list对应的迭代器
7、string的常用函数
四、C语言
1、谈谈对const的理解
2、char*、constchar*、char*const、constchar*const的区别
3、指针常量和常量指针的区别
4、static的作用及使用场景
5、全局变量与局部变量的区别
6、宏定义的作用
7、内存对齐的概念及存在必要性
8、inline内联函数的特点及缺点
9、如何用C实现C++的面向对象特性(封装、继承、多态)
10、如何实现memcpy效率提升
11、typedef和define的区别
12、extern和externC的作用
13、如何避免野指针
14、计算结构体长度
15、sizeof和strlen的区别
16、条件变量为什么要和锁配合使用
五、设计模式
1、饿汉线程、懒汉线程安全的单例模式
2、观察者模式类关系和优点
3、代理模式类关系和优点
4、工厂模式概念和优点
5、构造者模式概念
6、适配器模式概念
六、操作系统
1、进程和线程的区别
2、操作系统如何进行进程管理
3、操作系统如何实现进程阻塞
4、进程之间的通信方式
5、上下文切换是什么,操作系统如何实现上下文切换
6、线程的实现原理
7、线程之间私有和共享的资源
8、一般应用程序内存空间的堆和栈的区别
9、进程虚拟空间的布局
10、虚拟内存如何映射到物理内存,分页内存管理是什么
11、产生死锁的必要条件,如何避免死锁
12、大端字节、小端字节是什么,如何转换字节序
13、信号和信号量的区别
14、锁的性能开销,锁的实现原理
七、编译原理
1、gcchello.c命令具体的执行过程,执行中内部究了什么
2、程序必须从main函数开始运行吗
3、如何确定某个函数有被编译输出
4、动态链接库和静态链接库的区别
这是一套基本的C++面试题,你能回答多少道呢?问题看似简单,实则不然。里面可能有很多问题,有三五年经验的C++开发工程师都不一定完全明白。大家先自测,后续霸哥会发布答案在新的文章中,请持续