Spring面試題2

1、compareable和compactor區別

定義與包位置:Comparable是一個接口,位于java.lang包,需要類去實現接口;而Compactor是一個外部比較器,位于java.util包

用法:Comparable只需要實現int compareTo(T o)?方法,比較當前對象與參數對象的順序

Compactor實現int compare(T o1, T o2)?方法,比較兩個外部對象的順序

排序邏輯:Comparable由類自身定義唯一排序規則,Compactor可以自定義多種排序規則

2、SpringIOC,什么是控制反轉,什么是依賴注入?

IOC其實就是控制反轉,依賴注入(DI)是SpringIOC的一種實現方式

IOC(Inversion of Control):IOC指將對象的創建和管理權交給Spring容器(如ApplicationContext)統一控制。傳統開發中,對象通過new主動創建依賴,而IoC模式下,容器負責對象的生命周期和依賴關系

DI(Dependency Injection):是IoC的具體實現方式,指容器在運行時動態將依賴對象注入到目標組件中

依賴注入的兩種實現方式

  • XML配置:通過<bean>標簽定義對象及依賴關系。
  • 注解:如@Autowired(按類型注入)、@Resource(按名稱注入)、@Component等,簡化配置

依賴注入的三種方式

構造方法注入

Setter方法注入

屬性注入:@Autowired,@Resources

spring容器的核心作用

創建和管理bean、依賴注入、管理bean生命周期

SpringAOP是什么?特點是什么

Spring AOP(面向切面編程)是 Spring 框架的核心模塊之一,通過動態代理技術將橫切關注點(如日志、事務、權限等)與核心業務邏輯解耦

核心是:

切面(Aspect)
封裝橫切邏輯的模塊化單元,通過@Aspect注解定義。例如日志切面類中可包含記錄方法執行時間的代碼

連接點(JoinPoint)
程序執行過程中的可插入點,如方法調用、異常拋出等。Spring AOP僅支持方法級別的連接點

通知(Advice)

通知類型:

  • 前置通知(@Before):在方法執行前觸發(如權限校驗)。
  • 后置通知(@After):在方法執行后觸發(如日志記錄)。
  • 環繞通知(@Around):包裹目標方法,可控制執行流程(如事務管理)。
  • 異常通知(@AfterThrowing):在方法拋出異常時觸發(如錯誤處理)。
  • 返回通知(@AfterReturning):在方法正常返回后觸發

優點:與業務代碼解耦,提高代碼復用性,代碼靈活性提高

代理

靜態代理

動態代理

JDK動態代理:需要實現至少一個接口,這個接口可以是任意接口,spring會掃描是否使用了接口,如果有接口就用JDK動態代理,運行時動態生成接口實現類,用代理去掉用實現類的方法

CGLIB動態代理:是一個外部的類庫,支持去代理未實現接口的普通類

JDK動態代理與CGLIB在Spring中互補使用,前者適用于接口代理,后者覆蓋無接口場景

3、BIO/NIO/AIO區別

同步:同步就是發起一個調用后,被調用者未處理完請求之前,調用者不返回

異步:異步就是發起一個調用后,但是被調用者并沒有返回結果,此時調用者可以處理其他請求。

阻塞:阻塞就是發起一個請求,調用者一直等待請求結果返回,也就是當前線程會被掛起,無法從事其他任務,只有當條件就緒才能繼續。

非阻塞:非阻塞就是發起一個請求,調用者不用一直等著結果返回,可以先去干其他事情

  • BIO同步阻塞I/O模型,它使用一個線程來處理一個請求,如果這個請求沒有被處理完,這個線程就會一直等待,直到請求處理完成。

  • NIO同步非阻塞I/O模型,它使用單個線程來處理多個請求,這些請求可以同時被這個線程處理,它通過輪詢的方式來處理I/O請求,如果有I/O請求就處理,沒有就繼續輪詢。這種模型適用于連接數較多但是連接時間短的情況

  • AIO異步非阻塞I/O模型,這種模型不需要為每個請求創建一個線程,由操作系統內部的線程來處理I/O請求,同時它也具有非阻塞的特性,I/O請求不會一直等待,而是異步執行。這種模型適用于連接數很多的情況

舉個生活中簡單的例子,你媽媽讓你燒水,小時候你比較笨啊,在那里傻等著水開(同步阻塞)。等你稍微再長大一點,你知道每次燒水的空隙可以去干點其他事,然后只需要時不時來看看水開了沒有(同步非阻塞)。后來,你們家用上了水開了會發出聲音的壺,這樣你就只需要聽到響聲后就知道水開了,在這期間你可以隨便干自己的事情,壺響了你需要去倒水了(異步非阻塞)。

4、final 在 Java 中有什么作用?

  • final 修飾的類叫最終類,該類不能被繼承。

  • final 修飾的方法不能被重寫。

  • final 修飾的變量叫常量,常量必須初始化,初始化之后值就不能被修改。

5、Java中的容器都有哪些?

6、http和https區別

傳輸形式:http是明文傳輸的,https加密傳輸,采用對稱加密和非對稱加密結合的方式

傳輸協議:http基于TCP協議,而https基于SSL/TLS 協議

端口不同:http端口為80,https端口為443

證書:https需要證書認證,而http不需要證書

7、Array 和 ArrayList 有何區別

  • Array 可以存儲基本數據類型和對象,ArrayList 只能存儲對象

  • Array 是指定固定大小的,而 ArrayList 大小是自動擴展的。

  • Array 內置方法沒有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。

8、哪里用到了對稱加密和非對稱加密?

對稱加密:JWT生成token

非對稱:https,阿里云效代碼倉庫

9、spring框架哪里用到了反射?

1、bean的實例化:Spring通過反射動態創建對象實例,無需硬編碼new操作

2、依賴注入:通過反射調用setter方法或直接修改字段(如Field.set()?),將依賴對象注入目標Bean

3、Spring AOP利用反射生成代理對象

4、Spring MVC處理請求:Spring MVC通過反射解析@RequestMapping標記的方法,動態匹配請求參數并執行目標方法

5、數據庫訪問:Spring JDBC通過反射將ResultSet數據映射到實體類字段

10、

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896021.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896021.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DuodooBMS源碼解讀之 cncw_statement模塊

財務應收應付擴展模組用戶使用手冊 一、模塊概述 財務應收應付擴展模組是一個基于 Odoo18 的擴展模塊&#xff0c;主要對財務應收應付相關功能進行了修改和增強。該模塊增加了多個功能模塊&#xff0c;如預收款單模塊、費用類別設置模塊等&#xff0c;同時對發票、公司、銷售…

JUC并發—9.并發安全集合四

大綱 1.并發安全的數組列表CopyOnWriteArrayList 2.并發安全的鏈表隊列ConcurrentLinkedQueue 3.并發編程中的阻塞隊列概述 4.JUC的各種阻塞隊列介紹 5.LinkedBlockingQueue的具體實現原理 6.基于兩個隊列實現的集群同步機制 4.JUC的各種阻塞隊列介紹 (1)基于數組的阻塞…

vue項目啟動時報錯:error:0308010C:digital envelope routines::unsupported

此錯誤與 Node.js 的加密模塊有關&#xff0c;特別是在使用 OpenSSL 3.0 及以上版本時。Vue 項目在啟動時可能會依賴一些舊的加密算法&#xff0c;而這些算法在 OpenSSL 3.0 中默認被禁用&#xff0c;導致 error:0308010C:digital envelope routines::unsupported 錯誤。 解決…

ncDLRES:一種基于動態LSTM和ResNet的非編碼RNA家族預測新方法

現有的計算方法主要分為兩類&#xff1a;第一類是通過學習序列或二級結構的特征來預測ncRNAs家族&#xff0c;另一類是通過同源序列之間的比對來預測ncRNAs家族。在第一類中&#xff0c;一些方法通過學習預測的二級結構特征來預測ncRNAs家族。二級結構預測的不準確性可能會導致…

愛普生 SG-8101CE 可編程晶振在筆記本電腦的應用

在筆記本電腦的精密架構中&#xff0c;每一個微小的元件都如同精密儀器中的齒輪&#xff0c;雖小卻對整體性能起著關鍵作用。如今的筆記本電腦早已不再局限于簡單的辦公用途&#xff0c;其功能愈發豐富多樣。從日常輕松的文字處理、網頁瀏覽&#xff0c;到專業領域中對圖形處理…

SPRING10_getBean源碼詳細解讀、流程圖

文章目錄 ①. getBean方法的入口-DefaultListableBeanFactory②. DefaultListableBeanFactory調用getBean③. 進入到doGetBean方法④. getSingleton三級緩存方法⑤. getSingleton()方法分析⑥. createBean創建對象方法⑦. 對象創建、屬性賦值、初始化⑧. getBean最詳細流程圖 ①…

IDEA中查詢Maven項目的依賴樹

在Maven項目中&#xff0c;查看項目的依賴樹是一個常見的需求&#xff0c;特別是當你需要了解項目中直接或間接依賴了哪些庫及其版本時。你可以通過命令行使用Maven的dependency:tree插件來做到這一點。這個命令會列出項目中所有依賴的樹狀結構。 打開idea項目的終端&#xff…

深入xtquant:財務數據獲取與應用的實戰指南

深入xtquant&#xff1a;財務數據獲取與應用的實戰指南 在量化交易領域&#xff0c;雖然技術分析和市場情緒分析占據了主導地位&#xff0c;但財務數據作為評估公司基本面的重要依據&#xff0c;同樣不可或缺。xtquant作為一個強大的Python庫&#xff0c;提供了便捷的接口來獲…

windows 安裝 stable diffusion

在windows上安裝 stable diffusion&#xff0c;如果windows沒有nvidia顯卡&#xff0c;想只使用CPU可在webui-user.bat中添加命令 set COMMANDLINE_ARGS--no-half --skip-torch-cuda-test 可正常使用stable diffusion&#xff0c;但速度較慢

Kubernetes控制平面組件:APIServer 基于 引導Token 的認證機制

云原生學習路線導航頁&#xff08;持續更新中&#xff09; kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計&#xff08;一&#xff09;Kubernetes架構原則和對象設計&#xff08;二&#xff09;Kubernetes架構原則和對象設計&#xff08;三&#xff09;Kubernetes控…

DeepSeek 助力 Vue 開發:打造絲滑的縮略圖列表(Thumbnail List)

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…

DeepSeek寫俄羅斯方塊手機小游戲

DeepSeek寫俄羅斯方塊手機小游戲 提問 根據提的要求&#xff0c;讓DeepSeek整理的需求&#xff0c;進行提問&#xff0c;內容如下&#xff1a; 請生成一個包含以下功能的可運行移動端俄羅斯方塊H5文件&#xff1a; 核心功能要求 原生JavaScript實現&#xff0c;適配手機屏幕 …

百問網(100ask)的IMX6ULL開發板的以太網控制器(MAC)與物理層(PHY)芯片(LAN8720A)連接的原理圖分析(包含各引腳說明以及工作原理)

前言 本博文承接博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 。 本博文和博文 https://blog.csdn.net/wenhao_ir/article/details/145663029 的目錄是找出百問網(100ask)的IMX6ULL開發板與NXP官方提供的公板MCIMX6ULL-EVK(imx6ull14x14evk)在以太網硬件…

QT開發技術 【opencv圖片裁剪,平均哈希相似度判斷,以及獲取游戲窗口圖片】

一、圖片裁剪 int CJSAutoWidget::GetHouseNo(cv::Mat matMap) {cv::imwrite(m_strPath "/Data/map.png", matMap);for (int i 0; i < 4; i){for (int j 0; j < 6; j){// 計算當前子區域的矩形cv::Rect roi(j * 20, i * 17, 20, 17);// 提取子區域cv::Mat …

TiDB 是一個分布式 NewSQL 數據庫

TiDB 是一個分布式 NewSQL 數據庫。它支持水平彈性擴展、ACID 事務、標準 SQL、MySQL 語法和 MySQL 協議&#xff0c;具有數據強一致的高可用特性&#xff0c;是一個不僅適合 OLTP 場景還適合 OLAP 場景的混合數據庫。 TiDB是 PingCAP公司自主設計、研發的開源分布式關系型數據…

請解釋 Vue 中的生命周期鉤子,不同階段觸發的鉤子函數及其用途是什么?

vue生命周期鉤子詳解&#xff08;Vue 3版本&#xff09; 一、生命周期階段劃分 Vue組件的生命周期可分為四大階段&#xff0c;每個階段對應特定鉤子函數&#xff1a; 創建階段&#xff1a;初始化實例并準備數據掛載階段&#xff1a;將虛擬DOM渲染為真實DOM更新階段&#xff…

計算機專業知識【深入理解子網中的特殊地址:為何 192.168.0.1 和 192.168.0.255 不能隨意分配】

在計算機網絡的世界里&#xff0c;IP 地址是設備進行通信的關鍵標識。對于常見的子網&#xff0c;如 192.168.0.0/24&#xff0c;我們可能會疑惑為何某些地址不能分配給主機使用。接下來&#xff0c;我們就以 192.168.0.0/24 為例&#xff0c;詳細解釋為何 192.168.0.1 和 192.…

軟件架構設計:軟件工程

一、軟件工程概述 軟件工程的定義 軟件工程是應用系統化、規范化、可量化的方法開發、運行和維護軟件。 軟件工程的目標 提高軟件質量、降低開發成本、縮短開發周期。 軟件生命周期 瀑布模型&#xff1a;需求分析→設計→編碼→測試→維護。迭代模型&#xff1a;分階段迭代開…

mysql 學習15 SQL優化,插入數據優化,主鍵優化,order by優化,group by 優化,limit 優化,count 優化,update 優化

插入數據優化&#xff0c; insert 優化&#xff0c; 批量插入&#xff08;一次不超過1000條&#xff09; 手動提交事務 主鍵順序插入 load 從本地一次插入大批量數據&#xff0c; 登陸時 mysql --local-infile -u root -p load data local infile /root/sql1.log into table tb…