工作多年以及在面试中, 我经常能体会到, 有些面试者确实是认真努力工作, 但坦白说表现出的能力水平却不足以通过面试, 通常是两方面原因:
1,"知其然不知其所以然". 做了多年技术, 开发了很多业务应用, 但似乎并未思考过种种技术选择背后的逻辑. 坦白说, 我并不放心把具有一定深度的任务交给他.
2, 知识碎片化, 不成系统. 在面试中, 面试者似乎无法完整, 清晰地描述自己所开发的系统, 或者使用的相关技术. 平时可能埋头苦干, 或者过于死磕某个实现细节, 并没有抬头审视这些技术.
前人已经掉过的坑, 后来的同学就别再 "前仆后继" 了!
那么我们就来谈谈 Java 反射机制, 动态代理原理吧.
这个面试题目给我的第一印象是稍微有点诱导的嫌疑, 可能会下意识地以为动态代理就是利用反射机制实现的, 这么说也不算错但稍微有些不全面.
功能才是目的, 实现的方法有很多.
总的来说, 这道题目考察的是 Java 语言的另外一种基础机制: 反射, 它就像是一种魔法, 引入运行时自省能力, 赋予了 Java 语言令人意外的活力, 通过运行时操作元数据或对象, Java 可以灵活地操作运行时才能确定的信息. 而动态代理, 则是延伸出来的一种广泛应用于产品开发中的技术, 很多繁琐的重复编程, 都可以被动态代理机制优雅地解决.
从考察知识点的角度, 这道题涉及的知识点比较庞杂, 所以面试官能够扩展或者深挖的内容非常多, 比如:
考察你对反射机制的了解和掌握程度.
动态代理解决了什么问题, 在你业务系统中的应用场景是什么?
JDK 动态代理在设计和实现上与 cglib 等方式有什么不同, 进而如何取舍?
来源: http://www.jianshu.com/p/e9f64c4a267f