阿里Java二面:面试官问我如何理解Spring?我哭了

​​很多人在面试的时候,可能都会被问到这些问题:是否看过开源框架的源码?谈谈你看过源码之后的心得?其实我们常用的Spring、MyBaits这样的框架可以说是JAVA里面最经典的教科书,从中你能学习到很多写代码的经验技巧,而去悟开源框架中蕴含的优雅架构设计之道这才是最重要的。今天通过我整理的Spring笔记.xmind的重要的知识点来讲讲Spring所需掌握的知识点和面试常问的一些问题!

阿里Java二面:面试官问我如何理解Spring?我哭了

基础概念

  • Spring的优点
  • Spring的缺点

阿里Java二面:面试官问我如何理解Spring?我哭了

SpringAOP

AOP 的内部原理其实就是动态代理和反射了。主要涉及到的反射类:

阿里Java二面:面试官问我如何理解Spring?我哭了

动态代理相关原理的话,你需要了解什么是代理模式、静态代理的不足、动态代理的实现原理。Spring 中实现动态代理有两种方式可选,这两种动态代理的实现方式的一个对比也是面试中常问的。

JDK 动态代理

必须实现 InvocationHandler 接口,然后通过 Proxy.newProxyInstance(ClassLoader

loader, Class>[] interfaces, InvocationHandler h) 获得动态代理对象。

CGLIB 动态代理

使用 CGLIB 动态代理,被代理类不需要强制实现接口。CGLIB 不能对声明为 final

的方法进行代理,因为 CGLIB 原理是动态生成被代理类的子类。

OK,AOP 讲了。其实讲到这里,可能会有一个延伸的面试问题。我们知道,Spring

事 物 也 是 通 过 AOP 来 实 现 的 , 我 们 使 用 的 时 候 一 般 就 是 在 方 法 上 加

@Tranactional 注解,那么你有没有遇到过事物不生效的情况呢?这是为什么?这

个问题我们在后面的面试题中会讲。

  • 静态代理
  • JDK动态代理和cglib的对比

阿里Java二面:面试官问我如何理解Spring?我哭了

SpringIOC

  • 依赖注入
  • 容器的初始化过程
  • bean知识
  • 大致流程

阿里Java二面:面试官问我如何理解Spring?我哭了

IoC 内部核心原理就是反射技术,当然这里面还涉及到 Bean 对象的初始化构建等步骤,这个在后面的生命周期中讲,这里我们需要了解 Java 中反射是如何做的就好。这里主要说明下主要的相关类和可能面试问题转向,具体的 API 实现需要自己去看。

阿里Java二面:面试官问我如何理解Spring?我哭了

还有其他的类不一一列举出来,都在 java.lang.reflect 包下。说到这个模块的时候,那么面试官可能会考察相关的知识,主要是考察你是否真的有去了解过反射的使用。

举两个例子:

利用反射获取实例的私有属性值怎么做?

这里其实就是里面的重要考察点就是反射对私有属性的处理。

/*** 通过反射获取私有的成员变量. */ private Object getPrivateValue(Person person, String fieldName) { try {Field field = person.getClass().getDeclaredField(fieldName); // 主要就是这里,需要将属性的 accessible 设置为 true field.setAccessible(true);return field.get(person); } catch (Exception e) { e.printStackTrace(); }return null; }

如何通过反射构建对象实例?

//使用默认构造函数(无参)创建的话: Class.newInstance() //构造函数带参的话: Constroctor constroctor = clazz.getConstructor(String.class,Integer.class); Object obj = constroctor.newInstance("name", 18);

Spring事务管理

  • 基本概念
  • 事务控制
  • 事务属性
  • Spring事务管理接口
  • 事务管理一般在Service层

阿里Java二面:面试官问我如何理解Spring?我哭了

SpringMVC

  • 执行流程
  • 注解
  • servlet生命周期

阿里Java二面:面试官问我如何理解Spring?我哭了

对应导图我有自己平时整理出来的Spring学习笔记精华文档,在这拿出来免费分享给有需要的朋友,需要获取的朋友帮忙转发一下然后私信回复我关键词【Spring】获取文档免费领取方式!

阿里Java二面:面试官问我如何理解Spring?我哭了

对于开发同学来说,Spring 框架熟悉又陌生。 熟悉:开发过程中无时无刻不在使用 Spring 的知识点;陌生:对于基本理论知识疏于整理与记忆。导致很多同学面试时对于 Spring 相关的题目知其答案,但表达不够完整准确。下面分享互联网公司Java面试高频常问的100道题及解析!

一、基本概念面试题集( Spring 相关概念梳理)

注:为了不影响阅读,我已经把解析整理成pdf免费分享出来,有需要的朋友帮忙转发一下然后私信回复我关键词【Spring】获取文档免费领取方式!

阿里Java二面:面试官问我如何理解Spring?我哭了

二、应用场景面试题集(各知识点不同使用场景选型)

阿里Java二面:面试官问我如何理解Spring?我哭了

三、深度度知识面试题集(底层实现原理详解)

注:为了不影响阅读,我已经把解析整理成pdf免费分享出来,有需要的朋友帮忙转发一下然后私信回复我关键词【Spring】或【面试】获取文档免费领取方式!

阿里Java二面:面试官问我如何理解Spring?我哭了

四、拓展内容面试题集(Spring Boot 相关题集)

阿里Java二面:面试官问我如何理解Spring?我哭了

同时还分享更多精选整理的学习资料,包含(Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!)

资料免费领取方式:转发+转发+转发关注后,私信关键词【资料】即可获取免费领取方式!

重要的事说三遍,转发+转发+转发!

阿里Java二面:面试官问我如何理解Spring?我哭了

架构学习视频

阿里Java二面:面试官问我如何理解Spring?我哭了


---------------------------------本文来源于网络,如有侵权请联系博主删除!​​​​

相关推荐