前言
对于开发同学来说,Spring 框架熟悉又陌生。 熟悉:开发过程中无时无刻不在使用 Spring 的知识点;陌生:对于基本理论知识疏于整理与记忆。导致很多同学面试时对于 Spring 相关的题目知其答案,但表达不够完整准确。
今天,分享的一位同学的面经,4面顺利通过拿下了offer,这次面试给他印象最为深刻的就是关于Spring相关的面试题,回答得比较顺畅,也让阿里面试官刮目相看!
以下展示的阿里面试题(答案解析)、Spring学习资料、笔记等文档,直接 私信【111】免费获取
阿里面试经验分享(共4面,附Spring面试题详解)
01 阿里4面面试题(非完整版,含部分重点题):
- 使用mysql索引都有哪些原则?索引什么数据结构??B+tree 和 B tree 什么区别??
- Mysql有哪些存储引擎??都有啥区别??要详细??
- 设计高并发系统数据库层面该如何设计? 数据库锁有哪些类型?如何实现?
- 数据库事务有哪些?
- Sql中哪些情况可能不会走索引?
- 用过什么Java的中间件?(消息队列)
- 消息队列适合用在什么场景?为什么不用redis?
- Tomcat线程池?几万请求tomcat撑得住吗?线程池设置多少,设置多少就只能接收多少个请求吗?
- 介绍一下集合框架?
- Hashmap , hashtable底层实现什么区别?Hashtable 和concurrenthashMap呢?
- Hashmap 和treemap 什么区别?底层数据结构是什么?
- 线程池用过么?都有什么参数?底层如何实现的?
- Sychnized和lock什么区别?Sychnize 什么情况,情况下是对象锁?什么时候是全局锁?为什么?
- ThreadLocal 是什么??底层如何实现??写一个例子呗?
- 共享锁与非共享锁、一个事务锁住了一条数据,另一个事务能查吗?
- ......
02 关于Spring精华部分(含详解):
- Spring 框架中的单例 Beans 是线程安全的么?
Spring 框架并没有对单例 bean 进行任何多线程的封装处理。关于单例 bean 的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的 Spring bean 并没有可变的状态(比如 Serview 类和 DAO 类),所以在某种程度上说 Spring 的单例 bean 是线程安全的。如果你的 bean 有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。最浅显的解决办法就是将多态 bean 的作用域由“singleton”变更为“prototype
- 请解释 Spring Bean 的自动装配?
- 如何向 Spring Bean 中注入一个 Java.util.Prop
必啃的Spring核心知识点(我的Spring全家桶笔记)
01 Spring面试题部分:
- 什么是 Spring 框架?Spring 框架有哪些主要模块?
- 使用 Spring 框架能带来哪些好处?
- 什么是控制反转(IOC)?什么是依赖注入?
- 请解释下 Spring 框架中的 IoC?
- BeanFactory 和 ApplicationContext 有什么区别?
- Spring 有几种配置方式?
- 如何用基于 XML 配置的方式配置 Spring?
- 如何用基于 Java 配置的方式配置 Spring?
- 怎样用注解的方式配置 Spring?
- 请解释 Spring Bean 的生命周期?
- Spring Bean 的作用域之间有什么区别?
- 什么是 Spring inner beans?
- 请举例说明如何在 Spring 中注入一个 Java Collection?
- ......
02 Spring学习文档部分(源码解析+Spring全家桶)
Spring学习文档包括SpringBoot学习笔记、实战文档、SpringMVC开发实战、SpringCloud微服务架构实战等。
以Spring源码深度解析为例:
- 第一部分:核心实现
Spring整体架构和环境搭建、容器的基本实现、默认标签的解析、自定义标签的解析、bean的加载、容器的功能扩展、AOP
- 第二部分:企业应用
数据库连接JDBC、整合Mybatis、事务、SpringMVC、远程服务、Spring消息
总结
关于大厂面试,总的来说,技术相关的考察主要分为两大块,一是基础,二是经验,基础包括java基础、数据库、中间件等,来自于日常的积累和面试前的准备。经验包括以往做过的项目、解决的问题、以及一些场景题(比如你的项目如果流量大了十倍如何保证可用)。
既然有进入大厂工作的理想,就要为此付诸行动——学习,刻不容缓。
更多资料展示:可三连支持一下
我的电子书收藏:
更多大厂面试题: