字节抖音客户端四面已意向
一面
- 给出二叉树前序、中序遍历,写出树的后序遍历
- 操作系统:内存管理、虚拟内存
- Java内存管理:分区、JMM、垃圾回收
- 类的加载:静态变量什么时候被初始化
- 登陆用户数据表的设计,考虑安全性、性能、扩展性,什么是加盐
其他忘记了...
最后还有一道原创算法(不得不吐槽一下,之前面字节实习也是原创算法,看别人都是牛客网字节题库原题羡慕~)
二面
- 介绍项目
- 操作系统怎么划分内存?堆、栈有什么区别?
- 操作堆和栈谁比较快?为什么?
- 为什么随机IO的速度会比随机IO慢?
- 如何解决电商系统的常见问题?
- 如何解决缓存雪崩、缓存穿透?
- Rand5 实现 Rand7
- 什么是内核态和用户态,陷入内核态的方式?什么是中断?
两道算法,验证IP、O(1)空间翻转URL(www.bytedance.com->com.bytedance.www)
字节6面,终于遇到了原题...
其他忘了...
三面
1.狂问项目,介绍项目难点,抓住项目中的某些点,深入的问相关的知识~
2.单例模式,没有列举直接写了双重校验锁,引起了面试官的不满,问我是不是单例都要这样实现。
这一面基本在问项目相关的东西,具体问啥忘记了....
四面
这一面是我经历过的最难的一次面试(难度感觉比腾讯、字节后端的面试都难,本以为客户端会比较友好...)全程重点在操作系统和计算机网络,给一个具体的场景,分析原理
- 完整描述一次复制操作的过程(面试官强调复制不只是文件复制),不是简单的用Java实现文件复制,而是描述这次复制操作中的整个过程(操作系统做了什么?怎么做?什么系统调用?有什么区别?)
- UDP具体应用场景?为什么DNS用UDP,UDP很脆弱,用UDP会出现什么问题?具体举个例子?具体描述DNS劫持的过程
- Http2.0多路复用具体是怎么实现的?(我说了二进制分帧,然后有流标识符,所以实现多路复用,面试官不满,表示他想知道的是具体流程)
- 整个网络链路的性能指标分析,在5层协议的基础上,逐层分析每一层有那些影响网络性能的指标,如何提高性能(这个题真的难,我怕了~)
- 开放性题目,如何完善抖音推荐算法,让推荐更加准确?
还有其他一些具体的场景,忘记了...基本上都是关于计网和操作系统的某个场景,描述整个流程,如何实现,所背的Http、TCP全套八股文一点没用上,一度以为我已经凉了~
总结
总体的面试体验还是很不错,就是别人都是三面,然后我可能表现不好被加面,然后四面被暴捶。总的来说,八股文并不是很多,挺多背了很久的八股文完全没用上。面试前,基本翻了所有字节客户端的面经,感觉实际面试跟牛客网上的面经内容差距较大,感觉看到的面经多数以八股文为主~ 还是不要过度相信面经。
#字节跳动秋招提前批##面经##校招##字节跳动##Java工程师#