更新时间:2019-08-27 14:29:44 来源:极悦 浏览2208次
Spring主要使用了什么模式?
工厂模式:每个Bean的创建通过方法
单例模式:默认的每个Bean的作用域都是单例
代理模式:关于Aop的实现通过代理模式
${}和#{}的区别?
${}:简单字符串替换,把${}直接替换成变量的值,不做任何转换,这种是取值以后再去编译SQL语句。
#{}:预编译处理,sql中的#{}替换成?,补全预编译语句,有效的防止Sql语句注入,这种取值是编译好SQL语句再取值。
总结:一般用#{}来进行列的代替。
谈谈转发和重定向的区别
第一个差别点,就是重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向。
第二个差别点,重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址。
谈谈cookie跟session的区别
cookie数据保存在客户端,session数据保存在服务器端。
一般情况下,服务器会在一定时间内(默认30分钟)保存这个Session,过了时间限制,就会销毁这个Session。
如果不设置这个过期时间,那么Cookie将不存放在硬盘上,当浏览器关闭的时候,Cookie就消失了,这个SessionID就丢失了。如果我们设置这个时间为若干天之后,那么这个Cookie会保存在客户端硬盘中,即使浏览器关闭,这个值仍然存在,下次访问相应网站时,同样会发送到服务器上。
关系数据库中的主键和外键有什么关系?
定义主键和外键主要是为了维护关系数据库的完整性。
主键是能确定一条记录的唯一标识,比如,一条用户记录包括身份证号,姓名等。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号可以是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性,一表的外键是另一张表的主键或唯一字段。
比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
谈谈事务的隔离级别
Readuncommitted
读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。
Readcommitted
读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。
Repeatableread
重复读,就是在开始读取数据(事务开启)时,不再允许修改操作
Serializable序列化
Serializable是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
描述一下spring的工作原理
Spring中两大核心思想IOC和AOP,IOC控制反转将对象创建的权利交给了Spring容器,可以自动生产。利用的就是反射的原理,动态的创建对象,调用对象,Spring就是运行的时候根据配置文件来动态的创建对象和维护对象之间的关系,实现了松耦合的思想。
AOP是面向切面编程,就是可以很好的把业务逻辑和系统服务分离(事务,日志等),业务逻辑只关心业务的处理而不再去处理其他事情,这些都是通过配置来实现。
谈谈Spring如何配置声明式事务控制
声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解
配置文件
-配置事务管理器
-事务的策略(这里可以配置事务的隔离级别,传播属性,是否可读等)
-配置事务的切入点,注入事务属性
注解
-配置事务管理器
-开启事务控制的注解支持
-在类或者方法上面添加@Transactiona,事务的属性都在该注解的属性上设置
spring的特点?如何手写实现spring原理?
Spring量大核心思想AOP和IOC(具体上面有)
Spring是个巨大的工厂,这个工厂就是专门用来生成Bean,所以如果要手写的一定要用到工厂设计模式
写一个工厂类,对外提供一个静态方法,这个方法接受用户要创建对象的一个id,对象和id可以写到配置文件里面,工厂再提供一个init方法进行读取配置文件。用户调用的是传入id根据id在配置文件中找到要创建的对象,最后通过反射创建对象并返回给用户。
springMVC中的常用注解
@RequestMapping--请求和方法映射
@RequsetBody--接收客户端出传入的JOSN数据
@ResponceBody--返回客户端JOSN数据
@Controller--代表控制层
@Service--代表业务层
@Repository--代表数据层
@Component--把Bean添加到Spring容器中
@Autowired--自动注入,按照类型注入
@Resource--自定注入,可以按照类型注入也可以按照名字注入
@PathVariable--restFul风格的时候使用
@Param--表单参数和方法形参不一样时使用
更多Java相关面试题,登录极悦IT培训官网,Java面试题专栏。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习