更新時間:2022-12-12 15:03:49 來源:動力節點 瀏覽1800次
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面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習