2022全面JAVA面试经历总结
更新时间:2023-04-12 20:11:01 阅读量: 实用文档 文档下载
2017JAVA面试经验问题
0、对SSH的理解:
SSH即:Struts(表示层)+Spring(业务层)+Hibernate(持久层)
Struts:
Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。
在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。
(View:沿用JSP,HTTP,Form,Tag,Resourse;Controller:ActionServlet,struts-config.xml,Action)Hibernate:
Hibernate是一个持久层框架,它只负责和关系数据库的操作。
Spring:
Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层和持久层。
1、对Spring的相关理解
Spring框架目的是为了让模块和模块(对象和对象)之间的关联不是通过代码来关联而是通过配置来关联。
Spring的核心是IOC和AOP。
IOC(Inversion of Control)控制反转是关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。控制反转可以理解为生产和管理Bean的容器,原来需要在调用类中New的东西,现在都有IOC容器产生。
IOC的三种注入方式:inject
1、根据属性注入也就是Set方法注入
2、根据构造方法注入
3、根据注解注入
IOC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拔(有点像USB接口和SCSI硬盘了)。
DI依赖注入:Dependency injection
依赖注入是一个IOC的特殊实现,依赖注入是指一个对象使用另外一个对象来提供一个特殊的能力,例如:把一个数据库连接以参数的形式传到一个对象的结构方法里面而不是在那个对象内部自行创建一个连接。控制反转和依赖注入的基本思想就是把类的依赖从类内部转化到外部以减少依赖。
AOP(Aspect Oriented Programming):针对一个切面来编程。 AOP面向切面编程将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。面向切面编程通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.
AOP可以理解为实现调用某个方法之前或者之后,自动执行一系列自定义的语句(例如:每做一次数据库操作都要生成一句日志)。
实现AOP功能采用的是代理技术,客户端程序不再调用目标,而调用代理类,代理类和目标类对外具有相同的方法声明,有两种方式可以实现相同的方法声明,一是实现相同的接口,二是作为目标的子类在, JDK 中采用 Prox类产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则可以用CGLB。
AOP的主要作用是:日志记录,性能统计,安全控制,事务处理,异常处理等等
AOP和OOP的区别:
OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。
举个简单的例子,对于“雇员”这样一个业务实体进行封装,自然是OOP/OOD 的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。
同样,对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOD/OOP对一个动作进行封装,则有点不伦不类。
换而言之,OOD/OOP面向名词领域,AOP面向动词领域。
1.1.Spring常用注解
1、@Controller
用于标注控制层组件(如struts中的action),负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写。
例如:
@Controller
public class UserAction extends BaseAction{}
? 或者
@Controller("userAction")
使用@Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为"userAction"的action,这个名字是根据UserAction类名来取的。
2、@Service
@Service对应的是业务层Bean,例如:
@Service("userService")
public class UserServiceImpl implements UserService { ……… }
3、@Repository
用于标注数据访问组件,即DAO组件。例如:
@Repository(value="userDao")
public class UserDaoImpl extends BaseDaoImpl
4、@RequestMapping
在类前面定义,则将url和类绑定。
在方法前面定义,则将url和类的方法绑定
5、@RequestParam
@Scope用于指定scope作用域的(用在类上)
@Resource默认按名称装配,当找不到和名称匹配的bean才会按类型装配。
@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier 注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
@PostConstruct 初始化注解
@PreDestroy 摧毁注解默认单例启动就加载
1.4、Spring事务管理机制
事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回
滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。开发中为了避免这种情况一般都会进行事务管理。
spring提供了几个关于事务处理的类:
TransactionDefinition //事务属性定义
TranscationStatus //代表了当前的事务,可以提交,回滚。
PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类。
一般事务定义步骤如下:
TransactionDefinition td = new TransactionDefinition();
TransactionStatusts = transactionManager.getTransaction(td);
try
{ //do sth
89454743a78da0116c175f0e7cd184254a351b55mit(ts);
}catch(Exception e){
transactionManager.rollback(ts);
}
spring提供的事务管理可以分为两类:编程式的和声明式的。
编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。
编程式主要使用transactionTemplate。省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象
声明式:使用TransactionProxyFactoryBean:
围绕Poxy的动态代理能够自动的提交和回滚事务
org.springframework.transaction.interceptor.TransactionProxyFactoryBe an
PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。
1.5、spring中的核心类有那些,各有什么作用?
BeanFactory:产生一个新的实例,可以实现单例模式
BeanWrapper:提供统一的get及set方法
ApplicationContext:提供框架的实现,包括BeanFactory的所有功能。
2、Spring MVC
Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图分析器、视图组成。MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)和M(模块,业务)分开构成了MVC.
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow 里面。Spring 框架提供了构建 Web 使用程序的全功能 MVC 模块。使用 Spring 可插入的MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。
2.1.SpringMVC工作原理operating principle
1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托使用系统的其他模块负责负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet请请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图分析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。
DispatcherServlet是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
1、截获符合特定格式的URL请求。
2、初始化DispatcherServlet上下文对应的WebApplicationContext,并将其和业务层、持久化层的WebApplicationContext建立关联。
3、初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
2.2、SpringMVC接口解释
1、DispatcherServlet接口:
Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。
2、HandlerMapping接口:
能够完成客户请求到Controller映射。
3、Controller接口:
需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。
Controller将处理用户请求,这和Struts Action扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
从宏观角度考虑,DispatcherServlet是整个Web使用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。
4、ViewResolver接口:
Spring提供的视图分析器(ViewResolver)在Web使用中查找View对象,从而将相应结果渲染给客户。
2、Hibernate
Hibernate是JDBC的轻量级的对象封装(encapsulation),它是一个独立的对象持久persistence层框架。 hibernate要做的事,就是让对象投影到关系数据库中,然后实施化。它把数据层和业务层实现的解耦,这样能很好的转化想要的数据库,
2.1、hibernate核心接口:
session:负责被持久化对象CRUD操作
sessionFactory:负责初始化hibernate,创建session对象
configuration:负责配置并启动hibernate,创建SessionFactory
Transaction:负责事物相关的操作
Query和Criteria接口:负责执行各种数据库查询
2.2、hibernate工作原理:
1.通过Configuration config = new Configuration().configure();
//读取并分析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的
3.通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory
正在阅读:
2022全面JAVA面试经历总结04-12
自己动手之网站推广24种方法04-22
2012四级秘书资格考试职业道德基础业务素质习题二08-11
全船舱底、压载水管系图设绘通则07-05
《声律启蒙》选读三11-07
老总办公室装修最适合的设计风格05-06
2017学年苏教版三年级数学7 小数乘法和除法一市级公开课教案05-25
关于开展发展党员工作检查的通知02-23
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 面试
- 经历
- 全面
- 总结
- 2022
- JAVA
- 永登县永佳循环农业有限公司市场环境和行业前景研究报告
- 商务中介合同标准版本
- 士兵突击观后感高中生作文_观士兵突击有感
- 销售假冒注册商标的商品罪的立案标准、司法解释、量刑标准(2022
- 医院安全生产管理制度64224
- 2008新版石油石化职业技能鉴定试题集《井下作业工》
- 第七册:变电通信工程_南方电网_质量验收与评定标准__2012版
- 2022-2022学年七年级英语下学期第一次月考试题(无答案)人教新目
- 18-8-7小学英语单词分类表大全A4完美打印版
- EDA技术实用教程--VHDL版本(第五版)潘松课后习题答案
- 2022卓越寒假练习册、广州寒假作业(三年级)
- 不同年龄层次的不同消费消费心理
- 金字塔魔方还原方法(简洁)
- 迎双旦活动策划书范文
- 《自然拼读法在小学英语词汇教学中有效应用的实践研究》课题研究
- 2022年中国矿业大学(徐州)艺术与设计学院629设计概论A之设计学概
- 刘某某贩卖毒品、容留他人吸毒案
- 《小狗包弟》课堂实录-钱垠
- 如何促进新员工尽快融合本企业理念-三所
- 建设工程委托代建合同