> 文档中心 > java面试重点知识总结05

java面试重点知识总结05

文章目录

  • 一.重载和重写的区别?
  • 二.反射机制的优缺点.
  • 三.ArrayList和LinkedList区别?
  • 四. Java中堆和栈有什么不同?
  • 五.Spring通知有哪些类型

一.重载和重写的区别?

重写 总结:
1.发生在父类与子类之间
2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
重载 总结:
1.重载Overload是一个类中多态性的一种表现
2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准

二.反射机制的优缺点.

优点:
1、能够运行时动态获取类的实例,提高灵活性;
2、与动态编译结合
缺点:
1、使用反射性能较低,需要解析字节码,将内存中的对象进行解析。
解决方案:
1、通过setAccessible(true)关闭JDK的安全检查来提升反射速度;
2、多次创建一个类的实例时,有缓存会快很多
3、ReflectASM工具类,通过字节码生成的方式加快反射速度
2、相对不安全,破坏了封装性(因为通过反射可以获得私有方法和属性)

三.ArrayList和LinkedList区别?

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

四. Java中堆和栈有什么不同?

栈:在函数中定义的基本类型的变量和对象的引用变量都是在函数的栈内存中分配。
堆:堆内存用于存放由new创建的对象和数组。
从通俗化的角度来说,堆是用来存放对象的,栈是用来存放执行程序的

五.Spring通知有哪些类型?

1、前置通知(Before advice):在某连接点(join point)之前执行的通知,但这个通知不能阻止连
接点前的执行(除非它抛出一个异常)。
2、返回后通知(After returning advice):在某连接点(join point)正常完成后执行的通知:例
如,一个方法没有抛出任何异常,正常返回。
3、抛出异常后通知(After throwing advice):在方法抛出异常退出时执行的通知。
4、后通知(After (finally) advice):当某连接点退出的时候执行的通知(不论是正常返回还是异常
退出)。
5、环绕通知(Around Advice):包围一个连接点(join point)的通知,如方法调用。这是最强大的
一种通知类型。 环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直
接返回它们自己的返回值或抛出异常来结束执行。 环绕通知是最常用的一种通知类型。大部分基于拦截
的AOP框架,例如Nanning和JBoss4,都只提供环绕通知。