java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??

如果要进大厂,算法、底层、项目经验都要刷,猛哥以后会给大家更新各种面试题……
如果要进大厂,项目经验、底层算法、网络、数据机构等都要狂刷……
原来我进大厂之前就是这么干的,刷项目,刷题。
文末附面试资料。
孟哥以后会给大家更新各种面试资料,走起!
java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片


前面,我们已经整理Spring、设计模式、数据结构和算法、mysql等的面试题:
1,??爆肝!整理了一周的Spring面试大全【含答案】,吊打Java面试官【建议收藏】!??
2,??肝完了,一天掌握数据结构和算法面试题,吊打面试官,建议收藏??
3,??集合很简单?开什么玩笑?肝了一周,全是精华,万字讲解!面试再不怕集合问题了!!!??
4,肝完了,总结了SpringBoot与缓存的知识点,快速掌握
5,Mysql面试大全,看完可以吊打面试官!!!
6,入计算机专业的师弟师妹,别再迷茫了,我整理一份CS的学习路线大全!帮你超越大部分的同学!
昨天小伙伴给我说看了面试题,拿到了京东的offer,大家继续努力呀。
java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片


如果你想进大厂,一定要有非常明确的信念:

我必须进去!一定进去!

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

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

java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片


废话不多说!

今天猛哥给大家整理一波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 必须将缓存清空保证数据有效性。
一级缓存的工作原理如下所示:
java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片


Q4:Mybatis 的?级缓存是什么?
?级缓存是Mapper 级别,默认关闭。
使?二级缓存时多个 SqlSession 使?同?个 Mapper 的 SQL 语句操作数据库,得到的数据会存在?级缓存区,同样使? HashMap 进行数据存储,相?于?级缓存,?级缓存范围更?,多个 SqlSession 可以共??级缓存,作?域是 Mapper 的同?个 namespace,不同 SqlSession 两次执?相同的namespace 下的 SQL 语句,参数也相等,则第?次执行成功后会将数据保存在?级缓存中,第?次可直接从?级缓存中取出数据。
要使??级缓存,需要在全局配置?件中配置,再在对应的映射?件中配置?个标签。
二级缓存的工作原理是:
java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片


Q5:Mybatis#{}和${}的区别?
使?${}相当于使?字符串拼接,存在 SQL 注?的?险。
使?#{}相当于使用占位符,可以防? SQL 注入,不?持使?占位符的地?就只能使?${},典型情况就是动态参数。
${}是字符串替换,相当于直接显示数据,#{}是预编译处理,相当于对数据加上双引号,即#是将传入的值当做字符串的形式,先替换为?号,然后调用PreparedStatement的set方法来赋值,而$是将传入的数据直接显示生成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节点配置。
【java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??】
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 物理视图,然后对视图渲染,将数据填充到视图中并返回给客户端。
java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片

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,通过的绑定。

Spring的面试: java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片


Q1:AOP 是什么?
AOP 即?向切?编程,简单地说就是将代码中重复的部分抽取出来,在需要执?的时候使?动态代理技术,在不修改源码的基础上对方法进?增强。
Spring 根据类是否实现接?来判断动态代理?式,如果实现接?会使? JDK 的动态代理,核?是 InvocationHandler 接?和 Proxy 类,如果没有实现接?会使? CGLib 动态代理,CGLib 是在运?时动态?成某个类的子类,如果某个类被标记为 ?nal,不能使? CGLib 。
JDK 动态代理主要通过重组字节码实现,首先获得被代理对象的引?和所有接口,?成新的类必须实现被代理类的所有接?,动态生成Java 代码后编译新?成的?件并重新加载到 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 的调用发?在 Spring IoC 容器完成 Bean 实例对象的创建和属性的依赖注入后,为 Bean 对象添加后置处理器的入口是initializeBean方法。
java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片


Spring 中 JDK 动态代理通过 JdkDynamicAopProxy 调? Proxy 的newInstance方法来?成代理类,
JdkDynamicAopProxy 也实现了 InvocationHandler 接?, invoke ?法的具体逻辑是先获取应?到此?法上的拦截器链,如果有拦截器则创建 MethodInvocation 并调?其调?目标proceed方法。因此 Spring AOP 对目标对象的增强是通过拦截器实现的。
前面,我们已经整理Spring、设计模式、数据结构和算法、mysql等的面试题:

1,??爆肝!整理了一周的Spring面试大全【含答案】,吊打Java面试官【建议收藏】!??
2,??肝完了,一天掌握数据结构和算法面试题,吊打面试官,建议收藏??
3,??集合很简单?开什么玩笑?肝了一周,全是精华,万字讲解!面试再不怕集合问题了!!!??
4,肝完了,总结了SpringBoot与缓存的知识点,快速掌握
5,Mysql面试大全,看完可以吊打面试官!!!
6,入计算机专业的师弟师妹,别再迷茫了,我整理一份CS的学习路线大全!帮你超越大部分的同学!
好了,Java面试整理结束,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~
java学习|??大三的时候,看了这些Java面试题【附答案】,我进华为了![建议收藏]??
文章图片

最后,我将面试前用到的资料,都分享下,点击下面的,然后关注弹出的图,
回复:csdn面试大全
即可获取所有面试资料

    推荐阅读