2025年最全Java7和Java8有什么区别?Java面试常见问题!,做最轻量级的数据库中间层

最全Java7和Java8有什么区别?Java面试常见问题!,做最轻量级的数据库中间层最后 由于篇幅原因 就不多做展示了 本文已被 CODING 开源项目 一线大厂 Java 面试题解析 核心总结学习笔记 最新讲解视频 实战项目源码 收录 需要这份系统化的资料的朋友 可以点击这里获取 默认方法 支持将新功能添加到类库中的接口

大家好,我是讯享网,很高兴认识大家。

最后


讯享网

由于篇幅原因,就不多做展示了

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 默认方法,支持将新功能添加到类库中的接口,并确保与基于这些接口的旧版本的代码的二进制兼容性。
  • 重复注解,支持在同一声明或类型上多次应用同一注解类型。
  • 类型注解,支持在任何使用类型的地方应用注解,而不仅限于声明。此特性与可插入型系统一起使用时,可增强对代码的类型检查。

2. 你了解哪些集合类型?


你应该知道以下几个最重要的类型:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

之后,你可能会被问到这样一些问题,比如何时应该使用此种特定类型,它比其他的好在哪里,它是怎么存储数据的以及隐匿在其后的数据结构是什么。

最好的方法是尽可能多地了解这些集合类型,因为这类问题几乎是无穷尽的。

3. Object 类包含哪些方法?


这是一个非常常见的问题,用来确定你对基础知识的熟悉程度。以下是每个对象都具有的方法:

在 java.lang 包中,Object 类位于类层次结构的顶端。每个类都是 Object 类直接或间接的子类。你使用或编写的每个类都继承了 Object 类中的实例方法。你并不需要使用这些方法中的任何一种,但是,如果你选择这样做,则可能需要用你的类的特定代码来重写这些方法。以下是本节所讨论的从 Object 类中继承的方法:

  • protected Object clone throws CloneNotSupportedException 创建并返回此对象的副本。
  • public boolean equals(Object obj) 判断另一对象与此对象是否「相等」。
  • protected void finalize throws Throwable 当垃圾回收机制确定该对象不再被调用时,垃圾回收器会调用此方法。

  • public final Class getClass 返回此对象的运行时类。
  • public int hashCode 返回此对象的散列码值。
  • public String toString 返回此对象的字符串表示形式。
  • Object 类的 notify,notifyAll 和 wait 方法都在同步程序中独立运行线程的活动方面发挥了作用。
  • public final void notify
  • public final void notifyAll
  • public final void wait
  • public final void wait(long timeout)
  • public final void wait(long timeout, int nanos)

4. 为什么 String 对象是不可变的?


  • 因为字符串在 Java 中是不可变的,由此 Java 运行时环境节省了大量堆空间,因为不同的 String 变量可以引用池中的同一 String 变量。如果 String 不是不可变的, 则字符串驻留(String interning)将是不可能的,因为一旦任一变量更改所引用的String对象的值,它也会反映在其他变量中。
  • 如果字符串不是不可变的,那么它可能会对应用程序造成严重的安全威胁。例如,数据库用户名和密码都作为 String 传递以获取数据库连接,Socket 编程的主机和端口信息也是如此。由于字符串是不可变的,因此其值不能被更改。否则,任何黑客都可以篡改其引用的值,这会导致应用程序中的安全问题。
  • 由于 String 是不可变的,因此它对与多线程处理来说是安全的,并且可以在不同的线程之间共享单个 String 实例。这避免了为线程安全使用同步;字符串是隐式线程安全的。
  • 字符串被用在 Java 类加载器中,其不可变性为类加载器加载正确的类提供了安全性。否则的话,请考虑这样一个危险的情况,在你尝试加载 java.sql.Connection 类时,你引用的值却被更改为 myhacked.Connection,并且它能对数据库执行你不需要的操作。
  • 由于 String 是不可变的,因此在它被创建时其散列码就被缓存,不需要再次计算。这使得它成为映射中键的理想对象,它的处理速度比其他HashMap 键类型快。这就是为什么 String 是 HashMap 中最常用的键类型。

5. final,finally,和 finalize 三者之间有什么不同?


  • final 关键字用于在多个语境下定义只能分配一次的实体。
  • finally 代码块是用于执行重要代码 (如关闭连接、流等) 的代码块。无论是否处理异常,finally 代码块总会被执行。finally 代码块紧随 try 代码块或 catch 代码块。
  • finalize 是在删除或销毁对象之前垃圾回收器总会调用的方法,该方法使得垃圾回收机制能够执行清理活动。

6. 如何使一个类不可变?


  • 将类声明为 final,使其无法被继承。

最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

s.csdn.net/forums/4f45ff00ffa03fab5e56a57acb)收录

需要这份系统化的资料的朋友,可以点击这里获取

小讯
上一篇 2025-01-04 18:41
下一篇 2025-04-04 09:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/18331.html