游戏名称是Java核心面试题,我做你的出题大师。每周我都会发布 10 个新的快速问答。如果您有任何问题想要提出建议,请给我发送电子邮件至 hello@corejavainterviewquestions.com 。
1. 什么是关闭钩子?
关闭挂钩允许您在 JVM 关闭时启动和运行线程。
Runtime.getRuntime().addShutdownHook(new Thread() {
});
您可能出于多种原因想要使用一个,例如停止接受新客户端或正确关闭连接。不能依赖它来执行,例如如果有 kill -9 之类的强制关闭。
2. 命名变量有什么规则?
变量必须以字母、$(美元符号)或 _(下划线)开头。因此,变量不能以数字开头,但后续字符可以包含数字。
3、Java支持goto吗?
goto 是 java 中的保留关键字,但它被标记为未使用。因此,您不能直接在 java 中执行 goto 语句。
4. hashcode和equals之间的契约是什么?
两个相等的对象必须具有相同的哈希码。具有相同哈希码的两个对象可能相等也可能不相等。
Runtime.getRuntime().addShutdownHook(new Thread() {
});
实际上,这意味着当您覆盖一个时,您应该覆盖另一个。
5. 你能覆盖静态方法吗?
不。静态方法属于类本身,而不属于对象实例。
6. 当我们说 java 支持协变返回类型时,我们是什么意思
当实现/覆盖一个方法时,我们可以返回一个类,它是原始返回类型的 子类型 。例如,父类返回一辆汽车,覆盖类返回一辆特斯拉就可以了。
Runtime.getRuntime().addShutdownHook(new Thread() {
});
自 Java 5 以来就是这种情况。
7、final、finally、finalize有什么区别?
final 是一个关键字,可用于类、方法或变量,表示该值不能更改或覆盖。 finally 在 try catch 块的末尾执行,并保证在正常情况下执行。 finalize 是在对象被垃圾回收时调用的方法。无法保证它会被执行,因此最好不要依赖它。
8、HashMap和HashTable有什么区别?
HashTable 是同步的,不允许空值。 HashMap 未同步,将允许 1 个空键和所有空值。现在通常不鼓励使用 HashTable,Collections.synchronizedMap(Map) 和 ConcurrentHashMap 是首选。
9. Collections.synchronizedMap 和 ConcurrentHashMap 有什么区别?
ConcurrentHashMap 的性能明显更高,并允许从多个线程并行访问读取和写入。但是,它不保证迭代器会或不会包含迭代期间所做的更新。因此,线程有可能具有过时的视图。 Collections.synchronizedMap 锁定整个映射以进行读写,因此性能不佳但保证了安全性和数据可见性。 ConcurrentHashMap 也不允许空键或空值。
10. 什么是浅拷贝和深拷贝?
浅拷贝将保留所有与原始对象相同的引用。例如,如果一个 Person 对象引用了一辆 Car,我们称它为 Car A,然后我们对 Person 进行浅拷贝,那么新的 Person 将指向 Car A。如果我们进行深拷贝,我们将导航整个从那个人的对象图并复制每个其他对象。在这种情况下,我们将制作一份汽车 A 的副本以属于我们的新人。