字节剪映后端暑期面经(附timeline)
一面:5.20
二面:5.22
三面:5.28
hr面:5.29
offer邮件:6.3
本来想着都五月下旬应该没什么机会了,找不到就回学校all in秋招,现在看来还有机会。还在战斗的兄弟们不要放弃,会赢的!
一面:
Java相关
- 垃圾回收器CMS,G1的区别
- 内存泄露排查的方法
- 多线程安全
- HashMap的原理,线程安全吗
- 反射机制
MySQL相关
- 事务隔离级别
- 慢查询优化
- 分布式事务(没了解过)
Redis相关
- 内存淘汰策略
- 持久化机制
- 慢查询优化
计算机网络
输入url到显示网页的过程,涉及了哪些协议,数据包从应用层到链路层怎么变化的
算法: lc42 接雨水
二面:
一、问实习
二、计算机网络
1. TCP协议
○ 如何实现可靠传输?(三次握手、序列号、流量控制、拥塞控制)
○ 如何保证数据完整性?(滑动窗口、ACK重传机制)
○ 如何防止数据篡改?(CRC校验)
2. I/O多路复用
○ select的工作原理(位数组监听FD,遍历检查事件)
○ epoll的优化(红黑树+链表,O(1)事件获取)
三、Java核心
1. 并发编程
○ synchronized实现原理(Monitor机制、锁升级:偏向锁→轻量级锁→重量级锁)
○ 轻量级锁如何通过CAS实现?
2. 集合类
○ ConcurrentHashMap线程安全设计(分段锁→Node粒度的CAS+synchronized)
○ 扩容机制(渐进式扩容、新旧数组切换)
3. 线程池
○ 核心参数(核心线程数、最大线程数、队列类型、拒绝策略)
○ 阻塞队列选型(有界 vs 无界,对性能的影响)
○ 核心线程数如何确定?(CPU密集型 vs I/O密集型任务)
四、数据库(MySQL)
1. InnoDB引擎
○ 关键模块与日志(redo log、undo log、binlog的作用)
○ 事务隔离级别实现(MVCC:Read View + 隐藏字段 + undo log)
2. 索引
○ 索引类型
○ B+树结构优势(矮胖树、范围查询高效、减少磁盘IO)
○ 为什么不用跳表?(冗余存储、B+树更适合磁盘访问)
五、算法题
lc25 链表K个一组翻转
三面
一、问实习
二、Redis相关
● 基础使用
○ 项目中Redis的用途?
○ Redis的IO模型?
● 持久化
○ RDB持久化是否会阻塞主线程?
○ RDB的持久化命令?
● 性能问题
○ 大Key问题:如何识别?如何解决?
○ 热Key问题:概念?如何解决?
○ 缓存异常场景:
■ 缓存穿透的解决方案?
■ 缓存击穿的解决方案?
三、操作系统
● 进程通信
○ 最高效的方式?
○ 数据同步如何实现?
● 锁的粒度
○ 乐观锁 vs 悲观锁
○ 如何选择,选择依据?
算法: lc456 132模式(之前没碰到过,没写出最优的解法)