金九银十面试题之《Spring Data JPA、Spring MVC、AOP》

这篇具有很好参考价值的文章主要介绍了金九银十面试题之《Spring Data JPA、Spring MVC、AOP》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🐮🐮🐮
辛苦牛,掌握主流技术栈,包括前端后端,已经7年时间,曾在税务机关从事开发工作,目前在国企任职。希望通过自己的不断分享,可以帮助各位想或者已经走在这条路上的朋友一定的帮助

前言

❤️金九银十马上就要来啦,各位小伙伴们有计划跳槽的要开始准备了,博主接下来一段时间会给大家持续更新面试题目,大家持续关注一下,感谢🙏🙏🙏
今天是一个小面试合集,Spring Data JPA、Spring MVC、AOP
之前的面试文章链接也给到大家
金九银十面试题之Mysql
金九银十面试题之设计模式
金九银十面试题之数据结构和算法
金九银十面试题之Mybatis

内容

Spring Data JPA

📟 Q1:ORM 是什么?

ORM 即 Object-Relational Mapping ,表示对象关系映射,映射的不只是对象的值还有对象之间的关 系,通过 ORM 就可以把对象映射到关系型数据库中。操作实体类就相当于操作数据库表,可以不再重 点关注 SQL 语句。

📟 Q2:JPA 如何使用?

只需要持久层接口继承 JpaRepository 即可,泛型参数列表中第一个参数是实体类类型,第二个参数是主键类型。
运行时通过 JdkDynamicAopProxy 的 invoke 方法创建了一个动态代理对象SimpleJpaRepository ,SimpleJpaRepository 中封装了JPA的操作,通过hibernate(封装了JDBC)完成数据库操作。

📟 Q3:JPA 实体类相关注解有哪些?

@Entity :表明当前类是一个实体类。
@Table :关联实体类和数据库表。
@Column :关联实体类属性和数据库表中字段。
@Id :声明当前属性为数据库表主键对应的属性。
@GeneratedValue : 配置主键生成策略。
@OneToMany :配置一对多关系,mappedBy 属性值为主表实体类在从表实体类中对应的属性名。 @ManyToOne :配置多对一关系,targetEntity 属性值为主表对应实体类的字节码。
@JoinColumn :配置外键关系,name 属性值为外键名称,referencedColumnName 属性值为主表主 键名称。

📟 Q4:对象导航查询是什么?

通过 get 方法查询一个对象的同时,通过此对象可以查询它的关联对象。
对象导航查询一到多默认使用延迟加载的形式, 关联对象是集合,因此使用立即加载可能浪费资源。对象导航查询多到一默认使用立即加载的形式, 关联对象是一个对象,因此使用立即加载。
如果要改变加载方式,在实体类注解配置加上 fetch 属性即可,LAZY 表示延迟加载,EAGER 表示立即 加载。

Spring MVC

📟 Q1:Spring MVC 的处理流程?

Web 容器启动时会通知 Spring 初始化容器,加载 Bean 的定义信息并初始化所有单例 Bean,然后遍历 容器中的 Bean,获取每一个 Controller 中的所有方法访问的 URL,将 URL 和对应的 Controller 保存 到一个 Map 集合中。

所有的请求会转发给 DispatcherServlet 前端处理器处理,DispatcherServlet 会请求 HandlerMapping 找出容器中被 @Controler 注解修饰的 Bean 以及被 @RequestMapping 修饰的方法和类,生成 Handler 和 HandlerInterceptor 并以一个 HandlerExcutionChain 处理器执行链的形式返回。

之后 DispatcherServlet 使用 Handler 找到对应的 HandlerApapter,通过 HandlerApapter 调用 Handler 的方法,将请求参数绑定到方法的形参上,执行方法处理请求并得到 ModelAndView。

最后 DispatcherServlet 根据使用 ViewResolver 试图解析器对得到的 ModelAndView 逻辑视图进行解 析得到 View 物理视图,然后对视图渲染,将数据填充到视图中并返回给客户端。

📟 Q2:Spring MVC 有哪些组件?

DispatcherServlet :SpringMVC 中的前端控制器,是整个流程控制的核心,负责接收请求并转发给
对应的处理组件。
Handler :处理器,完成具体业务逻辑,相当于 Servlet 或 Action。
HandlerMapping :完成 URL 到 Controller 映射,DispatcherServlet 通过 HandlerMapping 将不同请求映射到不同 Handler。
HandlerInterceptor :处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。
HandlerExecutionChain :处理器执行链,包括两部分内容:Handler 和 HandlerInterceptor。
HandlerAdapter :处理器适配器,Handler执行业务方法前需要进行一系列操作,包括表单数据验 证、数据类型转换、将表单数据封装到JavaBean等,这些操作都由 HandlerAdapter 完成。 DispatcherServlet 通过 HandlerAdapter 来执行不同的 Handler。
ModelAndView :装载模型数据和视图信息,作为 Handler 处理结果返回给 DispatcherServlet。 ViewResolver :视图解析器,DispatcherServlet 通过它将逻辑视图解析为物理视图,最终将渲染的结果响应给客户端。

📟 Q3:Spring MVC 的相关注解? @Controller :在类定义处添加,将类交给IoC容器管理。

@RequtestMapping :将URL请求和业务方法映射起来,在类和方法定义上都可以添加该注
解。 value 属性指定URL请求的实际地址,是默认值。 method 属性限制请求的方法类型,包括GET、 POST、PUT、DELETE等。如果没有使用指定的请求方法请求URL,会报405 Method Not Allowed 错误。params 属性限制必须提供的参数,如果没有会报错。

@RequestParam :如果 Controller 方法的形参和 URL 参数名一致可以不添加注解,如果不一致可以使 用该注解绑定。 value 属性表示HTTP请求中的参数名。 required 属性设置参数是否必要,默认 false。 defaultValue 属性指定没有给参数赋值时的默认值。

@PathVariable :Spring MVC 支持 RESTful ⻛格 URL,通过 @PathVariable 完成请求参数与形参的绑定。

AOP

📟 Q1:AOP 是什么?

AOP 即面向切面编程,简单地说就是将代码中重复的部分抽取出来,在需要执行的时候使用动态代理技 术,在不修改源码的基础上对方法进行增强。
Spring 根据类是否实现接口来判断动态代理方式,如果实现接口会使用 JDK 的动态代理,核心是 InvocationHandler 接口和 Proxy 类,如果没有实现接口会使用 CGLib 动态代理,CGLib 是在运行时动 态生成某个类的子类,如果某个类被标记为 final,不能使用 CGLib 。
JDK 动态代理主要通过重组字节码实现,首先获得被代理对象的引用和所有接口,生成新的类必须实现 被代理类的所有接口,动态生成Java 代码后编译新生成的 .class 文件并重新加载到 JVM 运行。JDK 代理直接写 Class 字节码,CGLib 是采用 ASM 框架写字节码,生成代理类的效率低。但是 CGLib 调用 方法的效率高,因为 JDK 使用反射调用方法,CGLib 使用 FastClass 机制为代理类和被代理类各生成一个类,这个类会为代理类或被代理类的方法生成一个 index,这个 index 可以作为参数直接定位要调用 的方法。
常用场景包括权限认证、自动缓存、错误处理、日志、调试和事务等。

📟 Q2:AOP 的相关注解有哪些?

@Aspect :声明被注解的类是一个切面 Bean。
@Before :前置通知,指在某个连接点之前执行的通知。
@After :后置通知,指某个连接点退出时执行的通知(不论正常返回还是异常退出)。
@AfterReturning :返回后通知,指某连接点正常完成之后执行的通知,返回值使用returning属性接 收。
@AfterThrowing :异常通知,指方法抛出异常导致退出时执行的通知,和 @AfterReturning 只会有 一个执行,异常使用throwing属性接收。

📟 Q3:AOP 的相关术语有什么?

Aspect :切面,一个关注点的模块化,这个关注点可能会横切多个对象。
Joinpoint :连接点,程序执行过程中的某一行为,即业务层中的所有方法。。
Advice :通知,指切面对于某个连接点所产生的动作,包括前置通知、后置通知、返回后通知、异常 通知和环绕通知。
Pointcut :切入点,指被拦截的连接点,切入点一定是连接点,但连接点不一定是切入点。
Proxy :代理,Spring AOP 中有 JDK 动态代理和 CGLib 代理,目标对象实现了接口时采用 JDK 动态代
理,反之采用 CGLib 代理。
Target :代理的目标对象,指一个或多个切面所通知的对象。 Weaving :织入,指把增强应用到目标对象来创建代理对象的过程。

📟 Q4:AOP 的过程?

Spring AOP 由 BeanPostProcessor 后置处理器开始,这个后置处理器是一个***,可以监听容器触发 的 Bean 生命周期事件,向容器注册后置处理器以后,容器中管理的 Bean 就具备了接收 IoC 容器回调 事件的能力。BeanPostProcessor的调用发生在 SpringIoC容器完成 Bean实例对象的创建和属性的
依赖注入后,为 Bean 对象添加后置处理器的入口是 initializeBean 方法。
Spring中JDK动态代理通过JdkDynamicAopProxy调用Proxy的 newInstance 方法来生成代理类,
JdkDynamicAopProxy也实现了InvocationHandler接口,invoke 方法的具体逻辑是先获取应用到此 方法上的拦截器链,如果有拦截器则创建 MethodInvocation 并调用其proceed 方法,否则直接反射 调用目标方法。因此 Spring AOP 对目标对象的增强是通过拦截器实现的。

写在最后

希望博主收集的内容能帮到大家,祝大家能找到一个好的工作,过好的生活,如有错误欢迎指正。 💐💐💐文章来源地址https://www.toymoban.com/news/detail-610431.html

到了这里,关于金九银十面试题之《Spring Data JPA、Spring MVC、AOP》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 金九银十面试题之《数据结构和算法》

    🐮🐮🐮 辛苦牛,掌握主流技术栈,包括前端后端,已经7年时间,曾在税务机关从事开发工作,目前在国企任职。希望通过自己的不断分享,可以帮助各位想或者已经走在这条路上的朋友一定的帮助 ❤️金九银十马上就要来啦,各位小伙伴们有计划跳槽的要开始准备了,博

    2024年02月16日
    浏览(28)
  • 金九银十面试怒拿6个offer——测试开发面试题整理

    金九银十面试怒拿6个offer——测试开发面试题整理 1、软件测试的流程是什么? 2、测试用例主要有哪些元素? 3、软件测试有什么策略和阶段? 4、黑盒测试和白盒测试是什么?二者有什么区别? 5、软件测试有什么类型? 6、测试用例是什么?有什么作用? 7、你平时是怎么

    2023年04月08日
    浏览(22)
  • Java面试1000题突击班(抓住金九银十) 持续更新中(二)

    **Java面试1000题突击班(抓住金九银十) 持续更新中(一)** 1.Spring原理、特点等 原理:它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是Spring可以和其他框架无缝整合。 特点:轻量级、控制反转、面向、切面、容器(可以看我的SpringIO

    2024年02月08日
    浏览(35)
  • 2023金九银十Java面试八股文大全1200道面试题附答案详解,最全面详细

    我的回答是: 很有必要 。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。现如今,Java 面试的本质就是八股文,把八股文面试题背好,面试才有可能表现好。金九银十招聘黄金季已经来临!大家在考研和找工作中纠结的时候,不妨先看一下面试题,毕竟我

    2024年02月13日
    浏览(33)
  • 疫情下,我的金九银十计划

    2到3年是一个阶段,想要加薪,还得跳槽.我也不例外. 往年的3-4月、9-10月,招聘市场都有很多岗位可选,但今年真的是少得可怜.大家也感觉到了吧.还有份工作,活着好像真的也很不错了.不过该准备的还是准备,没准就有了呢. 以往的备战,我都打开百度,java面试攻略,找一大堆内容,没想

    2024年02月17日
    浏览(31)
  • 软件测试金九银十即将到来,求职套路多你有多大把握拿offer

    面试问题第一问,95%都会是:请简单的做个自我介绍吧~分以下几点说明。 1、年纪太大与太小,都不需要主动去说明。 比如我年纪只有20岁 例子:面试官您好,我叫***,来自于哪里,从事软件测试工作有几年了。 2、专业不对口也不要过多的去提及(提到了就会增加问你的概

    2024年02月10日
    浏览(23)
  • maven项目打包跳过单元测试,又是一年金九银十

    org.apache.maven.plugins maven-surefire-plugin 2.22.2 true 方法二(建议) 通过idea 工具实现,点击右上角 有点像闪电样子的图标,看到 test 被划掉了。然后点击maven 打包的功能就可以跳过测试了。 Maven命令栏的工具栏有下图中的图标,这个图标就是 Skip Tests。点击选中,再用LifeStyle中的

    2024年04月11日
    浏览(23)
  • Spring data JPA常用命令

    Spring Data JPA是Spring框架的一部分,它提供了一个简化的方式来与关系型数据库进行交互。JPA代表Java持久化API,它是Java EE规范中定义的一种对象关系映射(ORM)标准。Spring Data JPA在JPA的基础上提供了更高级的抽象,使得开发人员能够更轻松地进行数据库操作。 使用Spring Data

    2024年02月15日
    浏览(41)
  • Spring Data JPA 快速上手

    JPA的全称是Java Persisitence API,即JAVA持久化API,是sum公司退出的一套基于ORM的规范,内部是由一些列的接口和抽象类构成。JPA通过JDK5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 Spring Data的优势:可以操作多种数据库,关系型数据库,非关系

    2024年04月23日
    浏览(23)
  • Spring Data JPA 学习笔记

    Spring Data JPA: Spring Data JPA 的技术特点: @Entity 标注是一个实体类,实体类中的每一个属性都对应表中的一列。 @Table(name = “User”) 这个注解用于指定实体类对应的数据库表名。(但首字母会小写) @Data:这个注解是Lombok库提供的,用于自动生成实体类的getter和setter方法、构造函

    2024年04月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包