这几天在整理之前的面试资料,又偶在在群里和各位同学一起探讨些奇妙的问题,心有所感,便准备将这些题目整理起来,一来是分析给大家,二来也以备日后之需。
一面二面主要是基础面,问的都是一些基础知识,难度不是很高,这里我就简单的分享一下我所遇到的题目。
一、面试者你好,我们开门见山,能跟我介绍一下spring的核心特征吗?包括Spring bean的生命周期也可以讲一下。
对于java工程师来说,几乎没有多少不了解Spring了,Spring Boot 、Spring Cloud等等也是信手拈来。但是很多和我一样的新人对于Spring的源码还是了解的不深,但是看过几遍之后,觉得还是有意义的。
众所周知,Spring的核心特性就是IOC和AOP
IOC(控制反转)是依赖倒置原则的一种代码设计思路。就是把原先在代码里面需要实现的对象创建、对象之间的依赖,反转给容器来帮忙实现。IOC容器主要通过注解和XML的形式来配置类之间的依赖关系,降低了类之间的耦合关系。IOC
AOP(面向切面编程)则是Spring的另一个核心特征,它把一些与业务无关,却为业务模块所共同调用的逻辑封装起来,比如日志记录,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。它主要由JDK动态代理和CGLIB代理实现。
至于Spring bean的声命周期,我们先看下图,然后再慢慢讲。
因为是面试,我们不用讲的非常细,心中有图然后翻译出来就行了,具体的内容,大家可以自己打开编译工具,然后找到这个类ClassPathXmlApplicationContext,找到这个方法往下看就行
Bean的生命周期:
createBeanInstance() -> 创建实例
populateBean() -> 属性赋值
initializeBean() -> 初始化
1、在doCreateBean方法中调用crea