一、数据结构

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的心跳机制

03-23 14:45