一个月前的实习生面试,面试过程很愉快,面试官很和蔼。但一个月后复盘,发现并没有回答到点子上,如果我是面试官,我也不会要这么一个人。
AVL 强制左右子树高度相差为 1,平衡代价比红黑树大
(也就是数组与链表的区别)
这一块答上来了,但是都是错的,春天的面试太失败了
REPEATABLE_READ
隔离级别 Oracle 默认采用的 READ_COMMITTED
隔离级别. 这一块面试官应该想问,可重复读隔离级别如何消除不可重复读,但被我糊弄过去了。另外,RR 级别可以消除当前读的幻读。当然这些都是之后才学习到。
底层采用的还是 JDBC 的事务,只不过用动态代理以及注解的方式代理,抽出来往下看的话就是 TransactionManager 提供的 commit、rollback、close 的方法。
底层的结构是 FIFO 队列。线程进来先去竞争锁,竞争不到将线程扔到队尾自旋。一旦锁释放,若非公平锁,头结点后面的节点会通过自旋获得锁。
我应该答,可以通过 mvn -h
的方式看看