C++常见面试题
*表示高频考点
C++基础
C++多态、继承、重载*
引用是怎么实现的?*
static变量,static函数*
子类析构时要调用父类的析构函数吗?
虚函数机制*
vector和数组的区别?*
vector、list、set、map、unordered_map几种容器的操作、STL底层实现原理*
STL的线程安全*
C++调用C函数,C++和C混合编译
new和malloc区别*
智能指针*
C++11新特性*
Struct和class区别*
多态机制的实现*
sort底层实现
C语言的内存管理机制*
define的宏定义过程
#define与const区别*
extern关键字
struct内存对齐,为什么要做内存对齐?*
内存拷贝函数memcpy、strcpy原理
free和delete区别*
delete / delete[]区别*
重载和覆盖(重写)
结构与联合有和区别?
为什么基类的析构函数要是虚函数*
main 函数执行以前,还会执行什么代码?
C语言如何实现对象
指针和引用区别*
智能指针,是否线程安全*
栈内存和堆内存,区别,优缺点*
null 与 nullptr
深拷贝、浅拷贝*
inline 和 宏定义的区别
sizeof和strlen的区别
引用与指针有什么区别?
const 与 #define 的比较 ,const有什么优点?
说一下什么是内存泄漏,如何避免
请编写能直接实现strlen()函数功能的代码
memset、memcpy和strcpy的根本区别
对象间是怎样实现数据的共享的?
数据结构、算法
常见排序算法*
二叉树的前序遍历代码,递归和非递归形式
写堆、快速排序代码*
快速排序的复杂度,最优和最差*
如何找到搜索树的下一个元素
红黑树和AVL的区别,红黑树的优势*
红黑树和一般的平衡二叉树,增、删、改、查的过程和效率、时间复杂度*
双向链表删除一个节点
堆排序过程*
各种排序算法时空复杂度以及稳定性*
网络编程、操作系统、计算机网络
用户态和内核态的区别,用户态和内核态切换的代价*
环形缓冲区的好处
TCP如何实现可靠,如何实现流量控制和拥塞控制?*
本机不同进程间用socket通信,数据是否经过网卡
如果让你实现一个服务器应用的开发,怎么做
select/poll/epoll(IO复用、区别)*
进程和线程区别、进程的状态,*
进程哪些资源线程可以用
进程和线程间的通信方式
怎么查看TCP状态
进程的通信,哪个效率最高,为何*
socket网络编程的过程*
举例多线程可能的问题
进程调度算法*
TCP与UDP的区别*
如何实现快重传和快恢复*
tcp三次握手为什么是三次?不能是2次或者4次呢?(TCP四次握手同问)*
页式内存管理,虚拟内存映射到物理内存怎么实现,内存分级*
线程池了解吗?他是怎么实现的?
消费者与生产者模型
线程是不是越多越好?*
对称加密与非对称加密的区别*
IP地址跳变时,若有服务正在使用怎么办
粘包和丢包出现的原因,以及解决方案
死锁,解决方法*
消息队列使用
如何实现可靠的udp*
网络七层模型、协议有哪些*
为什么要有ip和mac、mac地址是如何来的
虚拟内存和物理内存,为什么要这样设计
长连接和短连接,什么时候会出现*
长连接是如何维持的*
心跳机制*
什么叫字节流,什么叫数据报*
内存泄漏的场景、处理方法
Post数据包的结构
进程同步方式*
linux权限管理
理解ip地址和端口
段错误原因有哪些
介绍大小端存储模式*
几种页面置换算法
常用调试工具
信号和信号量的区别
系统调用*
多线程与单线程的优劣
定时器是怎么实现?
什么是惊群问题?*
线程/进程的状态
项目经验
说一个自己做过的项目*
项目用到技术是什么*
为什么要这样做*
项目的难点是什么*
其他
自我介绍
为什么要做C++后台开发
大学经历
实习时间
期望薪资
还有什么要问面试官的