大三的时候,看了这些Java面试题【附答案】,我进华为了_北京大三程序员面试(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

我必须进去!一定进去!

别犹豫犹豫的,整天自我否定,总有人要赢,赢得人为什么不是我呢???

我非常欣赏衡水中学的教学模式,我们普通人没有别的逆袭方式,就是努力,就是干!!!!

废话不多说!

今天猛哥给大家整理一波Mybatis、SprigMvc、Spring DataJpa的面试题:

目录

Mybatis的面试题:

Q1:Mybatis 的优缺点?

Q2:Mybatis 的 XML ⽂件有哪些标签属性?

Q3:Mybatis 的⼀级缓存是什么?

Q4:Mybatis 的⼆级缓存是什么?

Q5:Mybatis  #{}和${}的区别?

Q6、MyBatis实现一对多有几种方式,怎么操作的?

Spring Data JPA ⾯试题:

Q1:ORM 是什么?

Q2:JPA 如何使⽤?

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

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

Spring MVC面试题:

Q1:Spring MVC 的处理流程?

Q2:Spring MVC 有哪些组件?

Q3:Spring MVC 的相关注解?

Spring的面试:

Q1:AOP 是什么?

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

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

Q4:AOP 的过程?

Mybatis****的面试题:

Q1:Mybatis 的优缺点?

优点:

相⽐ JDBC 减少了⼤量代码量,减少冗余代码。

使⽤灵活,SQL 语句写在 XML ⾥,从程序代码中彻底分离,降低了耦合度,便于管理。提供 XML 标签,⽀持编写动态 SQL 语句。

提供映射标签,⽀持对象与数据库的 ORM 字段映射关系。

缺点:

SQL 语句编写⼯作量较⼤,尤其是字段和关联表多时。

SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

Q2:Mybatis 的 XML ⽂件有哪些标签属性?

select 、 insert 、 update 、 delete 标签分别对应查询、添加、更新、删除操作。

parameterType属性表示参数的数据类型,包括基本数据类型和对应的包装类型、String 和 JavaBean 类型,当有多个参数时可以使⽤#的形式表示第 n 个参数。除了基本数据类型都要以全限定类名的形式指定参数类型。

resultType表示返回的结果类型,包括基本数据类型和对应的包装类型、String 和 Java Bean 类型。

还可以使⽤把返回结果封装为复杂类型的resultMap。

Q3:Mybatis 的⼀级缓存是什么?

⼀级缓存是 SqlSession 级别,默认开启且不能关闭。

操作数据库时需要创建 SqlSession 对象,对象中有⼀个 HashMap 存储缓存数据,不同 SqlSession 之间缓存数据区域互不影响。

⼀级缓存的作⽤域是 SqlSession 范围的,在同⼀个 SqlSession 中执⾏两次相同的 SQL 语句时,第⼀次执⾏完毕会将结果保存在缓存中,第⼆次查询直接从缓存中获取。

如果 SqlSession 执行了 DML 操作(insert、update、delete),Mybatis 必须将缓存清空保证数据有效性。

一级缓存的工作原理如下所示:

Q4:Mybatis 的⼆级缓存是什么?

⼆级缓存是Mapper 级别,默认关闭。

使⽤二级缓存时多个 SqlSession 使⽤同⼀个 Mapper 的 SQL 语句操作数据库,得到的数据会存在⼆级缓存区,同样使⽤ HashMap 进行数据存储,相⽐于⼀级缓存,⼆级缓存范围更⼤,多个 SqlSession 可以共⽤⼆级缓存,作⽤域是 Mapper 的同⼀个 namespace,不同 SqlSession 两次执⾏相同的namespace 下的 SQL 语句,参数也相等,则第⼀次执行成功后会将数据保存在⼆级缓存中,第⼆次可直接从⼆级缓存中取出数据。

要使⽤⼆级缓存,需要在全局配置⽂件中配置,再在对应的映射⽂件中配置⼀个标签。

二级缓存的工作原理是:

Q5:Mybatis  #{}和${}的区别?

使⽤${}相当于使⽤字符串拼接,存在 SQL 注⼊的⻛险。

使⽤#{}相当于使用占位符,可以防⽌ SQL 注入,不⽀持使⽤占位符的地⽅就只能使⽤${},典型情况就是动态参数。

KaTeX parse error: Expected 'EOF', got '#' at position 20: …符串替换,相当于直接显示数据,#̲{}是预编译处理,相当于对数据…是将传入的数据直接显示生成sql语句

–Mybatis在处理#{}时

select id,name,age from teacher where id =#{id}

当前端把id值1传入到后台的时候,就相当于:

select id,name,age from teacher where id ='1'



--Mybatis在处理${}时

select id,name,age from teacher where id =${id}

当前端把id值1传入到后台的时候,就相当于:

select id,name,age from teacher where id = 1

Q6、MyBatis实现一对多有几种方式,怎么操作的?

A.联合查询:几个表联合查询,只查询一次,通过在resultMap里面配置collection节点配置一对多的类就可以完成。

B.嵌套查询:是先查一个表,根据这个表里面的结果的外键id去另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置。

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 有哪些组件?

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

里插入图片描述](https://img-blog.csdnimg.cn/direct/a91b9e8100834e9291cfcf1695d8cd42.png#pic_center)

因篇幅有限,仅展示部分资料

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-PGjwdR5B-1713550776043)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值