图森未来 linux 应用 一面
自我介绍,项目介绍
项目一点都没问
- 进程、线程的区别
- C++ 和 C 的区别
- C++的多态是怎么实现的,运行时多态和编译时多态,虚函数和纯虚函数
- C++ 的智能指针, shared_ptr, unique_ptr, weak_ptr 各自有什么特点, 为什么会有 weak_ptr
- STL 的map 和 set 有什么特点,是怎样实现的,红黑树是怎样实现的,红黑树有哪些应用
- 左值和右值
- 网络模型(七层和四层)
- tcp 和 udp 的区别,tcp 的三次握手和四次挥手,
- tcpdump工作在那一层, ping 工作在那一层
- MTU 和 MSS, 以太网的 MTU 为什么是 1500, MSS 为什么是 1460
- 路由器和交换机的区别
做题
实现一个支持多线程的循环队列,其中包括: Init:资源初始化,循环队列的最大长度max_size。 push_back:将元素放到队列尾。 pop_front:将队列首元素弹出。 batch_remove:从队列首开始移除指定数量的元素,如果队列长度小于给定数量则清空队列。 要求队列实现时使用循环队列的方式,空间占用为O(n)。 C: bool init(); bool uninit(); bool push_back(int item); //插入元素到循环队列尾部 bool pop_front(); //弹出循环队列的头部元素 void batch_remove(unsigned int count); C++: class CircularQueue { public: ~ CircularQueue(); CircularQueue(unsigned int max_size); bool push_back(int item); bool pop_front(); void batch_remove(unsigned int count); };#面经##图森未来#