【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么

第29题:静态代理和动态代理的区别是什么

📚 回答:

  • 核心对比
1. 实现代质关系的方式
  • 静态代理:在编码阶段明确目标对象和代理对象的关系,代理类需要手动编写。
  • 动态代理:在运行时动态生成代理对象,无需手动编写代理类。
2. 灵活性
  • 静态代理:灵活性较差,一旦接口增加方法,目标对象和代理对象都需要同步维护。
  • 动态代理:灵活性高,代理类由程序自动生成,无需手动维护。
3. 性能
  • 静态代理:性能较高,因为代理类是直接编译好的。
  • 动态代理:性能略低,因为代理类是在运行时动态生成的,会有一定的开销。
4. 使用场景
  • 静态代理:适合小型项目或简单的功能扩展场景。
  • 动态代理:适合大型项目或需要灵活扩展功能的场景(如AOP编程)。

💡 面试官视角

  • 面试官可能会问"为什么动态代理更灵活?"答:因为动态代理不需要提前编写代理类,代理对象是在运行时根据需求动态生成的,减少了代码冗余。
  • 面试官可能会追问"动态代理有哪些局限性?"答:JDK动态代理要求目标对象必须实现接口,CGLIB动态代理无法代理final类或final方法。

📌 专栏 :大白话说Java面试题 --- 01-Java基础篇

相关推荐
JacksonMx10 分钟前
@Transactional 最佳实践
java·spring boot·spring·性能优化
Sincerelyplz17 分钟前
【AI会议纪要实践】mapReduce、RAG 与结构化输出
java·后端·agent
贺国亚22 分钟前
Agent 框架 · LangChain / LangGraph / AutoGen / CrewAI
面试
过期动态23 分钟前
【LeetCode 热题 100】接雨水
java·数据结构·算法·leetcode·职场和发展
zavoryn24 分钟前
后端接入 AI Agent:Tool Calling 网关、幂等与审计日志实战
后端·架构
bug和崩溃我都要31 分钟前
Qt 封装 libmpv 全功能视频播放器开发指南
开发语言·qt·音视频
郝学胜-神的一滴36 分钟前
Qt 高级开发 018:复刻经典登录界面布局与窗口美化全解析
开发语言·c++·qt·程序人生·用户界面
郝亚军42 分钟前
IEEE 754 单精度浮点的SEM表示
开发语言·c++·算法
青山师1 小时前
动态规划算法深度解析:从状态转移方程到工业级优化
数据结构·算法·面试·动态规划·代理模式·java面试
zhangjw341 小时前
第15篇:Java多线程零基础入门,进程线程、线程创建方式、线程生命周期、线程安全彻底吃透
java·开发语言·面试