就只说 3 个 Java 面试题

在面试时,即使是经验丰富的开发人员,也可能会发现这是一些很棘手的问题:

1、Java中“transient”关键字的用途是什么?如何才能实现这一目标?

在 Java 中,“transient”关键字用于指示类的特定字段不应包含在对象的序列化形式中。

这意味着当对象被序列化时,其状态将转换为可以写入文件或通过网络发送的字节序列。

通过将字段标记为瞬态,您就告诉 Java 在序列化对象时不应包含该字段的值。

您可能想要使用“transient”关键字的原因有多种。例如,您可能有一个包含临时值的字段,在序列化对象时不需要保留该临时值。或者,可能有一个字段包含敏感数据,出于安全原因,这些数据不应包含在对象的序列化形式中。

public class MyClass implements Serializable {  private int myInt;  private transient String myTransientString;  // 构造器、getters & setters// 其他方法……  
}

在这个例子中,字段“myTransientString”被标记为transient,这意味着当MyClass的实例被序列化时,它的值将不会被包含在内。

2、你能解释一下“继承”和“组合”有何不同吗?举例说明。

继承和组合是在面向对象编程中创建类之间关系的两种基本方法。这两种方法都支持代码重用和抽象,但它们的实现以及在类之间创建的关系类型有所不同。

以下是每种方法的简要概述:

  • 继承:这是一种通过从现有类派生属性和特征来创建新类的机制。新类(称为子类或派生类)继承现有类(称为超类或基类)的方法和字段。子类还可以重写超类的方法以提供自己的实现。继承在超类和子类之间创建了“is-a”关系。
  • 组合:它是一种机制,其中一个类包含另一个类的一个或多个实例作为其字段。所包含的类称为组件或零件类。包含组件类的类称为容器或整个类。该组合在容器类和组件类之间创建了“has-a”关系。

image.png

在图中,我们有两个类:“Vehicle”和“Engine”。 Vehicle 类可以使用继承或组合来合并 Engine 类。

  • 继承示例:Vehicle类扩展了Engine类,这意味着它继承了Engine类的所有字段和方法。这会在 Vehicle 和 Engine 类之间创建“is-a”关系,其中 Vehicle “是一种”类型的 Engine。
public class Vehicle extends Engine {  }
  • 组合示例:Vehicle 类包含 Engine 类的一个实例作为其字段。这在车辆和引擎类之间创建了“有一个”关系,其中车辆“有一个”引擎。
public class Vehicle {  private Engine engine;  public Vehicle(Engine engine) {  this.engine = engine;  
}  
...
}

一般来说,当类之间存在明确的“is-a”关系,并且子类可以被视为超类的专门版本时,继承更合适。当类之间存在“has-a”关系时,以及当容器类需要使用或管理另一个类的一个或多个实例时,组合更为合适。

3、你能解释一下Java中HashSet和TreeSet的区别吗?另外,解释一下数据是如何在内部存储的。

image.png

假设我们有以下整数数据:{7, 3, 9, 4, 1, 8}。

  • 对于HashSet,数据内部存储在哈希表中。哈希表使用每个元素的 hashCode() 方法来确定应存储该元素的唯一索引。

在这里插入图片描述

在上面的示例图中,哈希表有八个桶,标记为“51”到“56”。每个存储桶都是一个集合,其中包含具有映射到该存储桶的哈希码的元素。例如,索引“53”处的集合包含元素 3 和 4,它们的哈希码都是 [197]。索引“56”处的集合包含元素 7、8 和 9,它们都有哈希码 [195]。

  • 对于TreeSet,数据内部存储在红黑树中。树根据元素的自然顺序或传递给 TreeSet 构造函数的自定义比较器定义的顺序进行排序。以下是如何将数据存储在红黑树中的示例:

在这里插入图片描述

在这个例子中,红黑树有六个节点,每个节点包含元素{1,3,4,7,8,9}之一。节点颜色为红色或黑色,红色节点表示发生了违反红黑树属性的情况。元素在树中按排序顺序存储,较小的元素位于左侧,较大的元素位于右侧。例如,元素1是最小的元素,存储在最左边的叶子节点,而元素9是最大的元素,存储在最右边的叶子节点。

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

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

相关文章

使用RKDevTool将update.img完整镜像进行解包,得到单独分区的镜像

(1)使用开发工具高级功能的解包 导入xx.img,然后点击解包(2)在Output/Android/Image得到想要的image

Linux关于memory cgroup的几个要点

概述 本文讲述memory cgroup比较容易误解的一些逻辑,如果不太经常使用和解决问题的话,对于memory cgroup的认知会比较浅显:cgroup memory用来限制进程的内存使用,但是我们进一步想如下的问题: 进程的内存可以分很多类…

Vue的路由使用,Node.js下载安装及环境配置教程 (超级详细)

前言&#xff1a; 今天我们来讲解关于Vue的路由使用&#xff0c;Node.js下载安装及环境配置教程 一&#xff0c;Vue的路由使用 首先我们Vue的路由使用&#xff0c;必须要导入官方的依赖的。 BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务https://www.bootcdn.cn/ <…

IP协议的相关特性

IP协议相关特性 报头结构 报文结构解释 4位版本号:指定IP协议的版本,对于IPV4来说,就是四位. 4位首部长度:IP头部的长度是多少个32bit,也就是Length4的字节数,4bit表示的最大的数是15,因此IP头部最大长度是60. 8位服务类型:3位优先权字段&#xff08;已经弃用&#xff09;&…

安全生产知识竞赛活动小程序界面分享

安全生产知识竞赛活动小程序界面分享

linux内核分析:进程通讯方式

信号 一旦有信号产生,我们就有下面这几种,用户进程对信号的处理方式。 1.执行默认操作。Linux 对每种信号都规定了默认操作,例如,上面列表中的 Term,就是终止进程的意思。Core 的意思是 Core Dump,也即终止进程后,通过 Core Dump 将当前进程的运行状态保存在文件里面…

Python画图系列——折线图

好看的折线图 import numpy as np import matplotlib.pyplot as plt# 生成随机数据 # np.random.seed(42) # 设置随机种子以确保可重复性 sample_numbers np.arange(1, 21) # 生成1到20的样本编号random_data np.random.rand(20) # 生成20个随机数&#xff0c;范围在0到1之…

淘宝商品详情数据采集

淘宝商品详情数据采集的方法如下&#xff1a; 确定采集目标&#xff1a;明确要采集的商品信息&#xff0c;如商品标题、价格、销量、评论、图片等。选择采集工具&#xff1a;可以选择Scrapy框架、Java的WebMagic框架等。编写爬虫程序&#xff1a;进入目标文件夹&#xff0c;输…

无涯教程-JavaScript - POWER函数

描述 POWER函数返回加到幂的数字的输出。 语法 POWER (number, power)争论 Argument描述Required/OptionalNumber 基数。 它可以是任何实数。 RequiredPowerThe exponent to which the base number is raised.Required Notes 可以使用" ^"运算符代替POWER来指示…

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

二、搭建Java环境

搭建Java环境 搭建Java环境1.1.下载JDK1.2.在Win10下配置JDK环境 —————————————————————————————————————————————————— ———————————————————————————————————————————————…

python 冒泡排序以及鸡尾酒排序

冒泡排序 就是一次循环&#xff0c;两两数据比较&#xff0c;将最大值放入末尾&#xff0c;此时找到了最大值&#xff0c;然后进行二次三次等循环&#xff0c;直到排序结束 冒泡排序代码 def bubble_sort_v1(array[]):for i in range(len(array)-1):for j in range(len(arra…

【CANoe/CANalyzer脚本】通过CAPL发送NM帧报文测试网络管理

优质博文推荐阅读&#xff08;单击下方链接&#xff0c;即可跳转&#xff09;&#xff1a; Vector工具链 CAN Matrix DBC CAN Matrix Arxml 一、在CANoe/CANalyzer中创建Program Node 在Measurement Setup中&#xff0c;创建Program Node&#xff1b; 接着导入下面的Demo:N…

D数树,牛客小白月赛78,思维

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 “开导&#xff01;” 众所周知&#…

echarts 轴文字内容太长导致显示不全解决方案

情况&#xff1a;Y轴内容是文字&#xff0c;内容太长可能会系那是不全。调整grid会导致短数据前的留白过于多。 解决方案&#xff1a; 方法一&#xff1a; 首先可以配置grid自适应 &#xff0c; containLabel 属性设置true &#xff08;这常用于『防止标签溢出』的场景&…

树、二叉树、森林的相互转化

目录 一、树>二叉树 二、二叉树>树 三、二叉树>森林 四、森林>二叉树 一、树>二叉树 ①兄弟相连 ②断开每个节点除与左孩子之外的连线 ③调整树为二叉树 二、二叉树>树 ①如果一个节点有父节点&#xff0c;将其右孩子与父节点相连&#xff0c;右孩子…

3D模型格式转换工具HOOPS Exchange协助Epic Games实现CAD数据轻松导入虚幻引擎

一、面临的挑战 Epic Games最为人所知的身份可能是广受欢迎的在线视频游戏Fortnite的开发商&#xff0c;但它也是虚幻引擎背后的团队&#xff0c;虚幻引擎是一种实时3D创作工具&#xff0c;为世界领先的游戏提供动力&#xff0c;并且也被电影电视、建筑、汽车、制造、模拟等领…

Python计算机二级知识点整理

1.当一个进程在运行过程中释放了系统资源后要调用 唤醒进程原语 唤醒进程原语是把进程从等待队列里移出到就绪队列并设置进程为就绪状态&#xff0c;当一个进程在运行过程中释放了系统资源后进入就绪状态&#xff0c;调用唤醒进程原语。 2. 3. 4.在希尔排序法中&#x…

windows常见的命令行操作

1.查看网络 ipconfig 2.根据任务id关闭进程 1.模糊搜索服务 tasklist | findstr QQ 2.根据模糊搜索结果&#xff0c;获取对应的pid taskkill /F /PID 5128 其他常见命令 若不清楚参数&#xff0c;使用&#xff08;命令 /?&#xff09;即可查看help

Day 02 python学习笔记

python运算符 算术运算符 混合运算的优先级&#xff1a; () > ** * / // % 高于 - 赋值运算符 - * / ** a 1 > a 3 > a a 3 其余同理 注意&#xff1a; python没有自增自减 &#xff08;a a a-- --a&#xff0…