2025年4月15日 百度一面 面經

目錄

1. 代理相關 從靜態代理到動態代理

2. cglib可以代理被final修飾的類嗎,為什么

3. JVM 體系結構

4. 垃圾回收算法

5. 什么是注解 如何使用 底層原理

6. synchronized和reentrantlock

7. 講一下你項目中 redis的分布式鎖 與java自帶的鎖有啥區別

8. post 請求和 get 請求的區別

9. IOC 和 AOP 的使用

10. 過濾器和攔截器

11. 如果現在要寫一個攔截器去攔截訪問路徑 你會怎么設計

12. redis 數據結構

13. redis 哨兵以及他的優點

14. 算法 力扣 7 整數翻轉 中等題

總結


1. 代理相關 從靜態代理到動態代理

對目標行為的一種增強 前增強 后增強

靜態代理

接口 定義規則

實現了接口的具體類

代理類 代理類生成具體類對象

然后繼承了代理類

重寫方法

使用具體類對象調用方法 并且加上自己邏輯

我們只要使用代理類對象就能實現代理

動態代理分為 JDK 動態代理和 Cglib 動態代理

JDK 動態代理主要是利用了 Proxy 類里面的 newProxyInstance(不會讀 說的新的代理單例) 方法獲取代理單例

傳入參數 類加載器 實現接口 代理對象自定義類

代理對象自定義類實現了一個叫調用處理的接口(InvocationHandler)

然后重寫 invoke 方法

原理實際上是將方法傳到了 InvocationHandler 的 invoke 方法里面去

之后重寫邏輯即可

cglib 動態代理也是如同 jdk 動態代理一樣 (這邊沒說) 首先用工廠模式創建一個 Factory

定義一個方法獲取代理對象 傳入 Object

然后創建增強對象

傳入類加載器

代理類

攔截器

攔截器同樣是實現接口 我們在里面重寫方法(這邊說累了 就沒說 )

最后總結

JDK 動態代理使用較多 但是限制是只能代理接口類

最后又想了想 靜態代理是編譯的時候就進入機器的 可拓展性很差

動態代理允許在運行的時候動態編譯... (忘了)

(答 太多 就虛了 瘋狂遺忘+口誤)

2. cglib可以代理被final修飾的類嗎,為什么

cglib動態代理是原理靠繼承實現的

相當于讓父類繼承子類 然后優先調用子類的方法

面試官說我答的很含糊 問我有沒有看過源碼

我講了一下cglib 動態代理的流程

工廠模式創建一個 factory 對象 然后創建一個動態代理增強類 Enhancer 對象

通過增強類的 set 方法傳入參數

第一個參數 利用反射得到的類加載器

第二個參數 被代理類

第三個參數 方法攔截器 使用的一個命名為回調方法的東西

最后返回這個 代理類對象的 create() 方法

其中這個方法攔截器 實現了 MethodInterceptor 接口

重寫了 intercept 方法

添加了自己的操作 與 jdk 動態代理的 invoke 方法相似

面試官又問我如何體現繼承的

我說我看過源碼 方法攔截器是傳到一個數組里面去了 我看不懂源碼 (汗流浹背)

3. JVM 體系結構

只記得類加載器

講了一會 巴拉巴拉 八股吟唱 啦啦啦

加載 連接 初始化 使用 卸載

連接又分為驗證 準備 解析

還卡了好幾下

讓我別講了

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

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

相關文章

AI改變生活

AI改變生活 人工智能(AI)在我們生活中的應用越來越廣泛,深刻地改變了我們的工作和生活方式。以下是一些AI實際應用的實例,以及它們如何影響我們的日常生活。 1. 智能助手 智能助手如Siri、Alexa和Google Assistant等&#xff0…

信奧賽之c++基礎(取模運算與數位分離)

?? 數字拆解大冒險——取模運算與數位分離魔法課 ?? 第一章:糖果分裝術——取模運算 ?? 分糖果游戲 7顆糖每人分3顆: 每人得到:7 / 3 = 2顆剩余糖果:7 % 3 = 1顆(%就是取模符號) 就像把糖果裝袋后剩下的零散糖粒!?? 取模運算說明書 算式比喻結果10 % 310顆糖分…

揭秘大數據 | 21、軟件定義計算

老夫先將這個小系列的前兩篇內容鏈接奉上,方便感興趣的朋友一氣讀之。 揭秘大數據 | 19、軟件定義的世界-CSDN博客 揭秘大數據 | 20、軟件定義數據中心-CSDN博客 今天,書接上文,開聊軟件定義計算的那些事兒! 虛擬化是軟件定義…

FPGA-DDS技術的波形發生器

1.實驗目的 1.1掌握直接數字頻率合成(DDS)的基本原理及其實現方法。 1.2在DE2-115 FPGA開發板上設計一個可調頻率的正弦波和方波發生器,頻率范圍10Hz~5MHz,最小分辨率小于1kHz。 1.3使用Quartus II進行仿真,并通過S…

LeetCode[541]反轉字符串Ⅱ

思路: 題目給我們加了幾個規則,剩余長度小于2k,大于等于k就反轉k個,小于k就全部反轉,我們按照這個邏輯來就行。 第一就是大于等于k就反轉k個,我們for循環肯定是i2k了,接下來就是判斷是否大于等于…

實現定長的內存池

池化技術 所謂的池化技術,就是程序預先向系統申請過量的資源,然后自己管理起來,以備不時之需。這個操作的價值就是,如果申請與釋放資源的開銷較大,提前申請資源并在使用后并不釋放而是重復利用,能夠提高程序…

路由器原理與配置技術詳解

一、路由基礎原理 1.1 路由器的核心功能 網絡層設備:工作在OSI參考模型第三層,實現不同網絡間的互聯互通智能路徑選擇:基于路由表為數據包選擇最優傳輸路徑協議轉換:處理不同網絡接口間的協議差異(如以太網與PPP&…

Leetcode 3518. Smallest Palindromic Rearrangement II

Leetcode 3518. Smallest Palindromic Rearrangement II 1. 解題思路2. 代碼實現 題目鏈接:Leetcode 3518. Smallest Palindromic Rearrangement II 1. 解題思路 這一題是題目Leetcode 3517. Smallest Palindromic Rearrangement I的升級版本,其主要的…

大模型——Crawl4AI 中的數據提取策略

大模型——Crawl4AI 中的數據提取策略 在本章中,將詳細介紹在 Crawl4AI 中可用的數據提取策略。這些策略包括: LLMExtractionStrategy:用于詳細內容提取。JsonCssExtractionStrategy:使用 CSS 選擇器進行結構化數據檢索。CosineStrategy:基于余弦相似性進行有效的語義分段…

職坐標解碼互聯網行業轉型發展新動能

當前,互聯網行業正以前所未有的速度重塑全球產業格局。工信部最新數據顯示,我國互聯網企業營收連續三年保持雙位數增長,其中百強企業在人工智能、物聯網等領域的投入強度同比提升40%,展現出強勁的技術引領力。與此同時&#xff0c…

linux多線(進)程編程——(4)進程間的傳音術(命名管道)

前言(前情回顧) 進程君(父進程)在開發出匿名管道這門傳音術后,解決了和自己孩子(子進程)間的溝通問題,父子關系趨于融洽。和孩子溝通后,進程君發現,自己脫離…

在IDEA里面建立maven項目(便于java web使用)

具體步驟: 第一次有的電腦你再創建項目的時候右下角會提醒你彈窗:讓你下載沒有的東西 一定要下載!!可能會很慢 運行結果: 因為他是默認的8080端口所以在運行的時候輸入的url如下圖: 新建了一個controller代…

【13】數據結構之樹結構篇章

目錄標題 樹Tree樹的定義樹的基本概念樹的存儲結構雙親表示法孩子表示法孩子兄弟表示法 二叉樹二叉樹與度不超過2的普通樹的不同之處二叉樹的基本形態二叉樹的分類二叉樹的性質 二叉樹的順序存儲二叉樹的鏈式存儲二叉樹的鏈式存儲的結點結構樹的遍歷先序遍歷中序遍歷…

雷達生命探測儀,地震救援的生命探測先鋒|鼎躍安全

在地震、山體滑坡、坍塌建筑等突發災害中,會嚴重摧毀建筑物,造成倒塌和人員被困;在瓦礫堆、混凝土板層中,受困人員的生命安全常常面臨嚴峻威脅。傳統救援手段通常存在響應時間長、監測精度有限等不足。 救援現場往往環境復雜&…

512天,倔強生長:一位技術創作者的獨白

親愛的讀者與同行者: 我是倔強的石頭_,今天是我在CSDN成為創作者的第512天。當系統提示我寫下這篇紀念日文章時,我恍惚間想起了2023年11月19日的那個夜晚——指尖敲下《開端——》的標題,忐忑又堅定地按下了“發布”鍵。那時的我…

數據結構*集合框架順序表-ArrayList

集合框架 常見的集合框架 什么是順序表 順序表是一種線性表數據結構,它借助一組連續的存儲單元來依次存儲線性表中的數據元素。一般情況下采用數組存儲。 在數組上完成數據的增刪查改。 自定義簡易版的順序表 代碼展示: public interface IArray…

使用openpyxl時的一些注意點

一、是否需要close()? 在使用 openpyxl 時,wb.save() 后一般不需要再手動調用 wb.close()。wb.save() 會自動處理文件寫入和釋放。 如果是使用openpyxl.load_workbook(filename, read_onlyTrue) 打開了一個只讀模式的工作簿,此時會建立文件…

Python爬蟲第11節-解析庫Beautiful Soup的使用上篇

目錄 前言 一、Beautiful Soup 簡介 1.1 Beautiful Soup概述 1.2 準備工作 1.3 解析器 二、基本使用 三、節點選擇器的使用 3.1 選擇元素 3.2 提取信息 3.2.1 獲取名稱 3.2.2 獲取屬性 3.2.3 獲取內容 3.3 嵌套選擇 3.4 關聯選擇 3.4.1 子節點和子孫節點 3.4.2…

【Docker-13】Docker Container容器

Docker Container(容器) 一、什么是容器? 通俗地講,容器是鏡像的運行實體。鏡像是靜態的只讀文件,而容器帶有運行時需要的可寫文件層,并且容器中的進程屬于運行狀態。即容器運行著真正的應用進程。容器有…

Spring Cache(筆記)

簡介: 常用注解: