先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
我必须进去!一定进去!
别犹豫犹豫的,整天自我否定,总有人要赢,赢得人为什么不是我呢???
我非常欣赏衡水中学的教学模式,我们普通人没有别的逆袭方式,就是努力,就是干!!!!
废话不多说!
今天猛哥给大家整理一波Mybatis、SprigMvc、Spring DataJpa的面试题:
目录
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 (备注网络安全)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
里插入图片描述](https://img-blog.csdnimg.cn/direct/a91b9e8100834e9291cfcf1695d8cd42.png#pic_center)
因篇幅有限,仅展示部分资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-PGjwdR5B-1713550776043)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!