图森未来 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);
}; #面经##图森未来#
正浩创新EcoFlow公司福利 530人发布