这10道棘手的Java面试题,你能答对几个?
Posted 传智播客博学谷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这10道棘手的Java面试题,你能答对几个?相关的知识,希望对你有一定的参考价值。
在Java面试中,我们经常遇到一些棘手的问题,这些问题比较容易出错。
看了几个老外分享的面试题,而且问题都还不错。就整理出10道被大家常提到的问题。
如果是你能否可以说出正确答案呢?
以下Java代码的输出是什么?
点击查看大图
答案:
将打印“num1 == num2”。
每当使用“ == ”比较两个不同的对象引用时,值总是“false”。
但这里,由于 Integer 缓存,num1和 num2都是自动装箱的。因此num1 == num2返回“true”。同时,整数缓存只会发生在-128到127之间的值。
float f=3.4;是否正确?
答案:
不正确。
3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
以下代码输出的是什么
点击查看大图
答案:
会打印“main method”。
main 方法可以在 Java 中重载。必须从 main 方法内部调用它才能像其他方法一样执行。
下面的代码输出是什么
点击查看大图
答案:
第一句print输出false,第二句print输出true。
因为浮点数的误差舍入,只有2的幂数可以用简单的二进制表示法精确表示。
不对应于2次方的数字必须四舍五入以适应有限数量的位,因此,0.1*3是不等于0.3的。
short s1 = 1; s1 = s1 + 1;有错吗?
short s1 = 1; s1 += 1;有错吗?
答案:
对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。
而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。
Java 是按引用传递还是按值传递?
答案:
Java总是“按值传递”。
然而,当我们传递一个对象的值时,我们传递对它的引用,因为变量存储对象引用,而不是对象本身。
但这不是“引用传递”,这可能会让初学者感到困惑。
下面的代码创建了多少个String对象
点击查看大图
答案:
创建了2个String对象。
一个在方法区中的字符串常量池中,
一个在堆内存中。
有没有可能在 Java 中重写或重载静态方法?
答案:
重载(overload)静态 Java 方法是可能的,但是不可能重写。你可以在子类中编写具有相同命名的另一个静态方法,但它不会重写超类方法。
它在 Java 中被称为方法隐藏。
测试两个double值是否相等的最可靠的方法是什么?
答案:
Double.compare(d1, d2) == 0
如果 try 或 catch 块执行一个 return 语句,finally 块是否会被执行?
答案:
会被执行。
使用System.exit()。是阻止 finally 块执行的办法,且是唯一办法
以下是原文链接,感兴趣朋友可以看下:
https://levelup.gitconnected.com/tricky-java-interview-questions-cfc546fd03ab
10道题到这里就分享完啦,你答对了几道呢?
本文综合整理于网络
文末福利
以上是关于这10道棘手的Java面试题,你能答对几个?的主要内容,如果未能解决你的问题,请参考以下文章