更新时间:2022-12-12 15:03:49 来源:极悦 浏览1388次
ssm面试题及答案,最近看了不少的一线大厂的面试题,趁着马上就要到新年了,又进入到一个找就业的新阶段,今天小编就来整理一下各大厂的面试题,帮助大家新的一年面试顺利:
1.简述Spring中IOC容器常用的接口和具体的实现类
● BeanFactory SpringIOC容器的基本设置,是最底层的实现, 面向框架本身的.
● ApplicationContext BeanFactory的子接口, 提供了更多高级的特定. 面向开发者的.
● ConfigurableApplicationContext, ApplicationContext的子接口,扩展出了 close 和 refresh等 关闭 刷新容器的方法
● ClassPathXmlApplicationContext:从classpath的XML配置文件中读取上下文,并生成上下文定义。应用程序上下文从程序环境变量中取得。
● FileSystemXmlApplicationContext :由文件系统中的XML配置文件读取上下文。
● XmlWebApplicationContext:由Web应用的XML文件读取上下文。
2.简述Spring中如何基于注解配置Bean和装配Bean,
(1)首先要在Spring中配置开启注解扫描
(2)在具体的类上加上具体的注解
(3)Spring 中通常使用@Autowired 或者是@Resource 等注解进行bean的装配
3.说出Spring 或者 Springmvc中常用的5个注解,并解释含义
@Component 基本注解,标识一个受Spring管理的组件
@Controller 标识为一个表示层的组件
@Service 标识为一个业务层的组件
@Repository 标识为一个持久层的组件
@Autowired 自动装配
@Qualifier(“”) 具体指定要装配的组件的id值
@RequestMapping() 完成请求映射
@PathVariable 映射请求URL中占位符到请求处理方法的形参
只要说出机几个注解并解释含义即可,如上答案只做参考
4.请解释Spring Bean的生命周期?
(1)默认情况下,IOC容器中bean的生命周期分为五个阶段:
● 调用构造器 或者是通过工厂的方式创建Bean对象
● bean对象的属性注入值
● 调用初始化方法,进行初始化,初始化方法是通过init-method来指定的.
● 使用
● IOC容器关闭时, 销毁Bean对象.
(2)当加入了Bean的后置处理器后,IOC容器中bean的生命周期分为七个阶段:
● 调用构造器 或者是通过工厂的方式创建Bean对象
● 给bean对象的属性注入值
● 执行Bean后置处理器中的 postProcessBeforeInitialization
● 调用初始化方法,进行初始化,初始化方法是通过init-method来指定的.
● 执行Bean的后置处理器中 postProcessAfterInitialization
● 使用
● IOC容器关闭时, 销毁Bean对象
只需要回答出第一点即可,第二点也回答可适当 加分。
5.简单的谈一下SpringMVC的工作流程?
● 用户发送请求至前端控制器DispatcherServlet
● DispatcherServlet收到请求调用HandlerMapping处理器映射器。
● 处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
● DispatcherServlet调用HandlerAdapter处理器适配器
● HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
● Controller执行完成返回ModelAndView
● HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
● DispatcherServlet将ModelAndView传给ViewReslover视图解析器
● ViewReslover解析后返回具体View
● DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
● DispatcherServlet响应用户
6.SpringMVC中如何解决POST请求中文乱码问题
Springmvc中通过CharacterEncodingFilter解决中文乱码问题.
在web.xml中加入:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
7.简述SpringMvc里面拦截器是如何定义,如何配置,拦截器中三个重要的方法
定义:有两种方式
● 实现HandlerInterceptor接口
● 继承HandlerInterceptorAdapter
配置:
<mvc:interceptors>
<!--默认是对所有请求都拦截 -->
<bean id="myFirstInterceptor" class="com.atguigu.interceptor.MyFirstInterceptor">
</bean>
<!-- 只针对部分请求拦截或者不拦截 -->
<mvc:interceptor>
<mvc:mapping path=" " /> <!—指定拦截-->
<mvc:exclude-mapping path=””/> <!—指定不拦截-->
<bean class=" com.atguigu.interceptor.MySecondInterceptor " /> </mvc:interceptor>
</mvc:interceptors>
拦截器中三个重要的方法:
● preHandle
● postHandle
● afterCompletion
8.MyBatis中 #{}和${}的区别是什么?
#{}是预编译处理,${}是字符串替换;
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理${}时,就是把${}替换成变量的值;
使用#{}可以有效的防止SQL注入,提高系统安全性。
9.Mybatis 结果集的映射方式有几种,并分别解释每种映射方式如何使用。
自动映射 ,通过resultType来指定要映射的类型即可。
自定义映射 通过resultMap来完成具体的映射规则,指定将结果集中的哪个列映射到对象的哪个属性。
10.简述MyBatis的单个参数、多个参数如何传递及如何取值。
MyBatis传递单个参数,如果是普通类型(String+8个基本)的,取值时在#{}中可以任意指定,如果是对象类型的,则在#{}中使用对象的属性名来取值
MyBatis传递多个参数,默认情况下,MyBatis会对多个参数进行封装Map,取值时在#{}可以使用0 1 2 .. 或者是param1 param2..
MyBatis传递多个参数,建议使用命名参数,在Mapper接口的方法的形参前面使用
@Param() 来指定封装Map时用的key. 取值时在#{}中使用@Param指定的key
以上就是“ssm面试题及答案,2023年详细总结”,你能回答上来吗?如果想要了解更多的相关内容,可以关注极悦Java官网。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习