核心 Java 面试问题:第二部分

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

游戏名称是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 的副本以属于我们的新人。

相关文章