温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

2021常见的Java面试题有哪些

发布时间:2021-10-14 15:22:26 来源:亿速云 阅读:102 作者:iii 栏目:编程语言

本篇内容介绍了“2021常见的Java面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.解释Java 7和8之间的区别。
老实说,有很多差异。在这里,如果您可以列出最重要的那些,就足够了。您应该解释Java 8的新功能。

您应该知道的最重要的是:

· 此版本中引入了Lambda表达式(一种新的语言功能)。Lambda表达式使您可以将功能视为方法参数或将代码视为数据。Lambda表达式使您可以更紧凑地表示单方法接口(称为功能接口)的实例。

· 方法引用为已经具有名称的方法提供了易于阅读的lambda表达式。

· 默认方法允许将新功能添加到库的接口,并确保与为这些接口的较早版本编写的代码二进制兼容。

· 重复注释提供了将同一注释类型多次应用于同一声明或类型使用的能力。

· 类型注释提供了将注释应用于任何使用类型的地方,而不仅仅是在声明上的能力。与可插拔类型系统一起使用时,此功能可改进代码的类型检查。

2.您知道哪种类型的馆藏?
在这里您应该了解最重要的一些:

· ArrayList

· LinkedList

· HashMap

· HashSet

在此之后,您可能会遇到以下问题:何时应使用此特定工具,相对于另一工具有什么好处,如何存储数据以及幕后工作的数据结构。

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

3.对象类有哪些方法?
这是一个非常常见的问题,用于确定您对基础知识的掌握程度。这些是每个对象都具有的方法:

该Object班,在java.lang包装,坐镇类层次结构树的顶端。每个类都是该类的直接或间接后代Object。您使用或编写的每个类都继承的实例方法Object。您不需要使用任何这些方法,但是,如果您选择使用这些方法,则可能需要使用特定于您的类的代码覆盖它们。Object本节将讨论从中继承的方法:

· protected Object clone() throws CloneNotSupportedException
创建并返回此对象的副本。

· public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。

· protected void finalize() throws Throwable
当garbagecollection 确定不再有对该对象的引用时,由垃圾收集器在对象上调用 。

· public final Class getClass()
返回对象的运行时类。

· public int hashCode()
返回对象的哈希码值。

· public String toString()
返回对象的字符串表示形式。

的notify,notifyAll和wait方法Object都在一个程序,它在后面的课程中讨论,并不会在这里介绍的同步独立运行的线程的活动中发挥作用。这些方法有五种:

· 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.为什么 字符串对象在Java中是不可变的?
仅在Java中字符串是不可变的,所以才可能使用字符串池。这样,Java运行时可以节省大量Java堆空间,因为不同的String变量可以引用池中的相同String变量。如果String是不可变的,那么将不可能进行String实习,因为如果有任何变量更改了值,则它将反映在其他变量中。

如果String不可更改,那么它将对应用程序造成严重的安全威胁。例如,数据库用户名和密码作为String传递,以获取数据库连接,套接字编程主机和端口详细信息作为String传递。由于String是不可变的,因此其值无法更改。否则,任何黑客都可能更改参考值,从而导致应用程序中的安全问题。

由于String是不可变的,因此对于多线程是安全的,并且可以在不同线程之间共享单个String实例。这样可以避免为了线程安全而使用同步。字符串是隐式线程安全的。

5. Final,Final和Finalize有什么区别?
这个问题是我最喜欢的一个。

· 的最终关键字将在若干情况下使用,以限定只能一次被分配的实体。

· Java finally 块是用于执行重要代码(如关闭连接,流等)的finally 块。无论是否处理异常,Java 块始终执行。Java finally 块位于 try 或 catch 块之后。

· 这是一种始终在删除/销毁对象之前调用的方法,该 对象适合垃圾回收执行清理活动。GarbageCollector

6.什么是钻石问题?
钻石问题反映了为什么我们不允许在Java中进行多重继承。如果有两个类具有使用特定方法共享的超类,则在两个子类中都将其覆盖。然后,如果您决定从这两个继承 subClasses ,则如果您想调用该方法,则该语言无法确定您要调用的是哪一个。

我们把这个问题称为钻石问题。它是从上图描述警告的名称中获得的。

7.您如何 使一个类不可变?
我认为这是一个非常困难的问题。您需要对类进行一些修改以实现不变性:

(1)将课程声明为最终课程,因此无法扩展。

(2)将所有字段设为私有,以便不允许直接访问。

(3)不要提供变量的setter方法

(4) 将所有可变字段定为最终值,使其值只能分配一次。

(5) 通过执行深度复制的构造函数初始化所有字段。

(6)在getter方法中执行对象的克隆以返回副本,而不是返回实际的对象引用。

8. Singleton是什么意思?
单例是仅允许创建其自身的单个实例并提供对该创建实例的访问权限的类。它包含静态变量,可以容纳其自身的唯一实例和私有实例。当用户希望将类的实例化限制为仅一个对象时,可以使用它。通常在需要单个对象来协调整个系统中的动作时,这很有用。

“2021常见的Java面试题有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI