字节跳动提前批 后端 五面面经(已意向书)
最初投的部门在二面挂了,被其他部门捞之后重新进行三次面试,共五次面经。
一、字节一面 80min
1. 自我介绍
2. 讲一个服务器端的项目
3. http和https的区别
4. https用到了哪些加密技术
5. http使用到了哪些其他协议?
6. **讲一下dns过程。给一个网址www.bytedance.com,dns服务器如何逐级解析的
7. 讲一下tcp四次挥手,time-wait干嘛的,close-wait干嘛的,在哪一个阶段
8. Tcp粘包拆包问题
9. TCP拥塞控制与流量控制区别
10. Mysql了解吗,讲一下事务,那mysql是如何保证ACID的呢(答了undo-log,redo-log,加锁,mvcc),那讲一下MVCC
11. 快照读在提交读和可重复读级别下有什么区别
12. 你提到了隐藏列有一个DB_ROW_ID,是干嘛的?那假设有10个update,到第九个回滚了,DB_ROLL_PTR如何做的,那提交了是否更新DB_ROLL_PTR?
13. 讲一下索引及其底层,非叶子节点存储的是什么,只有b+树索引吗?(MEMORY是hash索引)
14. 算法题:给定一个字符串数组[“hello”,”max”,”aello”,”world”],search(String s),判断字符串数组中是否存在一个字符串s1使得:s修改1个字符变为s1**
15. 算法题:二维数组,从左往右递增,从上到下递增,有重复数字,找一个数字是否存在于数组中。
二、字节二面 70min
自我介绍
项目相关
用户自己写一个String类,会发生什么?
Sleep()和wait()的区别?
Object类里有哪些方法?
那讲一下equals()与hashcode(),什么时候重写,为什么重写,怎么重写?
给一道题,判断输出。
tcp四次挥手,time-wait
http状态码有哪些(1xx-5xx),那讲一下301与302的区别
讲一下Mysql聚集索引与非聚集索引,主键索引使用int与string有啥区别,你刚才说了索引底层b+树的结构,那么使用String会不会影响到这个结构
算法题:找出数字字符串中最长的连续上升子序列(连续上升:前后两数之差为1)(LeetCode 300变种)
三、字节重新一面 50min
1. 项目(你的哪些技术能用到未来的工作上)
2. Java多态,如何实现?动态绑定
3. Hashmap底层,扩容机制,为什么到8转为红黑树,装载因子为什么0.75,你自己设计一个hashmap,如何确定装载因子
4. Redis作为缓存的基本使用,redis数据结构及底层(c的char[]和redis String有啥区别)
5. MySQL性能调优;为什么不用select *
6. 算法1:arr[]数组,n个奇数,n个偶数,重排,奇数位置是奇数,偶数位置是偶数(从0开始),空间复杂度O(1),时间复杂度O(n)
7. 算法2:判断数组arr[]中是否存在2个数的异或为k(时间复杂度最优)
8. 反问:部门业务?
四、字节二面 54min
项目
进程与线程区别,进程通信方式,说一下socket,socket在本机和在网络通信区别
多进程与多线程的区别以及使用场景
算法题:之字型打印二叉树
场景题目:设计王者荣耀战力排行榜,显示某区服所有玩家战力排行情况,以及我自己的战力排行情况
反问
(这一面让场景题搞的有点懵,很多题回忆不起来了)
五、字节三面 35min
1. 项目
2. 讲一下https,为什么要先使用非对称加密,那非对称加密不能保证安全性吗?(能)
3. 讲一下http,请求头,状态码
4. 现在我们视频面试用到哪些协议(DNS,HTTP,HTTPS,TCP,UDP),UDP用在哪里
5. 讲一下你了解的对称加密算法和非对称加密算法(DES,AES,RSA),非对称加密如何保证它的安全性(数论大数分解)
6. xss攻击、cors攻击原理
7. Mysql存储引擎的作用,事务隔离级别,分别存在什么问题
8. Java如何保证多线程安全
9. I/O多路复用讲一下,epoll优势在哪,为什么,epoll水平触发与边缘触发
10. 算法题:二维数组顺时针旋转90度
11. 有实习经历吗?为什么不实习?
12. 未来职业规划
13. 讲一个你最有成就感的事(社团+科研)
14. 说一个自己的优缺点
15. 反问