当前位置: 首页 > news >正文

面试 Java 基础八股文十问十答第二十九期

面试 Java 基础八股文十问十答第二十九期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)类加载过程

类加载是 Java 虚拟机(JVM)在运行 Java 程序时将类的字节码加载到内存中并转换为 Java 类的过程。这个过程分为以下几个步骤:

  • 加载(Loading): 加载是指查找并加载类的字节码文件。类加载器会根据类的全限定名(Fully Qualified Name)来定位类的字节码文件,并将其加载到内存中。
  • 链接(Linking): 链接阶段又分为三个子阶段:
    • 验证(Verification): 验证阶段确保加载的字节码是合法、符合规范的,并且不会危害虚拟机的安全。
    • 准备(Preparation): 准备阶段为类的静态变量分配内存,并设置默认初始值。
    • 解析(Resolution): 解析阶段将类、方法、字段的符号引用解析为直接引用。
  • 初始化(Initialization): 初始化阶段是类加载过程的最后一步,在此阶段,会执行类的初始化代码,包括对静态变量的赋值和静态代码块的执行。

2)双亲委派

双亲委派模型是 Java 类加载器的工作原理之一,其基本思想是当一个类加载器收到类加载请求时,先委托给父类加载器加载,只有在父类加载器无法加载该类时,才由当前类加载器加载。这样做的好处是保证类的唯一性,防止同一个类被多个类加载器加载,导致类型不一致的问题,同时也能保证 Java 核心类库的安全性和稳定性。

3)BigDecimal

BigDecimal 是 Java 中用于表示任意精度的十进制数的类,它可以解决浮点数计算精度丢失的问题。在金融、科学计算等领域,对数字精度要求较高的场景中,常常会使用 BigDecimal 来进行精确计算。与基本数据类型的浮点数相比,BigDecimal 可以表示任意大小的数值,并提供了丰富的算术运算方法,如加减乘除、取整、取余等。由于 BigDecimal 是不可变的,因此它的操作不会改变原始值,而是返回一个新的 BigDecimal 对象。

4)new String("xiaobaitiao") 一共创建了几个对象?

new String("xiaobaitiao") 会创建两个对象:

  • 一个对象:由字符串常量池中的 "xiaobaitiao" 字符串常量创建。
  • 一个对象:由 new String("xiaobaitiao") 创建,存放在堆内存中。

5)finalfinallyfinalize 各自有什么区别?

  • final final 是一个关键字,用于修饰类、方法和变量。对于类,final 表示该类不能被继承;对于方法,final 表示该方法不能被重写;对于变量,final 表示该变量的值只能被赋值一次,即为常量。
  • finally finally 是异常处理中的一个关键字,用于定义在 try-catch 语句块结束之后总是会被执行的代码块,无论是否发生异常。
  • finalize finalize 是 Object 类中的一个方法,用于在对象被垃圾回收之前执行清理操作。但是,由于它的执行时机不确定性,不建议在实际开发中过多依赖该方法进行资源释放。

6)为什么平时写代码的时候会遇到乱码?

乱码通常是由于字符编码不一致导致的。常见的情况包括:

  • 源代码编码和文件编码不一致: 源代码以某种编码(如 UTF-8)编写,但文件的实际编码与之不符(如 ANSI),导致读取时出现乱码。
  • 数据传输过程中编码不一致: 在网络传输或文件读写过程中,如果发送端和接收端使用了不同的字符编码,就可能导致乱码。
  • 字符编码设置错误: 在程序中使用了错误的字符编码,或者未正确设置字符编码,也会引发乱码问题。

解决乱码问题通常需要注意以下几点:

  • 统一使用 UTF-8 编码。
  • 在程序中明确指定字符编码。
  • 在读取和写入文件时,指定正确的字符编码。
  • 在网络通信中,使用统一的字符编码进行数据传输。

7)Java 的集合类简介

Java 的集合类是用于存储和操作对象的数据结构。它们提供了一种更加灵活、高效的方式来管理数据集合,相比传统的数组,集合类具有更多的功能和操作。Java 中常见的集合类包括 List、Set、Map 等,它们都位于 java.util 包中。

  • List: 允许存储重复元素,并且有序。常见的实现类有 ArrayList、LinkedList、Vector 等。
  • Set: 不允许存储重复元素,通常用于存储不重复的对象集合。常见的实现类有 HashSet、LinkedHashSet、TreeSet 等。
  • Map: 存储键值对,键是唯一的,值可以重复。常见的实现类有 HashMap、LinkedHashMap、TreeMap 等。

8)数组和链表的区别

  • 数组(Array): 数组是一种线性数据结构,元素在内存中是连续存储的,具有固定的大小。访问数组中的元素是通过索引来进行的,可以快速访问任何位置的元素,但插入和删除操作需要移动大量元素。
  • 链表(Linked List): 链表是一种线性数据结构,元素在内存中不一定是连续存储的,每个元素都包含一个指向下一个元素的引用(或指针)。链表可以方便地进行插入和删除操作,但访问元素时需要从头节点开始遍历,效率较低。

9)Java 的链表实现类

Java 中常见的链表实现类有:

  • LinkedList: Java 标准库提供的双向链表实现类,实现了 List 和 Deque 接口,可以用作队列、栈等数据结构。

10)ArryaList、LinkedList、Vector 的区别

  • ArrayList: 基于数组实现的动态数组,支持随机访问,插入和删除操作的时间复杂度为 O(n),因为需要移动元素。不是线程安全的。
  • LinkedList: 基于双向链表实现的列表,插入和删除操作的时间复杂度为 O(1),但访问操作的效率较低,需要遍历链表。不是线程安全的。
  • Vector: 与 ArrayList 类似,但是 Vector 是线程安全的,所有的方法都被 synchronized 修饰,因此在多线程环境下使用时比较安全,但性能相对较低。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端总计已经 1300+ Star,2 W+ 访问!

⭐点赞⭐收藏⭐不迷路!⭐

相关文章:

面试 Java 基础八股文十问十答第二十九期

面试 Java 基础八股文十问十答第二十九期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)类加载过程 类加载…...

454.四数相加||

题目: 454. 四数相加 II - 力扣(LeetCode) 思路: 考虑到时间复杂度问题,本题最重要的是要将四个数组划分成两个部分,每个部分(n^2)的时间复杂度,选取数据结构时,考虑到既要存储元素(key),又要有元素次数…...

禅道源码部署

文章目录 禅道部署1.环境部署安装httpd和mariadb安装php 2.安装禅道首先进行httpd服务的配置安装禅道 禅道部署 1.环境部署 安装lamp环境 组件版本httpdyum安装mariadbyum安装phpphp-7.4.33 选择一个php版本就行,我们这里选择的是7.4.33 安装httpd和mariadb [r…...

️ Vulnhuntr:利用大型语言模型(LLM)进行零样本漏洞发现的工具

在网络安全领域,漏洞的发现和修复是保护系统安全的关键。今天,我要向大家介绍一款创新的工具——Vulnhuntr,这是一款利用大型语言模型(LLM)进行零样本漏洞发现的工具,能够自动分析代码,检测远程…...

【Android】多渠道打包配置

目录 简介打包配置签名配置渠道配置配置打包出来的App名称正式包与测试包配置 打包方式开发工具打包命令行打包 优缺点 简介 多渠道打包 是指在打包一个 Android 应用时,一次编译生成多个 APK 文件,每个 APK 文件针对一个特定的渠道。不同的渠道可能代表…...

Spring Boot Configuration和AutoConfiguration加载逻辑和加载顺序调整

在spring中, AutoConfiguration也是一个种Configuration,只是AutoConfiguration是不能使用proxy的。 而且spring对于两者的加载顺序也不是一视同仁,是有顺序的。spring会先加载@SpringBootApplication可达的且标注了@Configuration的类,这个过程会将@AutoConfiguration标注…...

点餐系统需求分析说明书(软件工程分析报告JAVA)

目录 1 引言 4 1.1 编写目的 4 1.2 项目背景 4 1.3 定义 4 1.4 预期的读者 5 1.5 参考资料 5 2 任务概述 5 2.1 目标 5 2.2 运行环境 5 2.3 条件与限制 6 3 数据描述 6 3.1 静态数据 6 3.2 动态数据 6 3.3 数据库介绍 6 3.4 对象模型 6 3.5 数据采集 7 4 动态模型 7 4.1 脚本 …...

Python条形图 | 指标(特征)重要性图的绘制

在数据科学和机器学习的工作流程中,特征选择是一个关键步骤。通过评估每个特征对模型预测能力的影响,我们可以选择最有意义的特征(指标),从而提高模型的性能并减少过拟合。本文将介绍如何使用 Python 的 Seaborn 和 Ma…...

危险物品图像分割系统:一键训练

危险物品图像分割系统源码&数据集分享 [yolov8-seg-GFPN&yolov8-seg-CSwinTransformer等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global…...

城市景色视频素材下载好去处

在制作短视频、Vlog 或商业宣传片时,城市景色视频素材能为作品增添现代感与活力。繁华都市、流光溢彩的夜景、清晨街道等都是展现城市魅力的好素材。那么城市景色视频素材去哪里下载呢? 蛙学网 是专为短视频创作者打造的素材平台,城市景色素材…...

基于SSM美容院管理系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,套餐类型管理,美容预约管理,生日提醒管理,管理员管理,系统管理 员工账号功能包括:系统首页,个人中心&#…...

Threejs 实现3D 地图(04)3d 地图的柱状图和文字显示

3d 地图的数据展示 代码仓库: King/threejs-3d-map 核心代码: function createText(feature, level, font) {if (feature.properties.name) {const [x_XYZ, y_XYZ] handleProject(feature.properties.center)// 缺点:首次渲染很慢 无法使…...

Oracle 第2章:安装与配置Oracle

安装与配置Oracle数据库是一项复杂但有序的过程。以下是对Oracle数据库安装与配置的概述,包括系统需求与硬件推荐,以及详细的安装步骤。 系统需求与硬件推荐 系统需求 在安装Oracle数据库之前,需要确保目标系统满足Oracle官方规定的最低要…...

动态规划 —— 斐波那契数列模型-解码方法

1. 解码方法 题目链接: 91. 解码方法 - 力扣(LeetCode)https://leetcode.cn/problems/decode-ways/description/ 2. 题目解析 1. 对字母A - Z进行编码1-26 2. 11106可以解码为1-1-10-6或者11-10-6, 但是11-1-06不能解码 3. 0n不能解码 4. …...

PPT / Powerpoint中利用LaTeX输入公式

PPT / Powerpoint中利用LaTeX输入公式_ppt插入latex公式-CSDN博客文章浏览阅读2.8w次,点赞42次,收藏75次。新版的Word(Office 2016后?)是支持LaTeX公式输入的,但是Powerpoint并不支持。下面介绍如何利用。_…...

C++ 模板专题 - 类型擦除

一:概述 C 中的类型擦除(Type Erasure)是一种技术,允许你在不暴露具体类型信息的情况下,通过统一的接口处理不同的类型。这种技术常用于实现泛型编程,特别是在需要支持多种不同类型的情况下,如容…...

RuoYi-Vue项目 重点代码讲解

1. RuoYi-Vue项目 常规说明: ruoyi-admin:后台接口开发(主要存放控制层相关代码)ruoyi-common:通用工具ruoyi-framework:框架核心ruoyi-generator:代码生成(可以移除)r…...

pandas习题 024:用字典构造 DataFrame

编码题)用 Python 的字典构造一个 DataFrame,它有 a、b 两列,三行数据。其中 a 列值为 1、4、7,b 列值为 2、5、8,索引为 x、y、z。 即: ‘’’ a b x 1 2 y 4 5 z 7 8 ‘’’ import pandas as pddf = pd.DataFrame({a: [1, 4,...

如何在Node.js中执行解压缩文件操作

一、解压文件 1.安装依赖: 安装adm-zip依赖包:npm install adm-zip --save 安装iconv-lite依赖包:npm install iconv-lite --save 解压前的file文件夹结构: update-1.0.2.zip压缩包内容: 2.在depresssFile.js文件&…...

梦熊 CSP-S模拟赛 T3 youyou 的序列 II

原题链接 题目大意 给定一个长度为 n 的非负整数序列 a ,初始时所有数字均被标记为蓝色,youyou 和 yy 轮流对序列 a 进行操作,由 youyou 开始。 • 如果当前是 youyou 的回合,那么他可以至多选择连续的 c 1 个数…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

基于 TAPD 进行项目管理

起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...