首页 Java Java面试题 你能答对这些棘手的java面试题么

你能答对这些棘手的java面试题么

Mar 15, 2021 am 09:21 AM
java 面试题

你能答对这些棘手的java面试题么

本文为大家整理了几道国外的java面试题,听说也难倒了不少人。下面就让我们一起来看看这些面试题,看看他们到底有趣在哪里。

1、下面Java代码的输出是什么?

public class Test {
  
  public static void main(String[] args) {
    method(null);
  }
 
  public static void method(Object o) {
    System.out.println("Object method");
  }
  
  public static void method(String s) {
    System.out.println("String method");
  }
}

答案:

将打印“String method”。首先,null 在 Java 中不是一个对象,在 Java 中我们可以将 null 赋给任何一个引用类型。而 Java 中的字符串是 Java.lang.String 类的对象。在这里,Java 编译器会选择使用最具体的参数类型来调用重载方法。而String类型比Object更为具体,所以会调用method(String s)方法。

2、下面Java代码的输出是什么?

public class Test{
  public static void main(String[] args){
    Integer num1 = 100;
    Integer num2 = 100;
    if(num1 == num2){
      System.out.println("num1 == num2");
    }
    else{
      System.out.println("num1 != num2");
    }
  }
}

答案:

将打印“num1 == num2”。每当使用“ == ”比较两个不同的对象引用时,值总是“false”。但是在这里,由于 Integer 缓存,num1和 num2是自动装箱的。因此num1 == num2返回“true”。同时,整数缓存只会发生在-128到127之间的值。

3、垃圾收集是如何防止Java应用程序内存不足的?

答案:

Java 垃圾收集器不能防止 Java 应用程序耗尽内存。它只是在对象超出范围且不再需要时清除未使用的内存。因此,它不能保证防止Java应用程序不耗尽内存!

(学习视频分享:java视频教程

4、Java 是「按引用传递」还是「按值传递」

答案:

Java总是“按值传递”。然而,当我们传递一个对象的值时,我们传递对它的引用,因为变量存储对象引用,而不是对象本身。但这不是“引用传递”,这可能会让初学者感到困惑。

5、下面的代码创建了多少个String对象

public class Test{
  public static void main(String[] args){
    String s = new String("Hello World");
  }
}

答案:

创建了2个String对象。一个在堆内存中,一个在方法区中的字符串常量池中。

6、下面的代码输出是什么

public class Test{
  public static void main(String[] arr){
    System.out.println(0.1*3 == 0.3);
    System.out.println(0.1*2 == 0.2);
  }
}

答案:

第一句print输出false,第二句print输出true。因为浮点数的误差舍入导致,只有2的幂数可以用简单的二进制表示法精确表示。不对应于2次方的数字必须四舍五入以适应有限数量的位,因此,0.1*3是不等于0.3的。

7、有没有可能在 Java 中重写或重载静态方法?

答案:

重载(overload)静态 Java 方法是可能的,但是不可能重写(override)它们。你可以在子类中编写具有相同命名的另一个静态方法,但它不会重写超类方法。它在 Java 中被称为方法隐藏。

8、测试两个double值是否相等的最可靠的方法是什么?

答案:

Double.compare(d1, d2) == 0

9、如果 try 或 catch 块执行一个 return 语句,finally 块是否会被执行?

答案:

会执行。阻止 finally 块执行的唯一方法是使用System.exit()。

10、下面的代码输出是什么

public class Test{ 
  public static void main(String[] args){ 
   System.out.println("main method");
  } 
  public static void main(String args){ 
   System.out.println("Overloaded main method");
  } 
}

答案:

会打印“main method”。不会有错误或异常,因为 main 方法可以在 Java 中重载。必须从 main 方法内部调用它才能像其他方法一样执行。

相关推荐:java面试题及答案

以上是你能答对这些棘手的java面试题么的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Laravel Raw SQL查询示例 Laravel Raw SQL查询示例 Jul 29, 2025 am 02:59 AM

Laravel支持使用原生SQL查询,但应优先使用参数绑定以确保安全;1.使用DB::select()执行带参数绑定的SELECT查询,防止SQL注入;2.使用DB::update()执行UPDATE操作并返回影响行数;3.使用DB::insert()插入数据;4.使用DB::delete()删除数据;5.使用DB::statement()执行如CREATE、ALTER等无结果集的SQL语句;6.推荐在QueryBuilder中使用whereRaw、selectRaw等方法结合原生表达式以提升安

CSS桌面固定示例 CSS桌面固定示例 Jul 29, 2025 am 04:28 AM

table-layout:fixed会强制表格列宽由第一行单元格宽度决定,避免内容影响布局。1.设置table-layout:fixed并指定表格宽度;2.为第一行th/td设置具体列宽比例;3.配合white-space:nowrap、overflow:hidden和text-overflow:ellipsis控制文本溢出;4.适用于后台管理、数据报表等需稳定布局和高性能渲染的场景,能有效防止布局抖动并提升渲染效率。

以身作则 以身作则 Jul 29, 2025 am 04:10 AM

Go泛型从1.18开始支持,用于编写类型安全的通用代码。1.泛型函数PrintSlice[Tany](s[]T)可打印任意类型切片,如[]int或[]string。2.通过类型约束Number限制T为int、float等数字类型,实现Sum[TNumber](slice[]T)T安全求和。3.泛型结构体typeBox[Tany]struct{ValueT}可封装任意类型值,配合NewBox[Tany](vT)*Box[T]构造函数使用。4.为Box[T]添加Set(vT)和Get()T方法,无需

Python JSON负载示例 Python JSON负载示例 Jul 29, 2025 am 03:23 AM

json.loads()用于将JSON字符串解析为Python数据结构,1.输入必须是双引号包裹的字符串且布尔值为true/false;2.支持null→None、对象→dict、数组→list等自动转换;3.常用于处理API返回的JSON字符串,如response_string经json.loads()解析后可直接访问嵌套数据,使用时需确保JSON格式正确,否则会抛出异常。

Java项目管理Maven的开发人员指南 Java项目管理Maven的开发人员指南 Jul 30, 2025 am 02:41 AM

Maven是Java项目管理和构建的标准工具,答案在于它通过pom.xml实现项目结构标准化、依赖管理、构建生命周期自动化和插件扩展;1.使用pom.xml定义groupId、artifactId、version和dependencies;2.掌握核心命令如mvnclean、compile、test、package、install和deploy;3.利用dependencyManagement和exclusions管理依赖版本与冲突;4.通过多模块项目结构组织大型应用并由父POM统一管理;5.配

使用Jenkins和Gitlab的Java项目的CI/CD管道 使用Jenkins和Gitlab的Java项目的CI/CD管道 Jul 29, 2025 am 02:51 AM

setUpgitlabrepository,jenkinsserverwithrequiredplugins(git,gitlab,pipeline,maven),jdk和propertools; 2.configuregitlabwebhook withJenkinsurl(http:///project/)和triggeronpushevents; 3.CreateAjenkinsFileinTheprojectRootrootingDeclarationsyntaxtaxtodefinestag

如何将Java MistageDigest用于哈希(MD5,SHA-256)? 如何将Java MistageDigest用于哈希(MD5,SHA-256)? Jul 30, 2025 am 02:58 AM

要使用Java生成哈希值,可通过MessageDigest类实现。1.获取指定算法的实例,如MD5或SHA-256;2.调用.update()方法传入待加密数据;3.调用.digest()方法获取哈希字节数组;4.将字节数组转换为十六进制字符串以便读取;对于大文件等输入,应分块读取并多次调用.update();推荐使用SHA-256而非MD5或SHA-1以确保安全性。

用雅加达EE在Java建立静止的API 用雅加达EE在Java建立静止的API Jul 30, 2025 am 03:05 AM

SetupaMaven/GradleprojectwithJAX-RSdependencieslikeJersey;2.CreateaRESTresourceusingannotationssuchas@Pathand@GET;3.ConfiguretheapplicationviaApplicationsubclassorweb.xml;4.AddJacksonforJSONbindingbyincludingjersey-media-json-jackson;5.DeploytoaJakar

See all articles