Java基础常见的面试题(易错!!)

news/2025/2/24 9:15:42

面试题一:为什么 Java 不支持多继承

        Java 不支持多继承主要是为避免 “菱形继承问题”(又称 “钻石问题”),即一个子类从多个父类继承到同名方法或属性时,编译器无法确定该调用哪个父类的成员。同时,多继承会使类的层次结构变得复杂,增加代码维护难度。Java 通过接口来实现类似多继承的功能,一个类可以实现多个接口,从而获得多个行为的组合。

面试题二:== 和 equals 有什么区别

  • == :对于基本数据类型,比较的是值是否相等;对于引用数据类型,比较的是对象的内存地址是否相同。
  • equals :是 Object 类中的方法,默认比较的是对象的内存地址,和 == 效果一样。但很多类(如 String、Integer 等)重写了该方法,用于比较对象内容是否相等。

面试题三:返回值不同算方法重载吗?为什么?

不算。方法重载的条件是在同一个类中,方法名相同,参数列表(参数个数、类型、顺序)不同,与返回值类型无关。因为在调用方法时,编译器是根据方法名和参数列表来确定调用的具体方法,而不是返回值类型。

面试题四:String 为什么被设计成不可变的?

  • 安全性:在网络连接、数据库操作等场景中传递 String 时,不可变特性可以防止数据被篡改。
  • 缓存效率:可以使用字符串常量池,相同字符串字面量共享同一对象,节省内存。
  • 线程安全:多个线程同时访问同一个 String 对象时,不用担心数据被修改。

面试题五:String str=new String ("hello") 创建了几个对象?

通常情况下创建了 2 个对象。字符串字面量 "hello" 会先在字符串常量池中创建一个对象,如果常量池中已存在则直接引用;然后通过 new 关键字在堆内存中创建一个新的 String 对象。

面试题六:包装类的实际应用场景有哪些?

  • 集合框架:Java 集合框架(如 List、Set 等)只能存储对象,所以需要将基本数据类型包装成包装类才能存入集合中。
  • 反射机制:反射操作方法和属性时,需要使用包装类来表示基本数据类型。
  • 泛型:泛型不能使用基本数据类型,必须使用包装类。

面试题七:说一下 Integer 高速缓存?

Integer 类有一个 IntegerCache 缓存机制,默认情况下会缓存 -128 到 127 之间的 Integer 对象。当使用自动装箱(如 Integer i = 100; )创建在这个范围内的 Integer 对象时,会直接从缓存中获取,而不是创建新的对象,提高了性能和节省内存。超出这个范围则会创建新的对象。

面试题八:为什么重写 equals 时,一定要重写 hashCode?

Java 中规定,如果两个对象通过 equals 方法比较相等,那么它们的 hashCode 值也应该相等。这是因为在一些基于哈希的数据结构(如 HashMap、HashSet)中,先通过 hashCode 值确定元素的存储位置,再通过 equals 方法判断元素是否相同。如果只重写 equals 不重写 hashCode,可能会导致在这些数据结构中出现逻辑错误,如无法正确存储或查找元素。

面试题九:什么是类型檫除?它有什么好处?

类型擦除是 Java 泛型的一种机制,在编译阶段,泛型类型会被擦除,替换为其上限类型(默认为 Object)。好处有:

  • 兼容性:使泛型代码能与旧版本的 Java 代码兼容。
  • 减少代码膨胀:只生成一份字节码,提高编译效率和减少内存占用。

面试题十:什么是克隆?深克隆和浅克隆有什么区别?

克隆是创建一个与原对象具有相同属性值的新对象。

  • 浅克隆:创建新对象,新对象的基本数据类型属性与原对象相同,引用类型属性指向原对象的引用地址,即共享引用对象。
  • 深克隆:不仅创建新对象,对于引用类型属性也会递归创建新的对象,新对象与原对象的引用类型属性指向不同的对象,相互独立 。

http://www.niftyadmin.cn/n/5864157.html

相关文章

解释 Vue 中的虚拟 DOM,如何通过 Diff 算法最小化真实 DOM 更新次数?

1. 虚拟DOM核心原理(附代码示例) // 简化的VNode结构示意 class VNode {constructor(tag, data, children) {this.tag tag // 标签名this.data data // 属性/指令等this.children children // 子节点数组} }// 两个新旧虚拟节点树示例 const oldV…

记录一次SpringMVC的406错误

原生态的406错误 1. 错误起因2. 解决办法解决方式一 检查是否有导入jackson依赖解决方式二 检查web.xml中是否有配置.html 3. 再次测试 1. 错误起因 最近博主准备重新撸一遍SSM以及SpringBoot的源码,于是用原始的SpringMVC写了一个demo,并且用Tomcat进行…

特辣的海藻!2

目录 基础知识点 整型数字-->字符数字 字符数字-->整型数字 判断 单个字符转换大小写 字符串转换大小写 读取单个字符 sort()函数 字符串反转 字符串 ---> 字符数组 字符数组 ---> 字符串 trim() 题 基础知识点 整型数字-->字符数字 方法一&…

【计算机网络】OSI模型、TCP/IP模型、路由器、集线器、交换机

一、计算机网络分层结构 计算机网络分层结构 指将计算机网络的功能划分为多个层次,每个层次都有其特定的功能和协议,并且层次之间通过接口进行通信。 分层设计的优势: 模块化:各层独立发展(如IPv4→IPv6&#xff0c…

vue从入门到精通(十三):收集表单数据

1.收集表单数据 若:<input type"text”/>&#xff0c;则v-model收集的是value值&#xff0c;用户输入的就是value值。 若:<input type"radio”/>&#xff0c;则v-model收集的是value值&#xff0c;且要给标签配置value值。 若: input type"check…

ASUS/华硕天选4 Plus 锐龙版 FA507X FA707X 原厂Win11 22H2专业版系统 工厂文件 带ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;带一键恢复&#xff0c;以及机器所有的驱动和软件。 支持型号&#xff1a;FA507XU FA507XV FA507XQ FA507XJ FA507XI, FA707XV, FA707XU, FA707XQ, FA707XJ, FA707XI, FA707XIN 系统版本&#xff1a;Windo…

Bash Shell控制台终端命令合集

最近整理了一下Bash Shell终端的命令,以备后续查用。如下: 1.内建命令 命令描述&在后台启动作业((x))执行数学表达式x.在当前shell中读取并执行指定文件中的命令:什么都不做,始终成功退出[ t ]对条件表达式t进行求值[[ e ]]对条件表达式e进行求值alias为指定的命令定义…

【Python爬虫(60)】解锁社交媒体数据宝藏:Python爬虫实战攻略

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…