一些自己遇到的面试题

来源:互联网 发布:怎么提高网络延迟 编辑:程序博客网 时间:2024/05/02 00:23

1.悲观锁  乐观锁

答:

2.spring事物隔离级别


答:
五个事务隔级别分别为:lsolation的属性值

1,default

默认的事务隔离级别

2,read_uncommitted(读操作未提交)

读未提交,一个事务可以操作另外一个未提交的事务,不能避免脏读,不可重复读,幻读,隔离级别最低,并发性 能最高

3,read_committed(读操作已提交)

读已提交,一个事务不可以操作另外一个未提交的事务, 能防止脏读,不能避免不可重复读,幻读。

4,repeatable_read(可重读)

能够避免脏读,不可重复读,不能避免幻读

5,serializable(串行化)

隔离级别最高,消耗资源最低,代价最高,能够防止脏读, 不可重复读,幻读。


七个事务的传播行为

1,propagation_required

如果一个事务存在,则支持当前事务,如果不存在,则创建新的事务

2,propagation_supports

如果一个事务存在,则支持当前事务,如果不存在,则非事务的方法运行

3,propagation_mendatory

如果一个事务存在,则支持当前事务,如果存在,则抛出异常

4,propagation_requires_new

总是要开启一个新的事务,如果事务存在,将该事务挂起

5,propagation_not_supported

总是非事务方法运行,并挂起所有的事务

6,propagation_never

总是非事务方法运行,如果事务存在则抛出异常

7,propagation_nested

某一个事务存在,则运行在一个嵌套的事务中






3.spring事物机制,特性

答:
事务有四个特性:ACID
原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完
成部分失败。在现实中的数据不应该被破坏。
隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过
来。通常情况下,事务的结果被写到持久化存储器中。


4.线程实现方式,同步方法的关键字 

答:继承Thread,和实现Runnable接口。  同步关键字:synchronized

5.线程同步方法和同步代码块的区别

答:

6.mysql Oracle分页

答: mysq: select * from Table where limint 1 ,5;

Oracle:select * from (select a1.*,rownum rn from (select * from student) a1 where rownum <=5) where rn>=2;

7.说一下分布式架构

答:

8.集合

答: SET  LIST  MAP
  一、
  1.Set:,无序,元素不可重复(但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
  2.List:有序,列表存储,元素可重复
  3.Map:无序,元素可重复
   二、
  1.Set接口:有两个实现类(HashSet(底层由HashMap实现),LinkedHashSet)
  2.List接口:有三个实现类(
 LinkedList:基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢;
     ArrayList:非线程安全的,效率高;基于数组;便于索引,但不便于插入删除
      Vector:基于线程安全的,效率低;基于数组; )
  3.Map接口:有三个实现类(HashMap,HashTable,LinkedHashMap)
     HashMap:非线程安全,高效,支持null;
     HashTable:线程安全,低效,不支持null;
     LinkedHashMap:是HashMap的一个子类,保存了记录的插入顺序
  SortMap接口:TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序
    注:最常用的,冷门的除外)

把非线程安全的集合变为线程安全的集合,只需要调用Collection中的synchronized***方法即可返回线程安全的集合,比如Collections.synchronizedList(list);会返回一个线程安全的list集合

9.什么是脏数据,脏读,不可重复读,幻觉读?
 答:
脏读: 指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据, 那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
    
不可重复读: 指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。
            

幻觉读: 指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

10.Struts2简单执行流程

1、客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被 FilterDispatcher(核心控制器)接收。

3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。

4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5、Action执行完毕,根据 struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

6、返回HTTP响应到客户端浏览器。

11.Redis相比memcached有哪些优势和区别?
1.Redis的速度比memcached快很多
2.Redis可以持久化其数据

区别

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等;

2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储;

3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘;




12.Redis使用场景
1.需要经常使用到的数据可以存放于Redis中
2.修改较少的额数据可以存放于Redis中


13.Overload(重载)和Override(重写)

Overload是重载,是有相同的方法名,但参数类型或个数彼此不同
Override是重写,是在子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的改方法。

14.beanFactory和factoryBean

1.BeanFactory是个Factory,也就是 IOC 容器或对象工厂,所有的 Bean 都是由 BeanFactory( 也就是 IOC 容器 ) 来进行管理。

2.FactoryBean是一个能生产或者修饰生成对象的工厂Bean,可以在IOC容器中被管理,所以它并不是一个简单的Bean。当使用容器中factory bean的时候,该容器不会返回factory bean本身,而是返回其生成的对象。


15.拦截器与过滤器的区别 : 
1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调
2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次



1 0
原创粉丝点击