若是你并不彻底确信你本身或是你对 Java 的熟练程度,那么这会是一个很是棘手的问题。若是有这种状况,你应该把打分调低一点。以后,你大概会获得与你认可的水平相符的问题。所以,假如你给本身满分,却不能回答一个有点难的问题,那将会对你不利。php
实话说,二者有不少不一样。若是你能列出最重要的,应该就足够了。你应该解释 Java 8 中的新功能。想要得到完整清单,请访问官网: Java 8 JDK 。html
你应该知道如下几个重点:java
你应该知道如下几个最重要的类型:面试
ArrayList LinkedList HashMap HashSet
以后,你可能会被问到这样一些问题,好比什么时候应该使用此种特定类型,它比其余的好在哪里,它是怎么存储数据的以及隐匿在其后的数据结构是什么。sql
最好的方法是尽量多地了解这些集合类型,由于这类问题几乎是无穷尽的。数据库
这是一个很是常见的问题,用来肯定你对基础知识的熟悉程度。如下是每一个对象都具备的方法:编程
在 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)
java.sql.Connection
类时,你引用的值却被更改成 myhacked.Connection
,而且它能对数据库执行你不须要的操做。HashMap
键类型快。这就是为何 String 是 HashMap
中最经常使用的键类型。为何 Java 中的字符串不可变? 点击这里了解更多。数据结构
这是我最喜欢的问题。
final
关键字用于在多个语境下定义只能分配一次的实体。finally
代码块是用于执行重要代码 (如关闭链接、流等) 的代码块。不管是否处理异常, finally
代码块总会被执行。 finally
代码块紧随 try
代码块或 catch
代码块。菱形继承问题反映了为何在 Java 中咱们不被容许实现多继承。若是有两个类共同继承一个有特定方法的超类,那么该方法会被两个子类重写。而后,若是你决定同时继承这两个子类,那么在你调用该重写方法时,编译器不能识别你要调用哪一个子类的方法。
咱们把这个问题称为 菱形继承问题 。上图对它做了说明,它也得名于此。
我认为这是一个至关困难的问题。您须要对类进行屡次修改,以实现不可变性:在此我向你们推荐一个架构学习交流裙。交流学习裙号:687810532,里面会分享一些资深架构师录制的视频录像
final private setter final getter
单例模式是指一个类仅容许建立其自身的一个实例,并提供对该实例的访问权限。它包含静态变量,能够容纳其自身的惟一和私有实例。它被应用于这种场景——用户但愿类的实例被约束为一个对象。在须要单个对象来协调整个系统时,它会颇有帮助。
这是你必须知道的首要问题, 不管你是使用 Java EE 仍是 Spring 框架。你能够看看个人文章,其中进一步地解释了这一点: 什么是依赖注入?
在本文中,咱们讨论了最多见的十个 Java 面试题 ——在我看来这是根据个人经验总结出的时下最重要的问题。若是你了解这些问题,我相信你能在面试中得到很大的优点。