0307青书Java校招在线一面
MySql中索引是怎么实现的
哈希表k-v(适用于只有等值查询的场景),有序数组(适用于静态存储引擎,查找快)
一般使用的Mysql存储引擎是InnoDB,InnoDb默认索引实现:B+树。
什么是B+树
(有印象,但不知道)
InnoDB中,表根据主键顺序以索引的形式存放:索引组织表
数据存储在B+树中,每一个索引在InnoDB中对应一颗B+树
根据叶子节点的内容,索引类型分为主键索引和非主键索引。
主键索引的叶子结点存放整行数据,非主键索引叶子结点存放主键的值
对主键索引进行查询,将只需要搜索主键索引这课B+树,得到整行数据
对非主键索引进行查询,搜索B+树后会得到主键值,然后去搜索主键索引的B+树得到数据,成为回表。
你自己实现索引会怎么做
(不懂)
你的设计有什么问题吗
(不知道)
mysql有哪些锁
根据加锁的范围,大概有全局锁表锁和行级锁
锁什么时候会用
全局锁经典使用场景,全库逻辑备份,让整个库只读
表锁:锁表其他线程只允许读,且默认使用MDL元数据锁,为了保证读写的正确性
(行锁想不到)
MySql的锁是怎么实现的
(不知道)
事务隔离级别
读未提交:事务没提交时,其中的更改能被其他事务看到
读提交:一个事务所做的更改只有提交后才会被其他事务看见
可重复读:一个事务从启动到结束,其中多次查询的数据一致(未提交对其他事务不可见)
串行化:读写都加锁
事务隔离是怎么实现的
(有版本号印象,没想起来)
mysql中,每条记录的更新会记录数据状态,可以通过回滚操作得到前一个状态的值
(回滚日志,undo?)
TCP协议为什么是可靠的
(不知道)
实现端口到端口的通信,可靠是因为解决丢包问题
ACK回复,重发机制,滑动窗口
说说对TCP协议的理解
(三次握手四次挥手?)
JAVA中有哪些锁
(专门问了一下面试官问的是使用还是底层实现,没听清他说啥)
synchronized,Lock接口,SupportLock静态类,ReadWriteLock接口等
Lock锁是怎么实现的
(不知道)
说说面相对象的理解
leetCode最小栈实现
(先用数组,没对,改用链表,但是卡住了。然后十分钟面试官说结束)
总结
我太菜了,加油