100天准备找工作倒计时:第十一天
今天收到了美团的面试邀请,看了很多美团的面经,发现我现在的知识储备远远不够呀,离面试还有十天,这十天要紧张的冲刺一波 ,全力做到能做的最好吧!
上午还参加了招商金科的笔试,居然是在他们自己的系统里做的,代码编译器都不给。。。好在算法题很简单
招商金科笔经:
1.50个左右的选择题,数据库居多,还包括操作系统、计网和一些java基础
2.算法题:一个二叉搜索树的镜像,要求用递归和循环两种方式,递归我用的是后序遍历,循环的话用到了层序遍历,今天还是昨天正好刚看过层序遍历,感觉还挺巧的
还有一个算法题是什么来着,具体不记得了,反正也是属于很简单的题
算法题:
1.填充每一个节点的下一个右侧节点指针(力扣每日一题):
这里先做了一下前置题目层序遍历,主要思想是用一个队列,每次将同一层的入队再出队,正好还帮助了今天的笔试,不过今天笔试的那个因为是搜索树而且要镜像所以用的是栈来辅助
有了层序遍历的基础后,填充其实就是简单的层序遍历然后出队的过程中用一个辅助变量节点来完成链接;
面试题:
1.数据库的事务(也是第N次复习了,偶尔还是会忘一些东西):包括事务的概念,还有ACID特性以及四个特性的基本概念
2.数据库事务常用的语句:Begin、End、Commit、Save
3.数据库的四个隔离级别(这个是之前一直不太记得住的,看得多了慢慢理解也记住了):要了解四个级别的特点和解决的问题
4.隔离级别的具体操作:之前只是背一下四个级别,今天看美团的面经发现会问的更细致一些,就去CSDN好好看了看;
四个隔离界别的主要区别其实就是在加锁的具体操作上,这里还涉及到另一个问题就是数据库锁的分类(第5题)
4.1读未提交:任何操作都不加锁,所以一个事务可以读取到其他事务对数据的操作,也称之为脏读
4.2读已提交:读操作不加锁,写操作加锁。读被加锁的数据时,读事务每次会读undo log中的最近版本,因此可能会对同一数据读到不同版本,但能保证每次都读到最新的数据(事务提交之后的,不可重复读,两次读不一致),但是不会在记录之间加间隙锁,所以允许新的记录插入到被锁定记录的附近,所以再多次使用查询语句时,可能得到不同的结果(Non-Repeatable Read);
4.3可重复读:第一次读数据的时候就将数据加行锁(共享锁),使其他事务不能修改当前数据,即可实现可重复读。但是不能锁住insert进来的新的数据,当前事务读取或者修改的同时,另一个事务还是可以insert提交,造成幻读(幻读和增加删除操作相关,重复读和修改操作相关);
(注:Mysql的可重复读的隔离级别解决了 “不可重复读” 和 “幻读” 2个问题,因为使用了间隙锁,下文讲解)
4.4串行化:InnoDB 锁表,读锁和写锁阻塞,强制事务串行执行,解决了幻读的问题;
5.Innodb数据库引擎的锁类型:
4.2读已提交:读操作不加锁,写操作加锁。读被加锁的数据时,读事务每次会读undo log中的最近版本,因此可能会对同一数据读到不同版本,但能保证每次都读到最新的数据(事务提交之后的,不可重复读,两次读不一致),但是不会在记录之间加间隙锁,所以允许新的记录插入到被锁定记录的附近,所以再多次使用查询语句时,可能得到不同的结果(Non-Repeatable Read);
4.3可重复读:第一次读数据的时候就将数据加行锁(共享锁),使其他事务不能修改当前数据,即可实现可重复读。但是不能锁住insert进来的新的数据,当前事务读取或者修改的同时,另一个事务还是可以insert提交,造成幻读(幻读和增加删除操作相关,重复读和修改操作相关);
(注:Mysql的可重复读的隔离级别解决了 “不可重复读” 和 “幻读” 2个问题,因为使用了间隙锁,下文讲解)
4.4串行化:InnoDB 锁表,读锁和写锁阻塞,强制事务串行执行,解决了幻读的问题;
5.Innodb数据库引擎的锁类型:
根据读写操作可以分为:S锁(共享锁,读加锁,不可写,可并行读)和X锁(排他锁,写加锁,其他读写操作都阻塞)
根据加锁范围可以分为:表锁、行锁、间隙锁
6.间隙锁:今天看到一个面试题,Innodb的默认隔离级别为什么可以避免幻读,答案就是是用了间隙锁;
然鹅间隙锁的操作略微复杂,暂时还没看懂,看懂了我会在下次的总结里写出来的
7.Innodb默认隔离级别下的MVCC机制:
MVCC多版本并发控制机制,innodb存储的最基本row中包含一些额外的存储信息 DATA_TRX_ID(6字节,记录了最新跟新这条记录的transaction的id,每处理一个事务,该值自动加一),DATA_ROLL_PTR(7字节,指向当前记录项的rollback segment中的undo log,帮助寻找之前版本的数据),DB_ROW_ID(6字节,用来记录Innodb是否自动生成聚集索引),DELETE BIT(用来标记该条记录是否被删除,这里只是标记删除,真正的删除时commit后)。
8.数据库的索引的系列问题:内容很多,也很杂,包括分类啊优缺点对比啊使用原因使用环境等等,还在看的过程中,明天再做个总结吧
今天就是这么多咯,明天要出去给室友过生日,可能也学不了多少,明天玩完回来就要展开为期十天的冲刺了,目标不大,只求通过美团一面,不要输的太难看!!