面试小札:Java后端_闪电五连鞭_1

1. 谈谈 Java 中的多态,以及它是如何实现的?
 
多态是面向对象编程的重要特性之一,它允许不同的对象对同一消息做出不同的响应。
 
在 Java 中,多态主要通过方法重写和方法重载来实现。
 
方法重写发生在子类继承父类时,子类可以重新定义父类中的方法,当通过父类引用调用被重写的方法时,实际执行的是子类中的实现。
 
方法重载则是在同一个类中,定义多个同名但参数不同的方法,根据传入的参数不同来决定调用哪个方法。
 
实现多态的关键在于动态绑定,即在运行时根据对象的实际类型来决定调用哪个方法的实现。
 
2. 请解释一下 Java 中的垃圾回收机制,以及常用的垃圾回收算法。
 
Java 中的垃圾回收机制负责自动回收不再使用的对象所占用的内存,以避免内存泄漏和提高内存的使用效率。
 
常用的垃圾回收算法包括:
 
标记-清除算法:首先标记出所有需要回收的对象,然后统一回收被标记的对象所占用的空间。该算法会产生内存碎片。
复制算法:将内存分为两块,每次只使用其中一块。当进行垃圾回收时,将存活的对象复制到另一块内存中,然后清理原来使用的那块内存。
标记-压缩算法:在标记-清除算法的基础上,对存活对象进行移动,使它们紧凑排列,从而解决内存碎片问题。
分代收集算法:根据对象的生命周期将内存分为新生代和老年代,针对不同代采用不同的垃圾回收算法。新生代通常采用复制算法,老年代通常采用标记-清除或标记-压缩算法。
 
3. 描述一下 Java 中的线程同步方式,比如 synchronized 和 Lock 的区别。
 
Java 中的线程同步方式主要用于解决多线程并发访问共享资源时可能出现的数据不一致问题。
 
 synchronized 是 Java 内置的关键字,用于实现同步。它可以修饰方法或代码块。
 
 Lock 是一个接口,常见的实现类如 ReentrantLock 。
 
两者的区别主要包括:
 
灵活性: Lock 提供了更多灵活的操作,比如可以尝试获取锁、设置获取锁的超时时间等,而 synchronized 没有这些功能。
可中断性:使用 Lock 获取锁时,可以被中断,而 synchronized 获取锁时不可中断。
公平性: Lock 可以支持公平锁和非公平锁,而 synchronized 只能是非公平锁。
 
上一篇:Unity 利用Button 组件辅助Scroll View 滚动-实现