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

面试题一:为什么 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 代码兼容。
  • 减少代码膨胀:只生成一份字节码,提高编译效率和减少内存占用。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/976227.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Python/Flask/机器学习链家网新房数据可视化及预测系统+万字文档+答辩PPT+指导搭建视频

技术栈: 编程语言:python 涉及技术:requests爬虫、mysql数据库、flask框架、scikit-learn机器学习预测算法、多元线性回归、Echarts可视化。 ①.需求分析: 1.数据爬取:自动化获取链家网新房数据。 2.数据存储&…

【DeepSeek-R1背后的技术】系列十一:RAG原理介绍和本地部署(DeepSeekR1+RAGFlow构建个人知识库)

【DeepSeek-R1背后的技术】系列博文: 第1篇:混合专家模型(MoE) 第2篇:大模型知识蒸馏(Knowledge Distillation) 第3篇:强化学习(Reinforcement Learning, RL)…

力扣LeetCode:1656 设计有序流

题目: 有 n 个 (id, value) 对,其中 id 是 1 到 n 之间的一个整数,value 是一个字符串。不存在 id 相同的两个 (id, value) 对。 设计一个流,以 任意 顺序获取 n 个 (id, value) 对,并在多次调用时 按 id 递增的顺序…

MATLAB在数据分析和绘图中的应用:从基础到实践

引言 股票数据分析是金融领域中的重要研究方向,通过对历史价格、成交量等数据的分析,可以帮助投资者更好地理解市场趋势和做出决策。MATLAB作为一种强大的科学计算工具,提供了丰富的数据处理和可视化功能,非常适合用于股票数据的…

2025年02月17日Github流行趋势

项目名称:OmniParser 项目地址url:https://github.com/microsoft/OmniParser 项目语言:Jupyter Notebook 历史star数:8971 今日star数:969 项目维护者:yadong-lu, ThomasDh-C, aliencaocao, nmstoker, kris…

Keepalive基础

一。简介和功能 vrrp协议的软件实现,原生设计目的是为了高可用ipvs服务 功能: 1.基于vrrp协议完成地址流动 2.为vip地址所在的节点生成ipvs规则(在配置文件中预先定义) 3.为ipvs集群的各RS做健康状况检测 4.基于脚本调用接口…

vue3: directive自定义指令防止重复点击

第一章 前言 相信很多小伙伴会在各个渠道上搜如何防止重复点击,之后会推荐什么防抖、节流来避免这一操作,该方法小编就不继续往下说了。接下来说说小编的场景,项目已经完成的差不多了,但是由于之前大家都是直接点击事件调用方法的…

第4章 4.3 EF Core 的实体类配置 Data Annatation Fluent API

4.3.1 约定大于配置 主要的约定规则: 规则 1: 数据库表名采用上下文类中对应的 DbSet 的属性名。 规则 2:数据库表列的名字采用实体类属性的名字,列的数据类型采用和实体类属性类型 兼容的类型。比如在 SQLServer 中,string 类型对应 nvarc…

【Redis 原理】通信协议 内存回收

文章目录 通信协议--RESP内存回收内存过期策略惰性删除周期删除 内存淘汰策略 通信协议–RESP Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub): 客户端(client)向服务端(se…

【GreenHills】GHS合并库文件

1、 文档目标 解决Green Hills对于多个库文件合并问题 2、 问题场景 客户具有多个工程库文件。但是,客户想要在项目最终交付的时候,通过将多个库文件打包成一个库文件,进行交付。 3、软硬件环境 1)、软件版本:MULTI…

山东大学软件学院nosql实验四

实验题目: 使用Java做简单数据插入 实验内容 用API方式,做数据插入。 使用Java语言实现数据插入界面,为实验一建立的学生、教师、课程表插入数据,可以在前端界面中录入数据之后保存,也可以导入Excel中的数据。 实…

nodejs npm install、npm run dev运行的坎坷之路

1、前面的种种都不说了,好不容易运行起来oap-portal项目,运行idm-ui项目死活运行不起来,各种报错,各种安装,各种卸载nodejs,卸载nvm,重装,都不好使。 2、甚至后来运行npm install会…

20250223下载并制作RTX2080Ti显卡的显存的测试工具mats

20250223下载并制作RTX2080Ti显卡的显存的测试工具mats 2025/2/23 23:23 缘起:我使用X99的主板,使用二手的RTX2080Ti显卡【显存22GB版本,准备学习AI的】 但是半年后发现看大码率的视频容易花屏,最初以为是WIN10经常更换显卡/来回更…

计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型民宿推荐系统 hive民宿可视化 民宿爬虫 大数据毕业设计(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

centos 7 安装python3 及pycharm远程连接方法

安装openssl 使用pip3安装 virtualenv的时候会提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 这是因为缺少openssl 2.0以上版本 解决办法: 一、先确认版本 openssl version 二、安…

DeepSeek 助力 Vue 开发:打造丝滑的文本输入框(Text Input)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

Bybit最大资金盗窃事件技术分析 by CertiK

事件概述 2025年2月21日UTC时间下午02:16:11,Bybit的以太坊冷钱包(0x1db92e2eebc8e0c075a02bea49a2935bcd2dfcf4[1])因恶意合约升级遭到资金盗取。根据Bybit CEO Ben Zhou的声明[2],攻击者通过钓鱼攻击诱骗冷钱包签名者错误签署恶意交易。他提到,该交易被伪装为合法操作:…

欧拉筛法寻找素数与计算欧拉函数求和

欧拉筛法寻找素数与计算欧拉函数求和 一、欧拉函数1.1定义1.2性质1.3唯一分解定理(算术基本定理) 二、Eratosthenes筛法寻找素数三、欧拉筛法寻找素数3.1算法代码3.2算法分析3.2.1时间复杂度分析(对合数进行不重复筛选)3.2.2算法正…

VScode 开发

目录 安装 VS Code 创建一个 Python 代码文件 安装 VS Code VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器,VSCode 开发环境非常简单易用。 VSCode 安装也很简单,打开官网 Visual S…

政安晨【零基础玩转各类开源AI项目】DeepSeek 多模态大模型Janus-Pro-7B,本地部署!支持图像识别和图像生成

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 目录 下载项目 创建虚拟环境 安装项目依赖 安装 Gradio(UI) 运…