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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法题(77):数组中的第k个最大元素

审题: 需要我们在时间复杂度O(n)的前提下找到数组中第k个最大元素 思路: 方法一:建堆实现 首先写一个dowmset函数,实现对第i个索引位置的向下调整。然后创建build函数,利用dowmset实现向下调整建堆,再根据k…

PCIe学习笔记1:PCIe体系架构——PCIe简介

目录 一、PCIe简介 1.1 串行传输 1.1.1 相对于并行传输的优化 1.1.2 带宽计算 1.1.3 差分信号传输 1.1.4 基于数据包的传输协议 1.2 PCIe的系统拓扑结构 1.2.1 根组件(Root Complex,RC) 1.2.2 上行端口与下行端口 1.2.3 交换机与桥 …

一天记20个忘10个之4:man

据说,给你一个支点,你就能撬起地球。 那好,今天,我给你一个 man,如果你能完成记20个忘10个的任务,你就真的很 man 了。 零、热身 young manold manmedical man 一、man之复合词 1.1 man复合词 chairm…

SpringBoot之自定义简单的注解和AOP

1.引入依赖 <!-- AOP依赖--> <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.8</version> </dependency>2.自定义一个注解 package com.example.springbootdemo3.an…

利用开源小智AI制作桌宠机器狗

本文主要介绍如何利用开源小智AI制作桌宠机器狗 1 源码下载 首先下载小智源码,下载地址, 下载源码后,使用vsCode打开,需要在vscode上安装esp-idf,安装方式请自己解决 2 源码修改 2.1添加机器狗控制代码 在目录main/iot/things下添加dog.cc文件,内容如下; #include…

深入理解IP子网掩码子网划分{作用} 以及 不同网段之间的ping的原理 以及子网掩码的区域划分

目录 子网掩码详解 子网掩码定义 子网掩码进一步解释 子网掩码的作用 计算总结表 子网掩码计算 子网掩码对应IP数量计算 判断IP是否在同一网段 1. 计算步骤 2. 示例 3. 关键点 总结 不同网段通信原理与Ping流程 1. 同网段通信 2. 跨网段通信 网段计算示例 3. P…

利用python和gpt写一个conda环境可视化管理工具

最近在学习python&#xff0c;由于不同的版本之间的差距较大&#xff0c;如果是用环境变量来配置python的话&#xff0c;会需要来回改&#xff0c;于是请教得知可以用conda来管理&#xff0c;但是conda在管理的时候老是要输入命令&#xff0c;感觉也很烦&#xff0c;于是让gpt帮…

Linux内核,slub分配流程

我们根据上面的流程图&#xff0c;依次看下slub是如何分配的 首先从kmem_cache_cpu中分配&#xff0c;如果没有则从kmem_cache_cpu的partial链表分配&#xff0c;如果还没有则从kmem_cache_node中分配&#xff0c;如果kmem_cache_node中也没有&#xff0c;则需要向伙伴系统申请…

使用Windbg调试目标进程排查C++软件异常的一般步骤与要点分享

目录 1、概述 2、将Windbg附加到已经启动起来的目标进程上&#xff0c;或者用Windbg启动目标程序 2.1、将Windbg附加到已经启动起来的目标进程上 2.2、用Windbg启动目标程序 2.3、Windbg关联到目标进程上会中断下来&#xff0c;输入g命令将该中断跳过去 3、分析实例说明 …

51单片机测试题AI作答测试(DeepSeek Kimi)

单片机测试题 DeepSeek Kimi 单项选择题 &#xff08;10道&#xff09; 6题8题判断有误 6题判断有误 智谱清言6题靠谱&#xff0c;但仔细斟酌&#xff0c;题目出的貌似有问题&#xff0c;详见 下方。 填空题 &#xff08;9道&#xff09; 脉宽调制&#xff08;Pulse …

模版语法vscode

这里注意&#xff1a;<template></template>里面只能写一个根标签&#xff0c;其他在嵌套&#xff1a; <script > export default {data(){return{tthtml:"<a hrefhttps://itbaizhan.com>百战程序员</a>"}} } </script><tem…

洛谷B3637 最长上升子序

B3637 最长上升子序列 - 洛谷 代码区&#xff1a; #include<bits/stdc.h>using namespace std;int main(){int n;cin >> n;int arry[n],dp[n];for(int i0;i<n;i){cin >>arry[i];dp[i]1;}/*在 i 之前可能存在多个 j 满足 arry[j] < arry[i]&#xff0c…

kotlin 知识点 七 泛型的高级特性

对泛型进行实化 泛型实化这个功能对于绝大多数Java 程序员来讲是非常陌生的&#xff0c;因为Java 中完全没有这个概 念。而如果我们想要深刻地理解泛型实化&#xff0c;就要先解释一下Java 的泛型擦除机制才行。 在JDK 1.5之前&#xff0c;Java 是没有泛型功能的&#xff0c;…

Day 49 卡玛笔记

这是基于代码随想录的每日打卡 1143. 最长公共子序列 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变…

重新求职刷题DAY18

1.513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 输入: root [2,1,3] 输出: 1思路&#xff1a; 这…

因子数个数之和

BDAA实验室的保研机试一道题&#xff0c;有时间限制。 1. 求每个数的因子数再求和&#xff1a;超时 2. 思想转换&#xff1a;统计每个数在 1 到 N 中作为因子出现的次数&#xff0c;从而避免对每个数进行因子分解&#xff0c;将时间复杂度优化到O(N)。&#xff08; 没想到 :( …

『obsidian』obsidian接入DeepSeek模型的完整说明

一、插件概览 &#x1f3c6;Copilot For Obsidian 开发者&#xff1a;loganc yang | 第 5 届 Ob 宝石奖 LLM 类冠军 核心功能&#xff1a;内置多模态大语言模型&#xff0c;支持自定义模型扩展&#xff0c;实现笔记智能交互预置模型&#xff1a;Claude、GPT-4、Gemini 系列特…

基于YOLO11深度学习的苹果叶片病害检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

基于 DeepSeek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知

写在前面 博文内容涉及 基于 Deepseek LLM 的本地知识库搭建使用 ollama 部署 Deepseek-R1 LLM知识库能力通过 Ragflow、Dify 、AnythingLLM、Cherry 提供理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我站在人潮中央&#xff0c;思考这日日重复的生活。我突然想&#xff0c…

Redis分布式锁故障处理:当Redis不可用时的应对策略

Redis分布式锁故障处理&#xff1a;当Redis不可用时的应对策略 在分布式系统中&#xff0c;Redis因其高性能和丰富的特性常被用于实现分布式锁。但当加锁过程中Redis服务不可用时&#xff0c;系统将面临严重挑战。本文将深入探讨这一问题&#xff0c;并提供多维度解决方案。 目…