便利蜂实习一面凉经
便利蜂
0.自我介绍
1.最小生成树的两种算法,以及之间的区别?
prim算法
首先以一个结点作为最小生成树的初始结点,然后以迭代的方式找出与最小生成树中各结点权重最小边,并加入到最小生成树中。
加入之后如果产生回路则跳过这条边,选择下一个结点。当所有结点都加入到最小生成树中之后,就找出了连通图中的最小生成树了。
Kruskal算法
1.将图的各个边的权值进行排序
2.对图遍历,找到满足条件的最小的边(不形成环)
3.重复上述步骤,之到找到n-1条边即可
2.mvcc
当某个事物第一次执行查询之前,会生成一个一致性视图,包括所有未提交事物的id和和所有事物的最大id,然后从中选择一个最小id和最大id,当执行具体查询的语句时,我们根据一致性视图从undo日志的版本链中查找,版本链中存放的是数据库修改过的值(对于某一行,只不过加了两个属性,分别是事务id和回滚指针),从版本链的头部开始查找,当版本链的数据的事务id小于最小id,则说明这是已提交事务对其的修改,所有对当前事务是可见的;当事务id处于最小id和最大id之间,则分两种情况:1.落在未提交事务数组之中,则对当前事务不可见,通过回滚指针找到下一个版本;2.如果不在未提交数组之中,则说明修改该数据的事务是已提交的事务,对当前事务可见。如果大于最大id,则表示是未来发生的事务对改数据的修改,也是不可见的。大致就知道这些。。。。。
3.mysql的索引,单列索引,复合索引,间隙所,mysql怎么解决幻读的,explain的用法
4.redis的缓存一致性
5.笔试中的三道算法题的第三道为什么采用广度优先搜索?
6.反问
(注意:都是项目和笔试中的问题)
#实习##面经##便利蜂##算法工程师#