字节面经记录

字节面经记录

字节跳动一共三面,都是技术面,面的很杂,算法题也比较有东西,待遇高是有高的原因的。

一面二面连在一起,还好三面面试官有事调时间了,面到1点半没吃饭饿死我了。。。

我的第一次面试,没想到就是这么难的公司,网络、数据库和操作系统学得真是太少了,恶补中

一面

  1. 自我介绍
  2. 介绍红黑树
  3. const ** const 区别
  4. 用shell做词频统计
  5. 进程线程的区别
  6. 线程间、进程间资源共享相关问题
  7. 各种变量的存储位置
  8. 用户级线程和内核级线程的区别
  9. 智能指针原理
  10. 项目相关
  11. 网络中的滑动窗口
  12. 长连接有什么缺点要注意什么,安全性怎么保证
  13. 现场撸码topK,K小于内存N大于内存,用堆实现的核心代码(并且要求不能先将堆顶元素pop再将新元素push,对于每个新元素最多只能进行一次遍历调整)
  14. topK问题,K和N都很大放不进内存怎么处理(除了K路归并的方式)

面了一个多小时,感觉一面很多问题都没答上来,没想到还能进入二面,因该是代码写得比较好

二面

  1. 自我介绍

  2. 项目介绍

  3. 在项目中,如果端口占用会在什么地方报错,打开文件过多会在什么位置报错

  4. TCP层面的close和我的项目业务逻辑层面的close

  5. 哈希表怎么实现,怎么扩容

  6. 当发现程序内存泄露,怎么定位问题

  7. 现场撸码算法题:

    输出二叉树左视角能看到的节点
    给定一颗二叉树,各节点的值均为数字
    
    从左边看,输出能看到 1,2,6,8 这四个节点
    输入描述
    以空格隔开的整棵树,空节点以 # 代替,如题目描述中的树,表示为
    1 2 3 # # 6 7 # # # # # # # 8
    如果输入为 #,表示这是一个根节点为空的树
    输出描述
    输出以空格隔开,输出示例如下
    [1 2 6 8]
    示例1
    输入
    1 2 3 # # 6 7 # # # # # # # 8
    输出
    [1 2 6 8]
    
    #include <iostream>
    #include <cstdio>
    using namespace std;
    #define MAX 100000
    int main() {
        char str[MAX], ans[40];
        char temp;
        int size, cnt = 1, ans_cnt = 0;
        while (scanf("%c", &temp) != EOF) {
            if (temp == '\n') break;
            if (temp == ' ') continue;
            str[cnt++] = temp;
        }
        size = cnt;
        cnt = 1;
        while (cnt <= size) {
            for (int i = cnt; i < cnt << 1; i++) {
                if (str[i] >= '0' && str[i] <= '9') {
                    ans[ans_cnt++] = str[i]; 
                    break;
                }
            }
            cnt <<= 1;
        }
        cout << '[';
        for (int i = 0; i < ans_cnt; i++) {
            cout << ans[i];
            if (i != ans_cnt - 1) cout << " ";
        }
        cout << ']'
        return 0;
    }
    
  8. 算法题:

    热锅上的蚂蚁
    现在热锅上有一群蚂蚁,他们急得团团转,当他们发生碰撞时,就各自掉头。
    假设热锅是一个圆环,周长为L个单位,从某点开始顺时针方向为单位1,2,... L,现在热锅上有n只蚂蚁,
    第i只蚂蚁起始时在第a_i个单位上,都绕着这个圆环的边缘做顺时针或逆时针的圆周运动,每秒移动一个单位,
    求经过t秒后,这n只蚂蚁的位置。
    假设他们碰撞掉头的动作不花费额外的时间,且初始时这n只蚂蚁在不同的位置。
    输入描述
    第一行三个整数 n, L, t 其意义如题目描述。
    
    接下来n行,每行两个整数 a_i, d_i,a_i表示第i只蚂蚁的位置,d_i 为1表示这只蚂蚁初始时顺时针运动,
    为2表示这只蚂蚁初始时逆时针运动。
    
    1 <= n <= 1e5
    2 <= L <= 1e9
    0 <= t <= 1e18
    1 <= a_i <= L
    1 <= d_i <= 2
    输出描述
    n个整数,第i个整数经过t秒后第i只蚂蚁的位置
    示例1
    输入
    4 8 6
    6 1
    5 2
    1 1
    8 1
    输出
    7 7 
    

    别的部分答上来的记不住了,二面发挥还好,等待三面,还好没再连着面

三面

  1. 现场撸码:写一个memcpy(),并改进效率
  2. 在硬件级别底层能不能优化memcpy()
  3. 项目相关(测试框架)
  4. 写宏容易出错怎么解决
  5. 在做项目工程中遇到的问题
  6. 讲讲CLOSE_WAIT状态
  7. 进程线程协程区别
  8. CPU流水线
  9. 未来的规划
  10. 对哪个技术方向感兴趣
  11. 最近在做什么
  12. 怎么学习新技术

然后就是我向面试官问一些问题,

  1. 公司情况
  2. 具体工作,语言
  3. 新人培养方案

整个面试50分钟,一半是技术问题,一半是面试官介绍一些公司的情况。

三面面试官是部门 leader ,就不是单纯的技术面了,也考察了一些非技术能力

加⾯

突然通知有⼀轮加⾯,搞得我很慌,问得问题都⽐较有深度

  1. 项⽬,问为什么做这个项⽬,为什么这么设计,优缺点,

  2. 函数调⽤时底层发⽣了什么

  3. 还有⼀些简单的基础

  4. 百度根据⽤户输⼊关键词⾃动推荐query的项⽬,如果你给,你怎么做。(这个问题聊了挺久,不断地在我的解决方案上加情况,包括⼀个关键词对应多个query,输⼊多个关键词等等)

总结

当⾯试关的问题不够清晰可能会有⼆义性时,⼀定要反问⾯试官确定具体问题。

总体来说,感觉发挥的不好,很多东⻄没表现出来,好在算法题做的还不错。

坐等hr了

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值