更新時(shí)間:2022-12-12 15:03:49 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2009次
ssm面試題及答案,最近看了不少的一線大廠的面試題,趁著馬上就要到新年了,又進(jìn)入到一個(gè)找就業(yè)的新階段,今天小編就來整理一下各大廠的面試題,幫助大家新的一年面試順利:
1.簡(jiǎn)述Spring中IOC容器常用的接口和具體的實(shí)現(xiàn)類
● BeanFactory SpringIOC容器的基本設(shè)置,是最底層的實(shí)現(xiàn), 面向框架本身的.
● ApplicationContext BeanFactory的子接口, 提供了更多高級(jí)的特定. 面向開發(fā)者的.
● ConfigurableApplicationContext, ApplicationContext的子接口,擴(kuò)展出了 close 和 refresh等 關(guān)閉 刷新容器的方法
● ClassPathXmlApplicationContext:從classpath的XML配置文件中讀取上下文,并生成上下文定義。應(yīng)用程序上下文從程序環(huán)境變量中取得。
● FileSystemXmlApplicationContext :由文件系統(tǒng)中的XML配置文件讀取上下文。
● XmlWebApplicationContext:由Web應(yīng)用的XML文件讀取上下文。
2.簡(jiǎn)述Spring中如何基于注解配置Bean和裝配Bean,
(1)首先要在Spring中配置開啟注解掃描
(2)在具體的類上加上具體的注解
(3)Spring 中通常使用@Autowired 或者是@Resource 等注解進(jìn)行bean的裝配
3.說出Spring 或者 Springmvc中常用的5個(gè)注解,并解釋含義
@Component 基本注解,標(biāo)識(shí)一個(gè)受Spring管理的組件
@Controller 標(biāo)識(shí)為一個(gè)表示層的組件
@Service 標(biāo)識(shí)為一個(gè)業(yè)務(wù)層的組件
@Repository 標(biāo)識(shí)為一個(gè)持久層的組件
@Autowired 自動(dòng)裝配
@Qualifier(“”) 具體指定要裝配的組件的id值
@RequestMapping() 完成請(qǐng)求映射
@PathVariable 映射請(qǐng)求URL中占位符到請(qǐng)求處理方法的形參
只要說出機(jī)幾個(gè)注解并解釋含義即可,如上答案只做參考
4.請(qǐng)解釋Spring Bean的生命周期?
(1)默認(rèn)情況下,IOC容器中bean的生命周期分為五個(gè)階段:
● 調(diào)用構(gòu)造器 或者是通過工廠的方式創(chuàng)建Bean對(duì)象
● bean對(duì)象的屬性注入值
● 調(diào)用初始化方法,進(jìn)行初始化,初始化方法是通過init-method來指定的.
● 使用
● IOC容器關(guān)閉時(shí), 銷毀Bean對(duì)象.
(2)當(dāng)加入了Bean的后置處理器后,IOC容器中bean的生命周期分為七個(gè)階段:
● 調(diào)用構(gòu)造器 或者是通過工廠的方式創(chuàng)建Bean對(duì)象
● 給bean對(duì)象的屬性注入值
● 執(zhí)行Bean后置處理器中的 postProcessBeforeInitialization
● 調(diào)用初始化方法,進(jìn)行初始化,初始化方法是通過init-method來指定的.
● 執(zhí)行Bean的后置處理器中 postProcessAfterInitialization
● 使用
● IOC容器關(guān)閉時(shí), 銷毀Bean對(duì)象
只需要回答出第一點(diǎn)即可,第二點(diǎn)也回答可適當(dāng) 加分。
5.簡(jiǎn)單的談一下SpringMVC的工作流程?
● 用戶發(fā)送請(qǐng)求至前端控制器DispatcherServlet
● DispatcherServlet收到請(qǐng)求調(diào)用HandlerMapping處理器映射器。
● 處理器映射器找到具體的處理器,生成處理器對(duì)象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
● DispatcherServlet調(diào)用HandlerAdapter處理器適配器
● HandlerAdapter經(jīng)過適配調(diào)用具體的處理器(Controller,也叫后端控制器)。
● Controller執(zhí)行完成返回ModelAndView
● HandlerAdapter將controller執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet
● DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
● ViewReslover解析后返回具體View
● DispatcherServlet根據(jù)View進(jìn)行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)。
● DispatcherServlet響應(yīng)用戶
6.SpringMVC中如何解決POST請(qǐng)求中文亂碼問題
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.簡(jiǎn)述SpringMvc里面攔截器是如何定義,如何配置,攔截器中三個(gè)重要的方法
定義:有兩種方式
● 實(shí)現(xiàn)HandlerInterceptor接口
● 繼承HandlerInterceptorAdapter
配置:
<mvc:interceptors>
<!--默認(rèn)是對(duì)所有請(qǐng)求都攔截 -->
<bean id="myFirstInterceptor" class="com.atguigu.interceptor.MyFirstInterceptor">
</bean>
<!-- 只針對(duì)部分請(qǐng)求攔截或者不攔截 -->
<mvc:interceptor>
<mvc:mapping path=" " /> <!—指定攔截-->
<mvc:exclude-mapping path=””/> <!—指定不攔截-->
<bean class=" com.atguigu.interceptor.MySecondInterceptor " /> </mvc:interceptor>
</mvc:interceptors>
攔截器中三個(gè)重要的方法:
● preHandle
● postHandle
● afterCompletion
8.MyBatis中 #{}和${}的區(qū)別是什么?
#{}是預(yù)編譯處理,${}是字符串替換;
Mybatis在處理#{}時(shí),會(huì)將sql中的#{}替換為?號(hào),調(diào)用PreparedStatement的set方法來賦值;
Mybatis在處理${}時(shí),就是把${}替換成變量的值;
使用#{}可以有效的防止SQL注入,提高系統(tǒng)安全性。
9.Mybatis 結(jié)果集的映射方式有幾種,并分別解釋每種映射方式如何使用。
自動(dòng)映射 ,通過resultType來指定要映射的類型即可。
自定義映射 通過resultMap來完成具體的映射規(guī)則,指定將結(jié)果集中的哪個(gè)列映射到對(duì)象的哪個(gè)屬性。
10.簡(jiǎn)述MyBatis的單個(gè)參數(shù)、多個(gè)參數(shù)如何傳遞及如何取值。
MyBatis傳遞單個(gè)參數(shù),如果是普通類型(String+8個(gè)基本)的,取值時(shí)在#{}中可以任意指定,如果是對(duì)象類型的,則在#{}中使用對(duì)象的屬性名來取值
MyBatis傳遞多個(gè)參數(shù),默認(rèn)情況下,MyBatis會(huì)對(duì)多個(gè)參數(shù)進(jìn)行封裝Map,取值時(shí)在#{}可以使用0 1 2 .. 或者是param1 param2..
MyBatis傳遞多個(gè)參數(shù),建議使用命名參數(shù),在Mapper接口的方法的形參前面使用
@Param() 來指定封裝Map時(shí)用的key. 取值時(shí)在#{}中使用@Param指定的key
以上就是“ssm面試題及答案,2023年詳細(xì)總結(jié)”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)