0307青书Java校招一面 res:未通过

230 阅读2分钟

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最小栈实现

(先用数组,没对,改用链表,但是卡住了。然后十分钟面试官说结束)

总结

我太菜了,加油