面试题解析记载

工具类源码

hashcode: 在创建类的时候要覆盖equal 和 hash 方法

ArrayList :基础数组来实现的,遍历查找快,但是删除需要移动数组数据,处理会慢。

LinkedList :实现原理通过链表实现,插入快,查找和删除慢。

HashMap:非线程安全的,通过链表实现的,查找速度回快很多,通过key取Hash直接找到数据值的位置,如果数据Hash位置

         有多个值,则通过对key的equal对比找到对应的值。

两个对象相等则hash一定相等,但hash相同不一定equal。

Hashtable 线程安全的,key和value都不可以是空, 

HashSet :基于HashMap 的key实现的,对象不能重也是通过对比hashCode和equals来实现的。 

StringBuilder 非线程安全的,在没有线程问题的情况下,使用速度快。

StringBuffer :线程安全的,在有线程安全的问题考量的使用,使用避免出现线程安全问题。

@autowire 类型查找 

resource 区别 ,  根据名称查找匹配

事务的隔离机制 :在并发的网络环境中,线程的并发问题呗servlet容器基本解决,但基本上数据都是存储到数据库中的,数据库只有一个,

多线程访问的时候会出现并发问题,那数据库是怎么处理并发的问题呢? 也是通过锁机制,mysql中锁按照锁的数据多少分为行锁,表锁。

InnoDB有两种模式的行锁:共享锁,排它锁

未提交读,提交读,可重复读,序列化 ,主要解决的问题:脏读,不可重复读,幻读

未提交读:两个事务操作数据,一个事务更改了数据但是没有提交,另一个事务在没有锁的情况下可以读到这个事务没有提交的数据,这是脏数据。

不可重复读:两个事物操作数据,一个事务读取了一条数据然后另一事务也读取然后修改了这条数据,并且修改后提交了数据,这时候第一个事务

   进行第二次数据读取,则读到的是第二个事务新提交的数据,两次读取的数据不一致,数据出现不可重复读的问题。

幻读:两个事务操作数据,第一个事务读取一个数据列表,然后第二个事务这时候插入一条数据并且提交了事务,这是第一个事务在重新读这个

      数据列表,列表中就会多出来一行数据,像出现了幻觉一样。

上述三个问题可以用事务的隔离级别来处理。

Mysql的默认隔离级别是不可重复读。

猜你喜欢

转载自username2.iteye.com/blog/2347126