字节tt后端二面
2min
自我介绍
20min
实习工作讨论
15min
Q: Redis分布式锁的原理
Set key val NX EX time, 加锁成功返回OK,锁被其他节点持有返回nil。以及过期时间,续期策略,看门狗等。
Q: 介绍一下mysql
数据表 -> 数据页(避免从磁盘读取全部数据) -> 根据页号和索引字段建立B+树索引、热点数据页自适应哈希索引 -> buffer pool 缓存数据页,减少读磁盘次数 -> 执行器(执行计划) -> 优化器(生成执行计划) -> 分析器(拆解语句) -> 连接管理
Q: 联合索引原理
a_b_c联合索引,先a排序,a相同再b排序,ab均相同按c排序。
Q: 数据库事务性质介绍一下
ACID
Q: 业务上两条Update语句在一个事务中会产生冲突或污染吗
一个事务中两条Update语句要么全部成功,要么全部失败,且同一个事务中多条语句共享一个数据库连接,语句顺序执行,后一条会基于前一条的结果,所以不会冲突
Q: @Transaction 注解原理
基于AOP面向切面编程,方法被标注,会创建一个动态代理对象,先执行代理增强逻辑,再调用目标方法。根据捕获的异常判断是否回滚。
Q: 事务的自动提交介绍一下
数据库连接(如JDBC连接)正常情况下,单条语句默认开启自动提交,多条语句需要关闭自动提交,等多条语句执行完后再手动提交,出现异常则回滚。@Transaction获得连接后也封装了上面的逻辑
15min
Q: 判断A树是不是B树的子结构
递归多子树
Q: 我定义了一个全局静态变量用来观测结果,会出现什么问题,怎么解决
中等肤多实例时会发现内容冲突,可以用ThreadLocal做变量备份,或者改成实例变量
上周面的,这周已经凉了,面试的时候我都没搞清楚面试官想问什么,面试官提问题的时候提的很大,梳理之后我觉得可能是想问这些问题。