如果去某厂面试,却被杠精卡在Spring,是种什么体验?
莫慌莫慌,小编今天就来跟你好好唠嗑唠嗑Spring,送你一套集结Spring面试、知识体系大纲还有源码解读的宝藏级笔记。
先来搞清楚,什么是Spring?
Spring是一个开源框架,是于2003 年兴起的一个轻量级的Java 开发框架,它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。然而,Spring的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架
搞清楚之后,你就应该自己去手绘一份Spring的知识体系大纲,就像小编这样(看下图)
AOP、IOC、事务管理等等,每一份的脑图都能体现你对其的理解,同时也能迅速帮助你一览全部知识块,恢复整个知识脉络。
这份Spring的知识脉络体系大纲,展现的是我自己对其每个知识点的理解并将其手绘出来,便于梳理。建议大家可以自己去手绘一份,如果需要参考小编的,可以直接点这,面试+源码部分一起!
梳理完知识脉络了,不知道这Spring面试100问你能否招架得住?
小编收集整理了面试官最爱的Spring灵魂100问,并将其分成了以下四个部分:
(一)基本概念面试题集( Spring 相关概念梳理)
(二)应用场景面试题集(各知识点不同使用场景选型)
(三)深度度知识面试题集(底层实现原理详解)
(四)拓展内容面试题集(Spring Boot 相关题集)
先看问题,答案解析在后(已整理,建议先自行测试一下)
(一)基本概念面试题集( Spring 相关概念梳理)
-
1. 谈谈对 Spring IoC 的理解?
-
2. 谈谈对 Spring DI 的理解?
-
3. BeanFactory 接口和 ApplicationContext 接口不同点是什么?
-
4. 请介绍你熟悉的 Spring 核心类,并说明有什么作用?
-
5. 介绍一下 Spring 的事务的了解?
-
6. 介绍一下 Spring 的事务实现方式?
-
7. 解释 AOP 模块
-
8. Spring 的通知类型有哪些,请简单介绍一下?
-
9. Spring 通知类型使用场景分别有哪些?
-
10. 请介绍一下你对 Spring Beans 的理解?
-
11. Spring 有哪些优点?
-
12. 在Spring中使用hibernate的方法步骤
-
13. Spring 和 Struts 的区别?
-
14. Spring 框架由哪几部分组成?
-
15. 谈谈你对 BeanFactory的理解,BeanFactory 实现举例
-
16. 谈谈对 Spring 中的 Web 模块的理解
-
17. BeanFactory 和 Application contexts 有什么区别?
-
18. 谈谈你对 Spring 依赖注入的理解?
-
19. 什么是 Bean 装配?
-
20. 什么是 Bean 的自动装配?
-
21. 介绍一下自动装配有几种方式?
-
22. 什么是基于注解的容器配置?
-
23. 简述 JdbcTemplate 类的作用
-
24. 解释 AOP
-
25. 解释 Aspect 切面
-
26. 简述 Spring AOP 中的通知
-
27. Spring AOP 中的织入你怎样理解?
-
28. 请详细介绍一下 Spring MVC 的流程?
-
29. Spring 配置文件?
-
30. @RequestMapping 注解用在类上面有什么作用
-
31. 怎么样把某个请求映射到特定的方法上面
-
32. 谈谈 Spring 对 DAO 的支持
(二)应用场景面试题集(各知识点不同使用场景选型)
-
33. Spring 配置 Bean 实例化有哪些方式?
-
34. Bean 注入属性有哪几种方式
-
35. 在 Spring 中如何实现时间处理?
-
36. Spring 中如何更高效的使用 JDBC ?
-
37. 请介绍一下设计模式在 Spring 框架中的使用?
-
38. 讲讲 Spring 框架的优点有哪些?
-
39. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注入?
-
40. 你怎样定义类的作用域?
-
41. 解释 Spring 支持的几种 Bean 的作用域
-
42. 在 Spring 中如何注入一个 Java 集合?
-
43. 你可以在 Spring 中注入一个 null 和一个空字符串吗?
-
44. 什么是基于 Java 的 Spring 注解配置? 给一些注解的例子
-
45. 你更倾向用哪种事务管理类型?
-
46. Bean 的调用方式有哪些?
-
47. Spring MVC 里面拦截器是怎么写的
-
48. 当一个方法向 AJAX 返回特殊对象,比如 Object、List 等,需要做什么处理?
-
49. 如何使用 Spring MVC 完成 JSON 操作
-
50. Spring 如何整合 Hibernate
-
51. Spring 如何整合 Struts2 ?
-
52. 开发中主要使用 Spring 的什么技术 ?
-
53. 介绍一下 Spring MVC 常用的一些注解
-
54. Spring 框架的事务管理有哪些优点
(三)深度度知识面试题集(底层实现原理详解)
-
55. IoC 控制反转设计原理?
-
56. Spring 的生命周期?
-
57. Spring 如何处理线程并发问题?
-
58. 核心容器(应用上下文)模块的理解?
-
59. 为什么说 Spring 是一个容器?
-
60. Spring 的优点?
-
61. Spring 框架中的单例 Beans 是线程安全的么?
-
62. Spring 框架中有哪些不同类型的事件?
-
63. IoC 的优点是什么?
-
64. 解释 Spring 框架中 Bean 的生命周期
-
65. 什么是 Spring 的内部 Bean?
-
66. 自动装配有哪些局限性 ?
-
67. Spring 框架的事务管理有哪些优点?
-
68. 在 Spring AOP 中,关注点和横切关注的区别是什么?
-
69. 说说 Spring AOP 的底层实现原理?
-
70. 如何给 Spring 容器提供配置元数据?
-
71. 哪些是重要的 Bean 生命周期方法? 你能重载它们吗?
-
72. 讲下 Spring MVC 的执行流程
-
73. Spring MVC 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
-
74. Spring 中循环注入的方式?
-
75. Spring MVC 比较 Struts2
(四)拓展内容面试题集(Spring Boot 相关题集)
-
76. 什么是 Spring Boot?
-
77. Spring Boot 自动配置的原理?
-
78. Spring Boot 读取配置文件的方式?
-
79. 什么是微服务架构?
-
80. Ribbon 和 Feign 的区别?
-
81. Spring Cloud 断路器的作用?
-
82. 为什么要用 Spring Boot?
-
83. Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
-
84. Spring Boot 的配置文件有哪几种格式?它们有什么区别?
-
85. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
-
86. 开启 Spring Boot 特性有哪几种方式?
-
87. Spring Boot 需要独立的容器运行吗?
-
88. 运行 Spring Boot 有哪几种方式?
-
89. 你如何理解 Spring Boot 中的 Starters?
-
90. 如何在 Spring Boot 启动的时候运行一些特定的代码?
-
91. Spring Boot 有哪几种读取配置的方式?
-
92. Spring Boot 实现热部署有哪几种方式?
-
93. Spring Boot 多套不同环境如何配置?
-
94. Spring Boot 可以兼容老 Spring 项目吗,如何做?
-
95. 什么是 Spring Cloud?
-
96. 介绍一下 Spring Cloud 常用的组件?
-
97. Spring Cloud 如何实现服务注册的?
-
98. 什么是负载均衡?有什么作用?
-
99. 什么是服务熔断?
-
100. 请介绍一下 Ribbon 的主要作用?
题目100道已经全部列举,加上答案却整理成了51页的PDF了,太多了,不方便一一展示,不过可以来找小编给你分享 完整解析原件
梳理完了知识体系,看完了面试,再来深入学习一下Spring源码
得了一份《手写Spring高级源码解析》,大致包含下面这些内容,先粗略看看,后面细说
内容详解
总结
一路下来,说了这么多,看了这么多,还想问问:面试官杠上Spring是种什么体验?还慌吗?
不管慌不慌,这套Spring面试/大纲/源码都是学习的好宝藏,没有可直接来找小编分享便是了!