字节基础架构后端开发一二三面面经,许愿Offer
反馈社区,许愿Offer!!
时间线
- 投递 3.21
- 一面 3.23
- 二面 3.28
- 三面 4.2
- hr面 4.8
不得不说,字节的流程真的快呀!
一面
一个小时
- 三个项目轮流拷问
- 联合文件系统、
- 怎么挂载、怎么设置根目录
- 怎么配置网络,怎么通信
- ....
二面
40分钟
态度很好
- 项目
- 上下文切换,汇编代码解释
- 举例说明计算密集型和IO密集型
- 算法
- 用互斥锁实现读写锁
- 反问
- 业务和技术栈
三面
35分钟
- 实习过吗?
- 实习过,在字节
- leader是谁,肖战(x
- 哄堂大孝 xswl
- 自我介绍
- 看到博客,The Future of Docker Containers 举例:eBpf和无状态
- cat命令发生了什么?
- 只知道从磁盘读取文件再打印出来
- wget url过程
- 解析命令
- fork+exec,将wget binary装载进去并执行
- CLONE和exec的区别
- 请求url涉及的过程:接受到网络包的过程,网卡,中断,协议栈,read
- 有什么提升网络性能的方法:
- 绕过内核:ebfd, DPDK
- 其他:不会了/哭哭
- C++
- vector<node> new一个struct数组是如何调用构造函数的
- 分配空间再调用构造函数呗
- 面试官一直追问怎么调用构造函数的
- 我说知道内存地址,知道构造函数指针地址,不直接构造就行?
- 最后才明白,他大概是想问placement new,在指定内存上调用构造函数
- 和在栈上构造有什么区别:栈上是编译器帮忙调用的,new是相当于程序员自己调用的?
- vector<node> new一个struct数组是如何调用构造函数的
- 项目:
- 讲一下goroutine是如何实现的
- 什么时候调用yield?用户不会调的,事件未就绪的时候掉调用,例如read调用返回0和EAGAIN时
- for死循环会调用吗?我们将计算密集型和IO密集型分开,和go一样,我们有10ms系统级抢占机制
- 体系结构记得哪些?
- 一些折中和并行思想吧,像cache,虚拟地址空间,TLB,五级流水线
- TLB的作用:快表,相当于页表的cache
- 虚拟内存的作用:提供统一的管理和访问;程序的编写,装载,链接,执行;进程的隔离;内存管理;扩大内存
- 编译原理记得哪些?
- L1、L2、L3文法,递归下降法,语法树和各种自动状态机、中间代码优化
- 编译的过程:预编译、编译、汇编、链接
- 预编译干什么:宏定义展开,替换等
- 词法分析和语法分析在哪一步:编译
- 讲讲Code style
- 举一些例子:智能指针,传引用而不是值,返回值优化
- Google Code style看过吗? 昨天翻过(但是我没读。。。
- 反问
- 我:没什么问题,二面面试官介绍过了
- 面:那我不讲了
- 我:您还是讲讲吧
- 我:呜呜呜呜呜呜呜呜
hr面
15分钟
- 没有自我介绍
总结
字节的流程也比较快,面完通常会立即出结果,也会发邮件让选择下次面试时间,而不是知会你(实名批评某T姓大厂
多谢字节手下留情,没整什么hard题
最后,许愿Offer,给我Offer.....求求
更新:
收到offer啦🌶🌶🌶