“顶级”面试官告诉你 这些Java 面试问题一定有

Q. 如果主方法被声明为私有怎么办?

回答:

该程序可以正确编译,但在运行时它会给出“Main method not public”。信息。

Q. Java中的引用传递和值传递是什么意思?

回答:

通过引用传递意味着传递地址本身而不是传递值。按值传递意味着传递值的副本

问:如果您要覆盖对象的 equals() 方法,您还可以考虑哪种其他方法?

回答:

哈希码()

问:什么是字节码?

要么

问:是什么赋予了 java “一次编写,随处运行”的特性?

回答:

所有 Java 程序都被编译成包含字节码的类文件。这些字节码可以在任何平台上运行,因此 java 被认为是平台无关的。

Q. 说明 public static void main(String args[]) 的每个关键字的原因?

回答:

public – main(..) 是执行程序时由 java 环境调用的第一个方法,因此必须从 java 环境访问它。因此访问说明符必须是公开的。

static:Java 环境应该能够在不创建类实例的情况下调用该方法,因此该方法必须声明为静态。

void : main不返回任何内容,因此返回类型必须为 void

参数 String 表示在命令行中给出的参数类型,而 arg 是在命令行中给出的字符串的数组。

问: == 和 .equals() 之间有什么区别?

要么

Q. == 和 equals 有什么区别

要么

Q. == 和 equals 方法的区别

要么

问:您会使用什么来比较两个字符串变量——运算符 == 或方法 equals()?

要么

问:在 == 运算符下,两个具有相同值的 String 对象怎么可能不相等?

回答:

== 运算符比较两个对象以确定它们是否是内存中的同一对象,即存在于同一内存位置。两个 String 对象可能具有相同的值,但位于不同的内存区域。

== 比较引用,而 .equals 比较内容。方法 public boolean equals(Object obj) 由 Object 类提供,可以被覆盖。仅当对象与自身进行比较时,默认实现才返回 true,这相当于使用相等运算符 == 将别名与对象进行比较。String、BitSet、Date 和 File 覆盖 equals() 方法。对于两个 String 对象,值相等意味着它们包含相同的字符序列。对于 Wrapper 类,值相等意味着原始值相等。

公共类 EqualsTest {公共静态无效主要(字符串[]参数){字符串 s1 = “abc”;字符串 s2 = s1;字符串 s5 = “abc”;字符串 s3 = 新字符串(“abc”);字符串 s4 = 新字符串(“abc”);System.out.println(”== 比较:” + (s1 == s5));System.out.println(”== 比较:” + (s1 == s2));System.out.println(”使用equals方法:” + s1.equals(s2));System.out.println(”== 比较:” + s3 == s4);System.out.println(”使用equals方法:” + s3.equals(s4));}}

问:如果从 main 方法的签名中删除 static 修饰符会怎样?

要么

问:如果我不提供字符串数组作为方法的参数怎么办?

回答:

程序编译。但在运行时会抛出错误“NoSuchMethodError”。

Q. 为什么 oracle Type 4 驱动被命名为 oracle 瘦驱动?

回答:

Oracle 提供了 Type 4 JDBC 驱动程序,称为 Oracle “瘦”驱动程序。该驱动程序包括其自己的完全用Java 编写的Oracle Net8 的TCP/IP 版本的实现,因此它独立于平台,可以在运行时下载到浏览器,并且在客户端不需要任何Oracle 软件。此驱动程序需要服务器端的 TCP/IP 侦听器,并且客户端连接字符串使用 TCP/IP 端口地址,而不是数据库名称的 TNSNAMES 条目。

问:final、finally 和 finalize 有什么区别?你对java final关键字的理解是什么?

要么

Q. 什么是final、finalize()和finally?

要么

问:什么是 finalize() 方法?

要么

问:类或成员是最终的是什么意思?

回答:

final – 声明常量

finally – 处理异常

finalize - 有助于垃圾收集

接口中定义的变量是隐式最终的。最终类不能扩展,即最终类不能被子类化。出于安全原因,这是使用 String 和 Integer 等基本类完成的。它还允许编译器进行一些优化,并使线程安全更容易实现。final 方法在其类被继承时不能被覆盖。您不能更改最终变量的值(是常量)。finalize() 方法在对象被销毁和垃圾收集之前使用。finally,异常处理中使用的关键字,无论是否抛出异常都会执行。例如,关闭打开的连接是在 finally 方法中完成的。

问:什么是 Java API?

回答:

Java API 是大量现成软件组件的集合,它们提供了许多有用的功能,例如图形用户界面 (GUI) 小部件。

问:什么是 GregorianCalendar 类?

回答:

GregorianCalendar 提供对传统西方日历的支持。

问:什么是 ResourceBundle 类?

回答:

ResourceBundle 类用于存储特定于语言环境的资源,这些资源可以由程序加载,以根据正在运行的特定语言环境定制程序的外观。

问:为什么 Java 中没有全局变量?

回答:

全局变量是全局可访问的。由于以下原因,Java 不支持全局可访问变量:

全局变量打破了引用透明性

全局变量在命名空间中产生冲突。

Q. 如何在java程序中将String转换为Number?

回答:

Integer 类的 valueOf() 函数用于将字符串转换为数字。这是代码示例:

字符串 numString = “1000”;int id=Integer.valueOf(numString).intValue();

问:什么是 SimpleTimeZone 类?

回答:

SimpleTimeZone 类提供对公历的支持。

问:while 语句和 do 语句有什么区别?

回答:

while 语句(预测试)在循环开始时检查是否应该发生下一个循环迭代。do while 语句(后测)在循环结束时检查是否应该发生循环的下一次迭代。do 语句将始终至少执行一次循环体。

问:什么是 Locale 类?

回答:

Locale 类用于根据特定地理、政治或文化区域的惯例定制程序输出。

Q. 描述 OOPS 的原则。

回答:

oops 的三个主要原理分别称为多态性、继承性和封装性。

Q. 解释继承原则。

回答:

继承是一个对象获取另一个对象的属性的过程。继承允许重用经过良好测试的过程,并使更改只需进行一次并在所有相关位置生效

问:什么是隐式转换?

回答:

隐式转换是简单地将一个实体分配给另一个实体的过程,而不需要对编译器进行任何转换指导。这种类型的转换不允许在所有类型的转换中使用,并且可能不适用于所有场景。

例子:

诠释 i = 1000;长 j = i;//隐式转换

问:sizeof 是 java 中的关键字吗?

回答:

sizeof 不是关键字。

问:什么是本地方法?

回答:

本机方法是用 Java 以外的语言实现的方法。

Q. 在 System.out.println() 中,什么是 System、out 和 println?

回答:

System 是预定义的 final 类,out 是 PrintStream 对象,println 是 out 对象中的内置重载方法。

Q. 什么是封装、继承和多态

要么

Q. 解释多态性原理。解释多态性的不同形式。

回答:

多态简单来说就是一个名字多种形式。多态性使一个实体可以用作不同类型动作的通用类别。具体行动由情况的确切性质决定。

多态在 Java 中以三种不同的形式存在:

方法重载

通过继承覆盖方法

通过 Java 接口覆盖方法

问:什么是显式转换?

回答:

在编译器被明确告知转换对象的过程中的显式转换。

例子:

longi =700.20;intj = (int) i;//Explicit casting

问:什么是 Java 虚拟机 (JVM)?

回答:

Java 虚拟机是可以移植到各种基于硬件的平台上的软件

问:你对向下转换的理解是什么?

回答:

Downcasting的过程是指从一般类型到更具体的类型的转换,即向下转换层次结构

问:什么是 Java 访问说明符?

要么

问:public、private、protected 和 default 访问说明符有什么区别?

要么

问:访问修饰符有哪些不同类型?

回答:

访问说明符是确定对类成员的访问类型的关键字。这些关键字用于允许对程序的某些部分(例如函数和变量)具有特权。这些是:

公共:所有班级都可以访问

受保护:同一包中的类和任何子类都可以访问。

私有的:只有它们所属的类可以访问

默认值: 它们所属的类和同一包中的子类可访问

Q. 哪个类是每个类的超类?

回答:

目的。

Q. 命名原始 Java 类型。

回答:

8 种基本类型是 byte、char、short、int、long、float、double 和 boolean。另外是字符串。

问:静态变量和非静态变量有什么区别?

要么

问:什么是“类变量”?

要么

问:Java 中的静态是什么?

要么

问:什么是静态方法?

回答:

静态变量与整个类相关联,而不是与类的特定实例相关联。每个对象将共享静态变量的一个公共副本,即每个类只有一个副本,无论从它创建多少对象。类变量或静态变量在类中使用 static 关键字声明。这些在类外部声明并存储在静态内存中。类变量主要用于常量。静态变量总是由类名调用。此变量在程序启动时创建,并在程序停止时销毁。类变量的范围与实例变量相同。其初始值与实例变量相同,未初始化时取默认值,对应数据类型。相似地,静态方法是属于类而不是类的任何对象的方法,它不适用于对象,甚至不需要类的任何对象都已实例化。静态方法是隐式最终的,因为覆盖是基于对象的类型完成的,并且静态方法附加到一个类,而不是一个对象。超类中的静态方法可以被子类中的另一个静态方法遮蔽,只要原始方法未声明为最终方法即可。但是,您不能用非静态方法覆盖静态方法。换句话说,您不能将静态方法更改为子类中的实例方法。因为覆盖是基于对象的类型完成的,并且静态方法附加到一个类,而不是一个对象。超类中的静态方法可以被子类中的另一个静态方法遮蔽,只要原始方法未声明为最终方法即可。但是,您不能用非静态方法覆盖静态方法。换句话说,您不能将静态方法更改为子类中的实例方法。因为覆盖是基于对象的类型完成的,并且静态方法附加到一个类,而不是一个对象。超类中的静态方法可以被子类中的另一个静态方法遮蔽,只要原始方法未声明为最终方法即可。但是,您不能用非静态方法覆盖静态方法。换句话说,您不能将静态方法更改为子类中的实例方法。

非静态变量对每个对象实例具有唯一值。

问:布尔 & 运算符和 && 运算符有什么区别?

回答:

如果计算涉及布尔 & 运算符的表达式,则计算两个操作数,而 && 运算符是快捷运算符。当计算涉及 && 运算符的表达式时,将计算第一个操作数。如果第一个操作数返回值 true,则计算第二个操作数。如果第一个操作数的计算结果为假,则跳过第二个操作数的计算。

问:Java 如何处理整数上溢和下溢?

回答:

它使用结果的那些低位字节,这些字节可以适合操作允许的类型的大小。

问:如果我写的是 static public void 而不是 public static void 怎么办?

回答:

程序编译并正常运行。

问:声明变量和定义变量有什么区别?

回答:

在声明中我们只提到变量的类型和它的名字而不初始化它。定义意味着声明+初始化。例如字符串;只是一个声明 while String s = new String ("bob"); 或字符串 s = “鲍勃”;都是定义。

问:Java 支持什么类型的参数传递?

回答:

在 Java 中,参数(基元和对象)总是按值传递。对于对象,对象引用本身是按值传递的,因此原始引用和参数副本都引用同一个对象。

Q. 解释封装原理。

回答:

封装是将数据和对数据进行操作的代码绑定或包装到单个实体中的过程。这使数据免受外部接口和误用的影响。对象允许将过程与它们的数据一起封装以减少潜在的干扰。考虑封装的一种方法是作为保护性包装器,防止代码和数据被包装器外部定义的其他代码任意访问。

Q. 你对变量的理解是什么?

回答:

变量是一个命名的内存位置,可以在程序中轻松引用。该变量用于保存数据,并且可以在程序执行过程中更改。

Q. 你对数字提升的理解是什么?

回答:

Numeric 提升是将较小的数值类型转换为较大的数值类型,以便可以进行整数和浮点运算。在数值提升过程中,byte、char 和 short 值被转换为 int 值。如有必要,int 值也会转换为 long 值。根据需要,long 和 float 值转换为 double 值。

Q. 用 java 语言进行强制转换是怎么理解的?铸造的种类有哪些?

回答:

将一种数据类型转换为另一种数据类型的过程称为 Casting。Java中有两种类型的强制转换;这些是隐式转换和显式转换。

Q. main 方法中 String 数组的第一个参数是什么?

回答:

字符串数组为空。它没有任何元素。这与默认情况下第一个元素是程序名称的 C/C++ 不同。如果我们在命令行中不提供任何参数,那么 main 方法的 String 数组将为空但不为 null。

问:如何证明数组不是空的而是空的?

回答:

打印array.length。它将打印 0。这意味着它是空的。但如果它为空,那么它会在尝试打印 array.length 时抛出 NullPointerException。

问:一个应用程序可以有多个具有主方法的类吗?

回答:

是的。在启动应用程序时,我们提到要运行的类名。JVM 将仅在您提到的名称的类中查找 main 方法。因此,具有 main 方法的多个类之间不存在冲突。

Q. 什么时候加载静态变量?它是在编译时还是运行时?何时在 Java 中加载静态块?

回答:

当类加载器将类带到 JVM 时会加载静态变量。不必创建对象。静态变量在加载后将被分配内存空间。静态块中的代码仅加载/执行一次,即当类首次初始化时。一个类可以有任意数量的静态块。静态块不是类的成员,它们没有返回语句,不能直接调用。不能包含 this 或 super。它们主要用于初始化静态字段。

问:我可以在同一个类中有多个主要方法吗?

回答:

我们可以有多个重载的 main 方法,但 只能有一个具有以下签名的 main 方法:

publicstaticvoidmain(String[] args){}

否,程序无法编译。编译器说 main 方法已经在类中定义了。

Q. 解释 Java 虚拟机 (JVM) 的工作原理?

回答:

JVM和其他真实的计算机一样是一个抽象的计算机,它首先使用编译器将.java文件转换为.class文件(.class只是字节码文件。)解释器读取字节码。

问:如何在不使用第三个变量的情况下交换两个变量?

回答:

添加两个变量并将值分配给第一个变量。用结果值减去第二个值。并分配给第二个变量。用第二个变量的结果减去第一个变量的结果并分配给第一个变量。例子:

inta=5,b=10;a=a+b; b=a-b; a=a-b;

您使用 XOR 交换。(最佳方法)在使用上述方法的情况下,它可能会溢出/不足。例如:

int a =5; int b =10;a = a ^ b;b = a ^ b;a = a ^ b;

Q. 什么是数据封装?

回答:

可以通过在用于访问对象字段的类 (JAVABEAN) 中创建“get”和“set”方法来使用封装。通常,这些字段是私有的,而 get 和 set 方法是公共的。封装可用于验证要存储的数据,对存储在一个或多个字段中的数据进行计算,或者用于自省(例如,在 Struts 中使用 javabeans 时经常出现这种情况)。将数据和功能包装成一个单元称为数据封装。封装只不过是将数据和相关方法封装到一个单元中,这样就可以在相关方法的帮助下访问数据。封装提供数据安全性。这不过是数据隐藏。

Q. 什么是反射 API?它们是如何实施的?

回答:

反射是在运行时自省类的特性和状态并在运行时动态操作的过程。使用带有内置类(如类、方法、字段、构造函数等)的反射 API 支持这一点。示例:使用 Java 反射 API,我们可以使用 getName 方法获取类名。

Q. JVM 自己维护缓存吗?JVM 是否在堆中分配对象?这是操作系统堆还是JVM维护的堆?为什么

回答:

是的,JVM 自己维护一个缓存。它在 HEAP 上创建对象,但对这些对象的引用位于堆栈上。

Q. 什么是幻象记忆?

回答:

幻影记忆是错误的记忆。现实中不存在的记忆。

问:方法可以是静态的和同步的吗?

回答:

可以同步静态方法。如果这样做,JVM 将获得对 java.lang 的锁定。

与对象关联的类实例。这类似于说:

synchronized(XYZ.class) {}

Q. String 和 StringTokenizer 有什么区别?

回答:

StringTokenizer 是用于分解字符串的实用程序类。

例子:

StringTokenizer st =newStringTokenizer(”Hello World”);while(st.hasMoreTokens()) {System.out.println(st.nextToken());}

输出:

HelloWorld

问题:什么是瞬态变量?

回答:

瞬态变量不能被序列化。例如,如果一个变量在 Serializable 类中声明为瞬态,并且该类被写入 ObjectStream,则该变量的值不能写入流,而是当从 ObjectStream 检索该类时,该变量的值变为

笔记

transientidentifies a variable not to be written out when aninstance is serialized  (It can't be copied to removesystem)volatileindicates that the field is used by synchronized threadsand that the compiler should not attempt to performoptimizations with it.When more than one thread share a (volatile) data it ischecked every time. Every thread keeps the latest value of volatile variable

问题:命名使用边框布局作为默认布局的容器?

回答:

默认使用边框布局的容器有:window、Frame 和 Dialog 类。

问题:您对同步的理解是什么?

回答:

同步是控制多个线程访问共享资源的过程,使得一次只有一个线程可以访问一个资源。在非同步多线程应用程序中,一个线程可以修改共享对象,而另一个线程正在使用或更新对象的值。同步可防止此类数据损坏。

例如同步一个函数:

public synchronized void Method1 () {// Appropriate method-related code.}

例如在函数内同步一段代码:

public myFunction (){synchronized (this) {// Synchronized code here.}}

说明:本文限于篇幅,故而只展示部分的面试内容,完整的Java面试学习文档小编已经帮你整理好了,有需要的朋友点赞+关注私信我777免费领取Java、大厂面试学习资料哦!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容