字节跳动-系统架构-北京-一面面经

1、自我介绍
2、介绍当前实习期间所做的工作
3、UDP可靠传输项目,问的很深
4、拥塞控制算法听过BBR吗

BBR算法介绍
简单来说 BBR 相较于传统的TCP拥塞控制算法有以下两个优点:
①在有一定丢包率的网络链路上充分利用带宽
②降低网络链路上的 buffer 占用率,从而降低延迟

通过 带宽X延迟 的方式估计发送窗口的大小

5、了解quick吗,做完UDP可靠传输的项目有没有去对比过和quic之间的实现差异

低延迟连接的建立
改进的拥塞控制
无队头阻塞的多路复用
前向纠错
连接迁移

6、DNS解析的过程

向上递归+向下迭代

7、HTTP1.0 1.1 2.0之间的区别

HTTP1.0、HTTP1.1、HTTP2.0的关系和区别

8、常见的状态码

http常见状态码

9、了解服务端给客户端返回内容时做压缩的算法吗
10、linux常用命令
11、进程和线程
12、线程同步的方式
13、进程间通信方式
14、C++中const关键字

C/C++中的关键字:static 和const

15、常量指针和指针常量

C++指针常量与常量指针

16、在继承时,调用构造函数的顺序

调用派生类的构造函数之前先调用基类的构造函数,析构函数则相反。
因为派生类需要用到基类的成员,所以必须先有基类,再有派生类

17、sizeof和strlen的区别

【C++】strlen 和sizeof 的区别(小结)

18、虚函数和纯虚函数的区别
19、拷贝构造函数解决什么问题

将整个对象实例作为函数参数传递,将整个对象实例作为返回值返回

20、指针和引用的区别,底层是如何实现的
21、left join和inner join的区别

MySQL中链接查询inner join与left 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; // 在左右两侧
    }
};

你可能感兴趣的:(2021秋招面经,linux)