一、数据结构
1.手写链表的基本操作(创建、新增节点、删除节点、销毁等)
2.链表的反转
3.如何判断一个链表有环
4.双向链表删除一个非头非尾节点
5.单向链表删除一个非头非尾节点
6.二叉树的前、中、后序遍历打印
7.STL中vector的内部实现原理
8.STL中vector与list的区别
9.基本的数据结构都有哪些以及各自的特点
二、基本算法
1.手写快速排序算法,快排的时间复杂度?有没有时间复杂度更低的排序算法?快排是否稳定为什么?
2.假设淘宝一天有5亿条成交数据,求出销量最高的100个商品并给出算法的时间复杂度。
三、C++语言本身知识
1.手写一个String类
2.C++内存模型相关知识
3.空类的大小,仅包含普通成员函数类的大小,仅包含虚成员函数类的大小(C++内存模型)
4.虚函数表相关内容(C++内存模型)
5.类的菱形继承问题
6.虚函数的作用
7.static的作用
8.const的作用
四、多线程编程
1.生产者消费者模型
2.多线程通信的方式?
3.多线程临界资源的保护?
4.单生产者单消费者下的多线程编程一定要加锁码?
5.有锁队列
6.无锁队列
7.死锁出现的原因以及如何避免
8.线程池
五、网络编程
1.TCP UDP HTTP的基本概念和不同点
2.TCP的应用场景,为什么?UDP的应用场景,为什么?
3.QQ的聊天消息为什么用UDP
4.TCP的三次握手,四次挥手
5.TCP为什么有慢启动机制?
6.TCP关于拥塞控制和滑动窗口等知识
7.C/S模型建立连接的socket 示意图
8.TCP连接异常断开时对端socket的状态?
9.TCP的心跳机制