2021届校招提前批7月22作业帮(北京Java岗)视频一面
1 自我介绍
2 MySql的存储引擎,以及InnoDB和MyISAM的区别?
3 Mysql的索引,以及B+树与hash索引的区别,为什么不采用B树而采用B+树?
4 给出联合索引(a,b),select *from table where a>0 and b>0,是否走索引,哪个走索引,哪个不走,以及从联合索引的底层结构去解释为什么?
5 写出一个Sql语句(分组)
6 Mysq的事务,以及隔离级别有哪几种,说一下可重复读解决了什么问题?还有什么问题没解决?幻读如何解决的?说一下间隙锁如何实施的?
幻读的具体场景?
7 为什么InnoDB表必须有主键,并且推荐使用整形的自增主键?
8 写出一个单例模式,为什么要用voliate修饰? 出现synchronized为啥还需要voliate,以及synchronized能保证啥?
9 redis的数据类型?各种数据类型的应用场景?分布式锁的实现?
10 有一个100万数据,怎么快速的查找到前最大的100个数?
11 算法 单链表反转 链表中两两数据反转
12 实习经历 如何学算法的
自己稍微总结了一下
2
- MyISAM不支持事务;InnoDB是事务类型的存储引擎。
- MyISAM只支持表级锁;InnoDB支持行级锁和表级锁,默认为行级锁。
- MyISAM引擎不支持外键;InnoDB支持外键。
3
二叉树
缺点: 有序的,可以退化为单链表的形式。
平衡二叉树
缺点:索引也不是只是存在内存里面存储的,还要落盘持久化,索引也存储在磁盘中,占据大小的。
数层很高,多次I/O操作,消耗性能很大。因为数据量特别大。
B树
特点:叶子节点具有相同的深度,叶子点的指针为空。
所有索引元素不重复
节点中的数据索引从左向右递增排列
B+树
特点:
非叶子节点不存储data,只存储索引,这样可以放更多的索引
data只存在叶子节点,这样到达叶子节点的路径查询长度都一样,使用b+树索引更加稳定
叶子节点用双向指针连接,提高区间访问的性能。
1.范围区别: 1. hash索引因为底层是哈希表,数据存储在哈希表中顺序是没有关联的,所以他不适合范围查找,如果要范围查找就需要全表扫描,他只适合全值扫描;
简单的来说就是hash索引适合等值查找,不适合范围查找
2. B+ tree树索引,底层是多路查询平衡树,节点是天然有序的(左节点小于服节点,右节点大于父节点),所以对于范围查找的时候不需要做全表扫描;
2. 排序 hash索引无法进行排序
3. 哈希碰撞问题 如果存在重复键值对,哈希索引效率就会很低
4 字段a走索引,字段b不走索引
#面经##校招##Java# 7 因为叶子节点是按顺序排列的,如果是非自增的话,就会插入的时候频繁的分裂页(效率降低)。
8 vaoliate保证可见性 有序性,sunchronzied保证原子性,可见性,不能禁止指令重排
10 1.根据快速排序划分的思想求解。2.(堆排序)先取出前100个数,维zhi护一个100个数的最小堆,dao遍历一遍剩余的元素,在此过程中维护堆就可以了。3.分块查找。