Java高级面试知识点

系列文章目录

Java高级面试知识点



一、SSM

1. JDBC 跟 Mybatis的区别?

答案:
1.Mybatis是一种支持SQL的持久层框架,底层仍然是jdbc。
2.Mybatis相对于直接使用JDBC, 代码大大简化,比如能够直接将ResultSet中的数据转换成所需要的Java bean对象等。
3.MyBatis对SQL统一放到配置文件中进行管理,不用将SQL语句分散在各个java类中,方便代码的维护。
4.JDBC代码相对繁琐但访问速度更快,比如使用JDBC批处理等方式效率比Mybatis要高。

2.简述Spring事务配置过程?
答案:
1.Spring提供了多种事务管理器,将事务的具体工作委托给底层的持久化机制来实现(一般是数据库)。
2.Spring为不同的事务提供了一致的编程模型。
3.具体使用时,可以选择使用声明式或者编程式事务。推荐使用声明式,这种事务的开启简单优雅,是Spring官方推荐的用法。

3. Spring框架的优点都有什么?
答案:

1.简化编程:Spring对JavaEE中的一些比较繁琐的API做了简化和封装,使用封装之后的API不仅代码更简洁,而且质量更高。
2.解耦:对象之间的依赖关系由容器来统一管理、降低了对象之间的耦合度、方便代码的维护,同时也实现了资源的统一调度和管理。
3.支持面向切面编程AOP:可以方便对程序添加通用的服务,比如事务、权限管理等。
4.集成其它框架:不发明重复的轮子,集成其它一些优秀框架、使开发者用统一的并且更加简洁的方式来使用这些框架。
5.轻量:可以依赖项目的实际要求,有选择的使用Spring框架的全部或者一部分。

4.列出IOC的3种主要注入方式?
答案:
1.构造方法注入;
2.setter属性注入;
3.接口注入。

5.简述Spring中常用的几种Advice注解?

答案:
1.@Before:在方法执行前处理
2.@AfterReturning:在方法正常执行后处理
3.@AfterThrowing:在方法执行期间抛出异常时处理
4.@After:在方法执行前后无论是否有异常也处理
5.@Around:在方法前后进行处理

6.什么是Spring 的AOP,AOP的工作原理是什么?

答案:
1.面向切面编程简称AOP
2.Spring AOP 是使用动态代理在运行期间植入增强的功能代码。
3.Spring的一个关键的组件就是AOP,其中最重要的服务是声明性事务管理,这个服务建立在Spring的抽象事物管理之上。
4.允许用户实现自定义切面,用AOP来完善OOP的使用,可以把Spring AOP看作是对Spring的一种增强。

7.什么是IOC/DI,实现原理是什么?
答案:

  1. IOC Inverse of Control 反转控制的概念,指的是对象之间的依赖关系交由容器(第三方)来管理。
  2. DI:Dependency Injection 依赖注入,指容器通过调用构造器或者set方法来建立对象之间的依赖关系,表现为给对象的依赖属性赋值。
  3. Spring框架通过DI实现了(完善了)IoC。

8.简述Spring中常用注解?
答案:

1.@Component :标注一个普通的spring Bean类。
2.@Repository:标注一个数据持久层组件类。
3.@Service:标注一个业务逻辑层组件类。
4.@Controller:标注一个控制器层组件类。
5.@Resource:注入组件。

9.简述SpringMVC的请求流程?
答案:

1.用户发送请求至前端控制器DispatcherServlet
2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5.执行处理器(Controller,也叫后端控制器)。
6.Controller执行完成返回ModelAndView
7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9.ViewReslover解析后返回具体View
10.DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11.DispatcherServlet响应用户

10.SpringMVC如何解决线程安全性问题?
答案:

  1. SpringMVC中的Controller默认是单例的,因此有可能有多个请求访问同一个Controller实例,从而有可能产生线程安全问题。
  2. 因此尽量避免在Controller中使用实例变量
  3. 使用ThreadLocal变量。

11.介绍一下Spring的事物管理
答案:
1.事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。
2.开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。
3.spring提供了几个关于事务处理的类:
1.TransactionDefinition //事务属性定义
2.TranscationStatus //代表了当前的事务,可以提交,回滚。
3.PlatformTransactionManager //这个是spring提供的用于管理事务的基础接口。

二、AJAX

1. 什么是Ajax?
答案:
1.Ajax的全称是Asychronous JavaScript And XML(异步JavaScript和XML);
2.是一种用来改善用户体验的技术,其实质是利用浏览器内置的一种特殊对象(即ajax对象)异步地向服务器发送请求,服务器返回部分数据,浏览器利用这些数据修改当前页面,整个过程页面无刷新,不打断用户的请求。

2. 请谈一下Ajax的优点?
答案:
1.通过异步模式,提升了用户体验
2.优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
3.Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。
4.Ajax可以实现局部刷新。

3. 简要描述Ajax应用的工作流程。
答案:
1.在基于Ajax的Web程序中,在用户行为和服务器端多了一层Ajax引擎,它负责处理用户的行为,并转化为对服务器的请求。
2.同时它接收服务器端的返回信息,经过处理后显示给用户。
3.由于Ajax在后台以异步的方式的工作,用户无需等待服务器的处理,可以进行并发工作,这就在用户界面层次中更为接近了CS架构的客户端平台。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值