問題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中jdbctemplate
、hibernatetemplate
等以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 回報牛客,分享...