Spring 面試題集綿

2022-06-06 17:39:07 字數 3113 閱讀 3695

問題1:spring事務失效的場景?

答:a. 資料庫引擎不支援事務;

b. 沒有納入spring管理範圍;

c. 註解所在的方法不是public修飾的;

d. 發生了自呼叫問題;

e. 所用資料來源沒有配置事務管理器;

f. 異常**捉或拋異常錯誤;

g. 引入shiro中許可權註解;

h. 發生了spring父子上下文重疊;

可參考:spring事務失效的8大原因

問題2:spring中bean為何預設是單例?

答:a. 減少了新生成例項的效能和記憶體消耗;

b. 減少jvm垃圾**,因為**物件少了;

c. 快取快速獲取bean,除了第一次生成之外;

d. 缺點是如果有狀態的話在併發環境下執行緒不安全,prototype則不會。

問題3:spring獲取request的幾種方法及其執行緒安全性?

答:a. controller類中方法裡加request引數,執行緒安全,缺點是request物件貫穿整個請求處理中,傳來傳去太過繁瑣冗餘;

b. controller類中自動注入request依賴,執行緒安全,優點是減少**冗餘,注入範圍不限於controller層,如service、repository層等,注入物件不限於request物件,如response、session等;

這種若是有非同步操作,則request不能傳遞

c. 基類中自動注入request依賴,controller類繼承基類,執行緒安全,優點是避免了在不同的controller中重複注入request;

d. 手動呼叫(httpservletrequest request = ((servletrequestattributes) requestcontextholder.currentrequestattributes()).getrequest()),執行緒安全,優點是可以在非bean中直接獲取;

e. @modelattribute方法中設定request物件,執行緒不安全,應忽略。

可參考:spring中獲取request的幾種方法,及其執行緒安全性分析

問題4:spring生態專案有哪些?

答:a. springboot:一站式快速開發解決專案;

b. springcloud:提供對分布式系統的支援;

c. springdata:提供對主流的關係型及nosql型資料庫的封裝支援;

d. springsecurtiy:支援系統授權、認證的支援;

e. springsession:提供對session管理的支援;

f. springbatch:提供對大資料的批處理簡化處理優化的支援;

g. springamqp:提供對amqp的訊息支援;

h. springintegration:通過訊息機制對企業整合模式eip的支援

i. springwebflow:基於springmvc提供對向導流程式的開發;

j. springwebservice:提供基於soap/web協議服務的支援。

問題5:spring framework中模組構成及作用?

答:1. spring核心容器

a. spring-core:spring中的核心工具類包;

b. spring-beans:spring中定義bean的元件;

c. spring-context:spring的執行容器;

d. spring-context-support:spring容器的擴充套件支援;

e. spring-expression:spring的表示式語言支援;

2. 面向切面程式設計aop

a. spring-aop:基於**的aop支援;

b. spring-aspects:整合aspects的aop支援;

3. 支援web應用程式

a. spring-web:提供web的基礎功能;

b. spring-webmvc:提供springmvc的功能;

c. spring-websocket:提供web socket支援;

d. spring-webmvc-portlet:提供portlet環境的支援;

4. 資料訪問與整合

a. spring-jdbc:提供對jdbc連線的封裝功能;

b. spring-tx:提供對事務的支援;

c. spring-orm:提供物件-關係對映支援;

d. spring-oxm:提供物件-xml對映支援;

e. spring-jms:提供訊息佇列的支援;

5. 測試test

a. spring-test:提供對測試功能的支援。

問題6:spring解決迴圈依賴的方式?

答:a. 構造器引數迴圈依賴;

b. setter方式單例,預設方式;

c. setter方式原型;

注意:spring是通過遞迴的方式獲取目標bean及其依賴的bean的;spring例項化乙個bean的時候,是先例項化目標bean,然後為其注入屬性。

問題7:spring中使用了的九大設計模式?

b. 工廠方法模式:factorybean介面;

c. 單例模式:spring 中的bean預設都是單例的;

d. 介面卡模式:spring aop的增強或通知(advice)使用到了介面卡模式,spring mvc中也是用到了介面卡模式適配controller;

e. 裝飾器模式:我們的專案需要連線多個資料庫,而且不同的客戶在每次訪問中根據需要會去訪問不同的資料庫,這種模式讓我們可以根據客戶的需求能夠動態切換不同的資料來源;

f. **模式:spring aop功能的實現;

g. 觀察者模式:spring事件驅動模型就是觀察者模式很經典的乙個應用;

h. 策略模式:spring框架的資源訪問resource介面 ,該介面提供了更強的資源訪問能力,spring框架本身大量使用了resource介面來訪問底層資源;

i. 模板方法模式:spring中jdbctemplatehibernatetemplate等以template結尾的對資料庫操作的類,它們就使用到了模板模式。

可參考: spring面試7大問題

Elasticsearch 面試題集綿

問題1 elasticsearch為啥是近實時搜尋?答 a.新增的文件會被收集到indexing buffer中,然後文件從indexing buffer寫入到檔案系統快取中,是需要每秒自動重新整理分片,這時索引文件的變化並不是立即對搜尋可見。問題2 elasticsearch深分頁查詢有什麼問題?...

RabbitMQ 面試題集綿

問題1 為什麼需要通道,而不直接tcp直接通訊?答 a.tcp的建立和銷毀開銷大,建立要三次握手,銷毀要四次揮手 b.如果不用通道,應用程式直接tcp連線到rabbit伺服器,高峰時每秒成千上萬連線就會造成資源的巨大浪費,而且作業系統每秒處理tcp連線數也是有限制的,必定造成效能瓶頸 c.通道的原理...

前端面試題集綿(新年福利篇)

新年快樂!校招面試,各家企業的問題大同小異,知己知彼,百戰不殆 通過過來人的面經我們能總結出來自己需要準備的知識點。1 前端面試分享 2 阿里 美團點評 遠景 前端開發 春招 3 紀念我的大三實習春招 前端工程師 6 磕磕碰碰的春招 7 本科前端渣渣的春招面經 8 我的春招之路 10 回報牛客,分享...