2020十大Java面试题

Posted 郑州AAA软件教育

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020十大Java面试题相关的知识,希望对你有一定的参考价值。

2020十大Java面试题

以10的等级进行自我评估您在Java中的表现

1



如果您不确定自己或对Java的熟练程度,这将是一个非常棘手的问题。如果这听起来很熟悉,则应该降低一些。在此之后,您可能会根据所接受的级别获得问题。因此,例如,如果您说10,而无法回答一个相当困难的问题,那将是一个缺点。

解释Java 7和8之间的区别

2



老实说,有很多差异。在这里,如果您可以列出最重要的那些,就足够了。您应该解释Java 8的新功能。
您应该知道的最重要的是:
· 此版本中引入了Lambda表达式(一种新的语言功能)。Lambda表达式使您可以将功能视为方法参数或将代码视为数据。Lambda表达式使您可以更紧凑地表示单方法接口(称为功能接口)的实例。
· 方法引用为已经具有名称的方法提供了易于阅读的lambda表达式。
· 默认方法允许将新功能添加到库的接口,并确保与为这些接口的较早版本编写的代码二进制兼容。
· 重复注释提供了将同一注释类型多次应用于同一声明或类型使用的能力。
· 类型注释提供了将注释应用于任何使用类型的地方,而不仅仅是在声明上的能力。与可插拔类型系统一起使用时,此功能可改进代码的类型检查。

您知道哪种类型的馆藏

3



在这里您应该了解最重要的一些:
· ArrayList
· LinkedList
· HashMap
· HashSet
在此之后,您可能会遇到以下问题:何时应使用此特定工具,相对于另一工具有什么好处,如何存储数据以及幕后工作的数据结构。
在这里,最好的方法是尽可能多地了解这些收集类型,因为各种问题几乎是无穷无尽的。

对象类有哪些方法?

4



这是一个非常常见的问题,用于确定您对基础知识的熟悉程度。这些是每个对象都具有的方法:
该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)

为什么字符串对象在Java中是不可变的?

5



1. 仅在Java中字符串是不可变的,所以才可能使用字符串池。这样,Java运行时可以节省大量Java堆空间,因为不同的String变量可以引用池中的相同String变量。如果String是不可变的,那么将不可能进行String实习,因为如果有任何变量更改了值,则它将反映在其他变量中。
2.如果String不可更改,那么它将对应用程序造成严重的安全威胁。例如,数据库用户名和密码作为String传递,以获取数据库连接,套接字编程主机和端口详细信息作为String传递。由于String是不可变的,因此其值无法更改。否则,任何黑客都可能更改参考值,从而导致应用程序中的安全问题。
3.由于String是不可变的,因此对于多线程是安全的,并且可以在不同线程之间共享单个String实例。这样可以避免为了线程安全而使用同步。字符串是隐式线程安全的。
4. Java类加载器中使用了字符串,并且不可变性提供了安全性,以确保 Java语言正确加载了正确的类 Classloader。例如,考虑一个实例,在该实例中,您尝试加载 java.sql.Connection 类,但是引用的值已更改为 myhacked.Connection class,并且可能会对数据库造成不良影响。
5.由于String是不可变的,因此其哈希码将在创建时进行缓存,因此无需再次计算。这使其成为地图中某个键的理想候选者,并且其处理速度比其他HashMap 键对象快 。这就是为什么String是HashMap 键的最常用的对象 。

Final,Final和Finalize有什么区别?

6



· 的最终关键字将在若干情况下使用,以限定只能一次被分配的实体。
· Java finally块是用于执行重要代码(如关闭连接,流等)的finally 块。无论是否处理异常,Java 块始终执行。Java finally 块位于 try 或 catch 块之后。
· 这是一种始终在删除/销毁对象之前调用的方法,该 对象适合垃圾回收执行清理活动。GarbageCollector

什么是钻石问题?

7



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

您如何 使一个类不可变?

8



我认为这是一个非常困难的问题。您需要对类进行一些修改以实现不变性:
1. 将课程声明为最终课程,因此无法扩展。
2. 将所有字段设为私有,以便不允许直接访问。
3. 不要提供变量的setter方法
4. 将所有可变字段定为最终值,使其值只能分配一次。
5. 通过执行深度复制的构造函数初始化所有字段。
6. 在getter方法中执行对象的克隆以返回副本,而不是返回实际的对象引用。

Singleton是什么意思?

9



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

什么是依赖注入?

10



依赖注入是Spring的思想,在使用Spring进行开发时,可以将对象交给spring进行管理,在初始化时spring创建一批对象,当你需要用的时候只要从spring的容器中获取对象,而不用自己去new,当然在对象创建的时候可以注入另一个对象

点击回看往期内容:


> 什么样的人无论何时都值钱            
> 最难毕业季,如何自救


以上是关于2020十大Java面试题的主要内容,如果未能解决你的问题,请参考以下文章

java面试题及答案2020,java面试题汇总, java最新面试题及答案2020 四

2020 年最新版 Java 面试题大全(文末附参考答案)

2020年最新版Java面试题大全(文末附参考答案)

java面试题及答案2020 java最新面试题及答案2020 一

java面试题及答案2020 java最新面试题及答案2020 一

Java面试题及答案,2020年最新面试题集合