1、自我介绍
2、介绍当前实习期间所做的工作
3、UDP可靠传输项目,问的很深
4、拥塞控制算法听过BBR吗
BBR算法介绍
简单来说 BBR 相较于传统的TCP拥塞控制算法有以下两个优点:
①在有一定丢包率的网络链路上充分利用带宽
②降低网络链路上的 buffer 占用率,从而降低延迟通过 带宽X延迟 的方式估计发送窗口的大小
5、了解quick吗,做完UDP可靠传输的项目有没有去对比过和quic之间的实现差异
低延迟连接的建立
改进的拥塞控制
无队头阻塞的多路复用
前向纠错
连接迁移
6、DNS解析的过程
向上递归+向下迭代
7、HTTP1.0 1.1 2.0之间的区别
8、常见的状态码
9、了解服务端给客户端返回内容时做压缩的算法吗
10、linux常用命令
11、进程和线程
12、线程同步的方式
13、进程间通信方式
14、C++中const关键字
15、常量指针和指针常量
16、在继承时,调用构造函数的顺序
调用派生类的构造函数之前先调用基类的构造函数,析构函数则相反。
因为派生类需要用到基类的成员,所以必须先有基类,再有派生类
17、sizeof和strlen的区别
18、虚函数和纯虚函数的区别
19、拷贝构造函数解决什么问题
将整个对象实例作为函数参数传递,将整个对象实例作为返回值返回
20、指针和引用的区别,底层是如何实现的
21、left join和inner join的区别
22、B+树索引
23、可以作为索引的数据结构有哪些,分析一下优劣
24、算法题:二叉树找最近公共祖先
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @param o1 int整型
* @param o2 int整型
* @return int整型
*/
int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
// write code here
return CommonAncestor(root,o1,o2)->val;
}
TreeNode* CommonAncestor(TreeNode* root,int o1,int o2){
if(root==nullptr||root->val==o1||root->val==o2)
return root;
TreeNode* left=CommonAncestor(root->left, o1, o2);
TreeNode* right=CommonAncestor(root->right, o1, o2);
if (left == nullptr) { // 都在右侧
return right;
}
if (right == nullptr) { // 都在左侧
return left;
}
return root; // 在左右两侧
}
};