初学者:
- ioc是什么,有什么用?
- bean作用域有哪些,说一下各种使用场景?
- aop是什么,有哪些实现方式?
- 拦截器是什么,什么场景使用?
- 常见的使用多的注解问几个(requestbody, responsebody, ModelAttribute 等,这些是应用层面,有些初学者连怎么样返回视图和json对象都不知道就敢说会用spring,还有不知道前台提交表单和提交json对象有什么区别等)
- 你之前项目中异常/国际化如何处理?
中级
- bean的各种作用域是怎么样实现的?
- 工具类中如何注入bean?具体使用场景?
- 注入的bean存在多份的时候有哪些解决办法?
- aop里面的cglib原理是什么?
- aop切方法的方法的时候,哪些方法是切不了的?为什么?
- 同类调用为什么无法切?怎么样解决(AOPContext)?
- spring的主要扩展点有哪些?(最重要最有用的应该就是bpp了)
- 有没有用过BeanFactory?场景?
- 说说aop和ioc关系
- 说说DispatcherServlet做了什么
总结
spring最重要还是ioc和aop,这2个概念应该彻底掌握好,其他主要是使用层面多。初学者我一般看重应用,中级的就看重对原理和思想的理解。ioc主要是思想层面要理解容器和解耦,aop则更多的是技术的实现细节。多翻翻贴,网上已经很多的资料了,看懂就差不多。
还有面试前,ioc/aop的实际应用场景应该提取准备好,不要问到aop就只会说处理事务,这样回答一看就是初学者水平嘛!
- aop
可以说aop来统一处理异常,打印日志,参考我的这个工程,非常简单明了有用且实用:xwjie/PLMCodeTemplate。
- ioc
ioc的扩展这些也要自己做做,其实也是很简单的,可以看看我的这个工程:xwjie/MyRestUtil,这里还比较复杂,使用的是bpp等。而我的另外一个课程 Java响应式编程_SpringBoot WebFlux入门与实践-慕课网实战 里面使用的是FactoryBean搭建一个类似Feign/retrofit一样的客服端,实现起来非常简单。
qq交流群: 607679993
还有一点非常重要,就是面试的时候你要主导节奏,不要面试官问你一个概念,你一句话回答完然后他问下一个,你应该负责把问题扩展出去。如问你aop是什么,你应该说 aop是xxxxx,场景的应用场景是xxxx,我有一个工程中里面我们使用aop处理异常和打印日志,返回统一的格式,xxxx,效果非常好,xxxx。然后你和面试官就这些实现细节展开讨论,这样就比较主动,否则一味被动被问,肯定会问到你不懂的东西。当然前提是你要真的理解实现细节,把代码自己敲一遍,必要的时候背一下,反正没有几行