

面试题如下
1、谈谈你对 Spring 的理解。
2、简单介绍一下 Spring bean 的生命周期。
3、Spring 的通知是什么?有哪几种类型?
4、Mybatis 中一级缓存与二级缓存?
5、简单介绍一下 Shiro 框架。

上期答案请查收
1、什么是存储过程,使用存储过程的好处?
存储过程(Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
优点:
(1)允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
(2)允许更快执行,如果某操作需要执行大量 SQL 语句或重复执行,存储过程比 SQL 语句执行的要快。
(3)减少网络流量,例如一个需要数百行的 SQL 代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。
(4) 更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。
2、存储过程和存储函数的特点和区别?
特点:
(1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
(2)对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
(3)存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。
区别:
(1)函数必须有返回值,而过程没有.
(2)函数可以单独执行.而过程必须通过 execute 执行.
(3)函数可以嵌入到 SQL 语句中执行.而过程不行.其实我们可以将比较复杂的查询写成函数.然后到存储过程中去调用这些函数.
3、触发器的作用有哪些?
(1)触发器可通过数据库中的相关表实现级联更改;通过级联引用完整性约束可以更有效地执行这些更改。
(2)触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。
(3)触发器还可以强制执行业务规则
(4)触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。

4、throws 和 throw 有什么不同点?
throw 是语句抛出一个异常。
语法:throw (异常对象); throw e;
throws 是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......} public void doA(int a) throws Exception1,Exception3{......}
5、JAVA 中使用 final 修饰符,对程序有哪些影响?
1、修饰类当用 final 修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用 final进行修饰。final 类中的成员变量可以根据需要设为 final,但是要注意 final 类中的所有成员方法都会被隐式地指定为final 方法。
在使用 final 修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为 final 类。
2、修饰方法
被 final 修饰的方法将不能被子类覆盖,主要用于 1,把方法锁定,以防任何继承类修改它的含。2,在早期的 Java实现版本中,会将 final 方法转为内嵌调用,所以效率能够提升。
3、修饰变量
对于一个 final 变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
当用 final 作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且 final 变量一旦被初始化赋值之后,就不能再被赋值了。
欢迎各位同学、家长咨询报名
李老师:13007633571
扫描下方二维码,立即报名
👇


