德邦物流面试题

1、谈谈你用到过ssh哪些东西

      回答:spring事物,strust2零配置,拦截器,hibernate.

2、为什么要用拦截器,如何配置的。举例说明

    回答:如拦截非登陆用户访问,web安全拦截关键字符。

              配置:1、在web.xml配置实例  2、在struts.xml进行配置初始化加载。

3、谈谈线程池的原理,为什么要用多线程

  目的:   如果每到达一个请求,就创建一个新的线程,那么线程创建和销毁的时间或者开销可能远大于处理请求的时间。线程池主要为了解决线程生命周期开销和系统资源不足的  问题。

原理:一个简单的线程池包括:线程池管理器:用来创建和销毁线程池,并将线程放入线程池中。

               工作线程:一个可以循环工作的线程

                任务队列:缓冲机制,把没有处理的任务放在队列中

                 任务接口等部分:每个任务必须实现的接口

   4、spring事物的隔离级别,spring事物的传播属性

    一、PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。

    PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。

    PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。

    PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

     PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。

隔离级别:

1、Serializable:最严格的级别,事务串行执行,资源消耗最大;

2、REPEATABLE  READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。

3、READ  COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。

4、Read  Uncommitted:保证了读取过程中不会读取到非法数据。隔离级别在于处理多事务的并发问题。

5、谈谈你对sql调优的见解。

  1、sql语句中不要用where作空值判断  ,如: select id from t where num is null

   2、尽量避免在where子句中使用<>或!=

  3、尽量避免在where子句中使用or

 4、in或not in 也要慎用,否则会导致全表扫描.对于连续的可以用between and 代替

5、where 子句中使用参数也会导致全表扫描

6、where子句中避免使用表达式或者函数。

    

你可能感兴趣的:(面试题)