
字节国际电商一面(3.12) --凉
不得不说,面试官问的一些问题还是很值得去思考的,有些地方平时真的没有想到啊
JAVA
hashmap 扩容时为什么有可能死锁
红黑树的旋转具体流程
链表和数组的使用场景
- 数组访问速度快,但插入删除慢,且内存必须连续,可能存在空间浪费或不足无法扩展
- 链表插入速度快,可以动态开辟空间,适合频繁增删改,但是访问速度慢
环形链表的应用
- 资源循环分配,循环队列(体现公平性、轮询)
怎么实现链表,有什么方式
MySQL
MySQL的B+树是如何分裂的
- 每个索引页面维护了一个上次插入的位置,以及上次的插入是递增/递减的标识
- 对于新插入的数据,如果不满足递增/递减的约束,采用传统的50%分裂策略,把50%的数据移入新的一页
- 否则,采用优化策略,原本满的页数据保留。对于新插入的递增/递减数据,如果相邻页可以存放数据,并入,否则,将其单独放入新页(减少了空间利用率低的问题)
- 并入策略是为了避免下图这种BUG使得空间利用率更低
- 每个索引页面维护了一个上次插入的位置,以及上次的插入是递增/递减的标识
mysql数据空洞问题,如何解决
mysql的执行原理
- 连接器:拦截器与客户端建立连接,权限验证(默认为长连接,可以接受多个请求)
- 分析器:对SQL语句词法分析,语法分析,检查SQL语句执行权限
- 优化器:优化SQL语句,分析索引使用
- 执行器:打开目标表,从存储引擎获取所有数据后响应给客户端
limit分页怎么优化