C++工程师岗常见的106道面试题汇总,相信搞懂了这些,校招面试基本上不成问题。
- 信号的生命周期?
- 信号的产生方式?
- 信号处理方式?
- 如何消除隐式转换?
- 重载,重写和隐藏的区别?
- volatile表示什么?有什么作用?
- Static_cast<>,dynamic_cast<>,const_cast<>,reinterpret_cast<>的各自作用和使用环境?
- Malloc和new的区别?
- free和delete的区别?
- free一个数组时如何知道要释放多大的内存呢?
- __stdcall和__cdecl的区别?
- linux内部提供了那些调试宏?
- 手写线程安全的单例模式?
- 引用和指针的区别?
- 出现异常时,try和catch做了什么?
- C++如何处理多个异常的?
- 常对象的成员变量一定不可以修改吗?为什么?
- 虚函数的调用过程?
- 单继承,多继承,菱形继承,虚继承时,对象内存中的差异区别?如果存在虚函数呢?
- 实现一个vector?是1.5还是2倍,各有什么优缺点?
- map底层用了什么?
- 如果用map删除了一个元素,迭代器还能用吗?为什么?怎样做可以接着用?
- 红黑树的特征是什么?
- 红黑树如何插入和删除的?
- 红黑树和B+,B-的区别?
- 线程同步几种方式?
- 手写strcpy,memcpy,memmove函数?
- Do{}while(0)的用法有哪些?
- 手写快排?时间复杂度?空间复杂度?能进行优化吗?还有吗?能进行尾递归优化吗?
- 线程池的作用是什么?
- Pthread_cond_signal和pthread_cond_broadcast的区别
- TCP三次握手和四次挥手及各自的状态?
- TCP如果两次握手会出什么问题?那三次握手又会造成什么问题?有什么好的解决方法没?
- TCP四次挥手为什么要有TIME_WAIT状态?为什么?
- 死锁的原因?条件?如何预防?又如何避免?如何解除?
- 排序稳定的算法,你知道那些?
- 解决hash冲突的方法?
- C++分为内存分为哪几部分?
- 如果new申请内存失败了,如何去解决?如果让你实现一个new,你会怎么实现?
- 如何得到一个结构体内成员的偏移量?
- 进程与线程的区别?
- 逐层打印二叉树?
- 构造函数能不能虚函数?为什么?那拷贝构造函数能不能为虚函数?为什么?
- 析构函数能不能虚函数?为什么?
- 模板和实现可不可以不写在一个文件里面?为什么?
- 什么是RAII资源管理?
- 为什么要字节对齐?
- 在成员函数中调用delete this会出现什么问题?对象还可以使用吗?
- 如果在构造函数中调用memset(this, 0, sizeof(*this))来初始化内存空间,有什么问题吗?
- 对一个数组而言,delete a和delete[] a有什么区别?为什么?
- Dynamic_cast是如何实现运行时类型转换的?
- C语言调用C++语法函数怎么做?那C++调用C语法的函数怎么做?
- Extern “C”是什么意思?他有什么作用?
- 进程间的通信方式有哪些?线程间的通信方式呢?
- IO模型主要有哪些?
- 阻塞和非阻塞?同步与异步的区别?
- Select,poll和epoll的区别?为什么?
- Struct{char a[0];}的作用?有什么好处?
- 如何判断两个浮点数相等?
- 浮点数为什么会有误差?
- TCP的nagle算法和延迟ack,还有CORK呢?他们有什么好处?一起用会有什么效果?你觉得可以有什么改进?
- 栈上分配内存和堆上分配内存有什么区别?
- 变量的存储方式有哪些?
- 线程私有和共享那些资源?进程私有和共享那些资源?
- 什么是守护进程?如何查看守护进程?什么是僵尸进程?如何查看僵尸进程?
- 进程同步机制?
- 什么是信号?
- kill函数的每一个参数的作用?
- 什么是协程?
- 虚拟内存实现有哪几种方式?有什么意义?
- 什么是类型安全?能举例吗?
- 确保线程安全的几种方式?
- OSI七层模型?
- TCP/IP五层模型?
- DHCP协议是什么?使用什么端口?他的优劣?
- 网络序是大端还是小端?为什么要这样?
- ping命令使用的是什么协议?
- 路由表一般包含什么?
- 停止等待协议的缺点?为什么?
- 拥塞控制的方式?具体怎么做的?快重传的时机是什么?
- DNS协议如何实现将域名解析为IP地址的?
- 创建进程的步骤?
- 进程切换发生的原因?处理进程切换的步骤?
- 虚函数表是在什么时候确定的?那虚表指针呢?
- 如何检查内存泄露?如果不通过printf,debug等调试方式和编译器报错提示呢?
- Int(*f(int,void(*)()))(int,int)是什么意思?
- STL空间配置器如何处理内存的?能说一下它的大概实现方案吗?为什么是8bytes的倍数?
- HTTP 403表示什么?
- 静态函数能定义为虚函数吗?为什么?
- 静态函数能定义为常函数吗?为什么?
- 知道什么是幂等性吗?举个例子?
- 当接受方的接受窗口为0时还能接受数据吗?为什么?还能接受什么数据?那怎么处理这些数据呢?
- 当接受方的返回的接受窗口为0时,发送方会进行什么操作?
- 请求页面置换策略有哪些方式?他们的区别是什么?各自有什么算法解决?
- 系统调用与函数调用的区别?
- 对于默认处理的结构体,能用memcmp来进行比较吗?为什么?如果不能,该如何比较?
- C++中有哪些机制可以取代宏?
- 手写一个有可变参数的函数?
- 可靠信号与不可靠信号的区别?
- this指针调用成员变量时,堆栈会发生什么变化?
- 实现一个shared_ptr类和auto_ptr类
- 下面这两个函数在执行过程中有什么区别?
- C++中可以继承string类吗?为什么?
- Char * const *(*next)()是什么?
- 访问一个网页的过程,计算机发生了什么?
- 如何判断const所修饰的对象?