当前位置: 首页 > article >正文

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 体系结构

只记得类加载器

讲了一会 巴拉巴拉 八股吟唱 啦啦啦

加载 连接 初始化 使用 卸载

连接又分为验证 准备 解析

还卡了好几下

让我别讲了

相关文章:

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

目录 1. 代理相关 从静态代理到动态代理 2. cglib可以代理被final修饰的类吗,为什么 3. JVM 体系结构 4. 垃圾回收算法 5. 什么是注解 如何使用 底层原理 6. synchronized和reentrantlock 7. 讲一下你项目中 redis的分布式锁 与java自带的锁有啥区别 8. post 请求和 ge…...

从图像“看出动作”

📘 第一部分:运动估计(Motion Estimation) 🧠 什么是运动估计? 简单说: 👉 给你一段视频,计算机要“看懂”里面什么东西动了、往哪动了、有多快。 比如: 一…...

鸿蒙案例---生肖抽卡

案例源码: Zodiac_cards: 鸿蒙生肖抽奖卡片 效果演示 初始布局 1. Badge 角标组件 此处为语雀内容卡片,点击链接查看:https://www.yuque.com/kevin-nzthp/lvl039/rccg0o4pkp3v6nua 2. Grid 布局 // 定义接口 interface ImageCount {url:…...

达梦数据库-学习-18-ODBC数据源配置(Linux)

一、环境信息 名称值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系统CentOS Linux release 7.9.2009 (Core)内存4G逻辑核数2DM版本1 DM Database Server 64 V8 2 DB Version: 0x7000c 3 03134284194-20240703-234060-20108 4 Msg Versi…...

Conda 入门指令教程

Conda 入门指令教程 Conda 是一个强大的包和环境管理工具,广泛应用于数据科学和机器学习项目中。本文将介绍 Conda 的常用指令,帮助你快速上手。 1. Conda 基础操作 查看 Conda 版本 conda --version显示当前安装的 Conda 版本。 更新 Conda conda…...

宿舍管理系统(servlet+jsp)

宿舍管理系统(servletjsp) 宿舍管理系统是一个用于管理学生宿舍信息的平台,支持超级管理员、教师端和学生端三种用户角色登录。系统功能包括宿舍管理员管理、学生管理、宿舍楼管理、缺勤记录、添加宿舍房间、心理咨询留言板、修改密码和退出系统等模块。宿舍管理员…...

驱动-兼容不同设备-container_of

驱动兼容不同类型设备 在 Linux 驱动开发中,container_of 宏常被用来实现一个驱动兼容多种不同设备的架构。这种设计模式在 Linux 内核中非常常见,特别 是在设备驱动模型中。linux内核的主要开发语言是C,但是现在内核的框架使用了非常多的面向…...

MySQLQ_数据库约束

目录 什么是数据库约束约束类型NOT NULL 非空约束UNIQUE 唯一约束PRIMARY KEY主键约束FOREIGN KEY外键约束CHECK约束DEFAULT 默认值(缺省)约束 什么是数据库约束 数据库约束就是对数据库添加一些规则,使数据更准确,关联性更强 比如加了唯一值约束&#…...

责任链设计模式(单例+多例)

目录 1. 单例责任链 2. 多例责任链 核心区别对比 实际应用场景 单例实现 多例实现 初始化 初始化责任链 执行测试方法 欢迎关注我的博客!26届java选手,一起加油💘💦👨‍🎓😄😂 最近在…...

控制反转(IoC)和依赖注入(DI)实现及常用注解

在Spring框架里,控制反转(IoC)和依赖注入(DI)是核心特性,以下将介绍实现它们的各种方式以及常用注解。 配置文件方式 详细版: Spring IoC与DI详解:从Bean概念到手写实现 XML 配置…...

DeepSeek 接入 Excel 完整教程

一、前期准备 1.1 获取 DeepSeek API 密钥 注册 DeepSeek 平台 访问 DeepSeek 官方网站(或指定的 API 服务平台,如硅基流动等)。若尚未注册,按照平台指引创建新账号并完成登录。 创建 API 密钥 进入用户控制面板,找到…...

林纳斯·托瓦兹:Linux系统之父 Git创始人

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 林纳斯托瓦兹:Linux之父、Git创始人 一、传奇人物的诞生 1. 早年生活与家…...

8. RabbitMQ 消息队列 + 结合配合 Spring Boot 框架实现 “发布确认” 的功能

8. RabbitMQ 消息队列 结合配合 Spring Boot 框架实现 “发布确认” 的功能 文章目录 8. RabbitMQ 消息队列 结合配合 Spring Boot 框架实现 “发布确认” 的功能1. RabbitMQ 消息队列 结合配合 Spring Boot 框架实现 “发布确认” 的功能1.1 回退消息 2.备用交换机3. API说…...

维港首秀!沃飞长空AE200亮相香港特别行政区

4月13日-16日,第三届香港国际创科展在香港会议展览中心盛大举办。 作为国内领先、国际一流的eVTOL主机厂,沃飞长空携旗下AE200批产构型登陆国际舞台,以前瞻性的创新技术与商业化应用潜力,吸引了来自全球17个国家及地区的行业领袖…...

ffmpeg命令(一):信息查询命令

媒体文件信息查看 命令说明ffmpeg -i input.mp4查看媒体文件基本信息(封装格式、编解码器、时长等)ffprobe input.mp4使用专用工具查看详细信息ffprobe -v error -show_format -show_streams input.mp4输出格式和流的详细信息ffprobe -v quiet -print_f…...

redis6.2.6-prometheus监控

一、软件及系统信息 redis:redis-6.2.6 redis_exporter:redis_exporter-v1.50.0.linux-amd64.tar.gz # cat /etc/anolis-release Anolis OS release 8.9 granfa; 7.5.3 二、下载地址 https://github.com/oliver006/redis_exporter/releases?page…...

MCP认证难题破解指南

一、MCP 认证体系与核心挑战 1.1 认证体系解析 MCP(Microsoft Certified Professional)作为微软认证体系的基础,覆盖操作系统、云服务、开发工具等核心领域。2025 年最新认证体系包含以下关键方向: Azure 云服务: 覆盖 Azure 虚拟机、容器化部署、云原生应用开发等核心技…...

20250415-vue-插槽-默认内容

在外部没有提供任何内容的情况下&#xff0c;可以为插槽指定默认内容。比如有这样一个 <SubmitButton> 组件: <button type"submit"><slot></slot> </button> 如果我们想在父组件没有提供任何插槽内容时再 <button> 内渲染 “…...

Ubuntu离线安装搜狗输入法

1. 下载输入法 下载搜狗输入法 2. 在联网的Ubuntu下载依赖 在联网的ubuntu上下载依赖 创建脚本download.sh mkdir deb-packages cd deb-packages packages"fcitx fcitx-libs libegl-dev libgl-dev libglu1-mesa-dev libglx-dev libgrpc1 libgrpc6 libjsoncpp1 libnss-…...

如何在idea中快速搭建一个Spring Boot项目?

文章目录 前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热启动&#xff08;热部署&#xff09;结语 前言 Spring Boot 凭借其便捷的开发特性&#xff0c;极大提升了开发效率&#xff0c;为 Java 开发工作带来诸多便利。许多大伙伴希望快速…...

itext7 html2pdf 将html文本转为pdf

1、将html转为pdf需求分析 经常会看到爬虫有这样的需求&#xff0c;将某一个网站上的数据&#xff0c;获取到了以后&#xff0c;进行分析&#xff0c;然后将需要的数据进行存储&#xff0c;也有将html转为pdf进行存储&#xff0c;作为原始存档&#xff0c;当然这里看具体的需求…...

边缘计算场景下的模型轻量化:TensorRT部署YOLOv7的端到端优化指南

一、边缘计算场景下的技术挑战与优化路径 在边缘设备&#xff08;如Jetson系列&#xff09;部署YOLOv7需兼顾模型精度、推理速度与功耗限制三重约束。TensorRT作为NVIDIA官方推理加速库&#xff0c;通过算子融合、量化压缩和内存复用等优化技术&#xff0c;可将模型推理速度提…...

golang 在windows 系统的交叉编译

基本交叉编译命令 GOOS目标操作系统 GOARCH目标架构 go build -o 输出文件名 包路径 编译 Linux 64位程序 set GOOSlinux set GOARCHamd64 go build -o myapp-linux main.go 编译 MacOS (Darwin) 64位程序 set GOOSdarwin set GOARCHamd64 go build -o myapp-macos main.go …...

docker compose搭建博客wordpress

一、前言 docker安装等入门知识见我之前的这篇文章 https://blog.csdn.net/m0_73118788/article/details/146986119?fromshareblogdetail&sharetypeblogdetail&sharerId146986119&sharereferPC&sharesourcem0_73118788&sharefromfrom_link 1.1 docker co…...

VueDOMPurifyHTML 防止 ​​XSS(跨站脚本攻击)​​ 风险

VueDOMPurifyHTML 是一个 ​​Vue.js 插件​​&#xff0c;用于在 v-html 指令中安全地渲染 HTML 内容&#xff0c;防止 ​​XSS&#xff08;跨站脚本攻击&#xff09;​​ 风险。 ​​作用​​ ​​解决 v-html 的安全问题​​ Vue 的 v-html 会直接渲染原始 HTML&#xff0…...

代码随想录算法训练营Day30

力扣452.用最少数量的箭引爆气球【medium】 力扣435.无重叠区间【medium】 力扣763.划分字母区间【medium】 力扣56.合并区间【medium】 一、力扣452.用最少数量的箭引爆气球【medium】 题目链接&#xff1a;力扣452.用最少数量的箭引爆气球 视频链接&#xff1a;代码随想录 题…...

国内开源医疗模型研究报告

引言 随着人工智能技术的快速发展&#xff0c;医疗AI领域正经历前所未有的变革。开源医疗模型作为这一领域的核心技术基础设施&#xff0c;不仅推动了医疗智能化进程&#xff0c;也为医疗工作者提供了强大的辅助工具。本报告将深入探讨国内优秀的开源医疗模型&#xff0c;分析…...

无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测

作者&#xff1a;牧思 背景 随着云原生的普及&#xff0c;Golang 编程语言变得越来越热门。相比 Java&#xff0c;Golang 凭借其轻量&#xff0c;易学习的特点得到了越来越多工程师的青睐&#xff0c;然而由于 Golang 应用需要被编译成二进制文件再进行运行&#xff0c;Golan…...

音乐产业新玩法:NFTs如何颠覆传统与挑战未来?

音乐产业新玩法&#xff1a;NFTs如何颠覆传统与挑战未来&#xff1f; 近年来&#xff0c;NFT&#xff08;Non-Fungible Token&#xff0c;非同质化代币&#xff09;像一颗新星&#xff0c;迅速在数字艺术、游戏等领域掀起了革命。而在音乐产业&#xff0c;NFT不仅是一种数字所…...

006.Gitlab CICD流水线触发

文章目录 触发方式介绍触发方式类型 触发方式实践分支名触发MR触发tag触发手动人为触发定时任务触发指定文件变更触发结合分支及文件变更触发正则语法触发 触发方式介绍 触发方式类型 Gitlab CICD流水线的触发方式非常灵活&#xff0c;常见的有如下几类触发方式&#xff1a; …...