【华为OD技术面试真题 - 技术面】- Java面试题(17)
华为OD面试真题精选
专栏:华为OD面试真题精选
目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录
文章目录
- 华为OD面试真题精选
- 虚拟机分区
- 1. **虚拟磁盘分区**
- 2. **虚拟机的内存分区**
- 3. **CPU分配**
- 4. **虚拟网络分区**
- 5. **存储虚拟化和分区**
- 6. **虚拟机分区管理**
- 7. **常见虚拟化平台的分区管理**
- 内存回收
- 1. **Java内存管理概述**
- 2. **垃圾回收机制概述**
- 3. **Java 垃圾回收的主要算法**
- 4. **Java 垃圾回收的主要区域**
- 5. **常见的垃圾回收器**
- 6. **垃圾回收的调优**
- 分代回收流程
- 分代回收流程
- 1. **内存分代**
- 2. **垃圾回收流程**
- 2.1 **年轻代回收(Minor GC)**
- 2.2 **老年代回收(Major GC 或 Full GC)**
- 2.3 **永久代回收(Full GC)**
- 3. **晋升机制**
- 4. **触发垃圾回收**
- MySQL,索引失效
- 常见的 MySQL 索引失效场景
- 1. **条件中对索引列做了函数或运算**
- 2. **隐式类型转换**
- 3. **在索引列上使用 `!=` 或 `<>`**
- 4. **在索引列上使用 `IS NULL` / `IS NOT NULL`**
- 5. **LIKE 以通配符开头**
- 6. **OR 条件混用索引列和非索引列**
- 7. **范围查询 + 索引列顺序问题**
- 8. **ORDER BY 使用非索引字段**
- 类加载器、类加载过程和类加载机制
- 一、类加载器(ClassLoader)
- 1.1 类加载器的作用
- 1.2 常见的类加载器
- 二、类加载过程(生命周期)
- 2.1 加载(Loading)
- 2.2 验证(Verification)
- 2.3 准备(Preparation)
- 2.4 解析(Resolution)
- 2.5 初始化(Initialization)
- 三、类加载机制
- 3.1 双亲委派模型(Parent Delegation Model)
- 优点:
- 示例流程:
- 四、打破双亲委派(如 SPI)
- 线程池拒绝策略
- 一、线程池任务满的条件
- 二、JDK 提供的 4 种拒绝策略
- 三、自定义拒绝策略
- 四、实际应用建议

虚拟机分区
虚拟机分区是指在虚拟化环境中划分虚拟机的存储和资源,以便更好地管理和隔离不同虚拟机之间的操作和数据。分区可以包括磁盘分区、内存分配、CPU分配等,确保虚拟机之间不会互相干扰,同时可以根据需要分配资源。以下是关于虚拟机分区的一些关键概念和技术。
1. 虚拟磁盘分区
虚拟机的磁盘分区是指在虚拟磁盘中创建多个逻辑分区,类似于物理机上的磁盘分区。虚拟机的磁盘可以分为多个分区,每个分区可以有不同的用途,例如:
- 系统分区:用于存放操作系统。
- 数据分区:用于存放应用程序数据。
- 交换分区:类似于物理机上的交换空间,提供虚拟内存。
在虚拟化平台(如 VMware、VirtualBox 或 Hyper-V)中,虚拟磁盘文件通常是一个大文件,像 .vmdk(VMware)或 .vdi(VirtualBox),它们可以根据需要进行分区。
2. 虚拟机的内存分区
在虚拟化中,每个虚拟机都分配一定的物理内存(RAM)。分区的目的是合理地分配内存资源,避免虚拟机之间的内存冲突。虚拟化平台会将物理内存划分成多个虚拟内存块,并将这些内存块分配给各个虚拟机。操作系统内部的内存管理(如页表、虚拟内存管理)将在虚拟机内进行处理。
3. CPU分配
虚拟化平台提供虚拟CPU(vCPU)来分配给虚拟机。每个虚拟机都可以拥有多个虚拟CPU(例如一个虚拟机可以分配2个vCPU),这些vCPU对应的是物理CPU的核心。CPU分区实际上是将虚拟机需要的CPU资源分配给虚拟机,并确保虚拟机之间的CPU资源不会相互冲突。
4. 虚拟网络分区
虚拟机通常也会连接到虚拟网络中。在虚拟化平台中,可以通过虚拟交换机(Virtual Switch)和网络接口卡(vNIC)来进行虚拟网络的配置与分区。通过虚拟网络分区,可以实现虚拟机之间的网络隔离、网络带宽的限制以及跨虚拟机的网络访问控制。
5. 存储虚拟化和分区
在虚拟化环境中,存储分区常见的方式包括:
- 共享存储:多个虚拟机共享同一存储资源,可以通过网络文件系统(NFS)或 iSCSI 等协议实现。
- 直通存储:将物理存储直接分配给虚拟机进行使用。
- 虚拟磁盘格式:如 VMDK(VMware)、VHD(Hyper-V)、VDI(VirtualBox)等,虚拟机使用这些格式的虚拟磁盘文件进行存储分配。
6. 虚拟机分区管理
虚拟机分区的管理包括:
- 创建与调整分区:可以在虚拟机创建时为其分配硬盘空间和其他资源,或者在虚拟机运行过程中动态调整资源(例如扩展磁盘、增加内存、增加CPU等)。
- 资源监控与限制:虚拟化平台通常提供对虚拟机资源使用的监控工具,管理员可以监控虚拟机的资源使用情况,必要时进行资源限制或调整。
- 备份与恢复:虚拟机的分区可以在备份时一并保存,恢复时可以根据备份的状态进行还原。
7. 常见虚拟化平台的分区管理
不同的虚拟化平台提供不同的管理工具来实现虚拟机分区。
-
VMware:
- VMware vSphere 提供强大的虚拟机资源管理,支持磁盘分区、内存分配、虚拟CPU分配等功能。
- 使用
VMFS(虚拟机文件系统)进行磁盘管理,支持虚拟磁盘的分配和扩展。
-
VirtualBox:
- VirtualBox 支持通过虚拟硬盘(VDI、VHD、VMDK)来进行虚拟机磁盘分区。
- 内存分配和CPU分配可以通过虚拟机的设置界面进行调整。
-
Hyper-V:
- Hyper-V 使用 VHD 或 VHDX 格式的虚拟磁盘来实现磁盘分区,并支持内存和CPU资源的分配。
- Hyper-V 管理器提供了资源分配和调整的图形化界面。
内存回收
在 Java 中,内存回收是通过垃圾回收机制(Garbage Collection, GC)来自动管理内存的。垃圾回收的目的是回收不再被引用的对象所占用的内存,避免内存泄漏,并保持程序的高效性。
1. Java内存管理概述
Java 的内存分为多个区域,每个区域负责不同的内存管理任务。主要的内存区域包括:
- 堆内存(Heap):用于存储创建的对象,垃圾回收器会主要关注堆内存中的对象。
- 栈内存(Stack):用于存储方法的局部变量和调用过程的栈帧。栈内存的管理不需要垃圾回收。
- 方法区(Method Area):存储类信息、常量池、静态变量等,也叫做“永久代”(PermGen)或“元空间”(Metaspace),根据 Java 版本的不同,管理方式有所不同。
- 程序计数器(Program Counter Register):每个线程有一个程序计数器,用来存储当前线程的执行位置,帮助虚拟机执行字节码。
2. 垃圾回收机制概述
Java 使用**自动垃圾回收(GC)**来管理堆内存。垃圾回收的过程包括以下几个步骤:
-
标记(Mark):GC 会首先标记出所有仍然存活的对象。对象存活的标准通常是“被引用”。如果一个对象可以通过链式引用从根对象(如线程栈、静态引用等)访问到,那么它是存活的。
-
清除(Sweep):标记阶段之后,GC 会清除所有没有被标记的对象,释放它们占用的内存空间。
-
压缩(Compact):有些垃圾回收器(如 G1)会对堆中的对象进行压缩,避免出现内存碎片。这样做的目的是将存活的对象移动到堆的一端,方便后续的内存分配。
3. Java 垃圾回收的主要算法
Java 中的垃圾回收器有多种算法,常见的包括:
-
标记-清除算法(Mark and Sweep):最基础的算法,标记所有活跃对象,清除所有未标记的对象。缺点是清除后会产生内存碎片。
-
复制算法(Copying):将内存分为两部分,每次只使用其中一部分。垃
相关文章:
【华为OD技术面试真题 - 技术面】- Java面试题(17)
华为OD面试真题精选 专栏:华为OD面试真题精选 目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录 文章目录 华为OD面试真题精选虚拟机分区1. **虚拟磁盘分区**2. **虚拟机的内存分区**3. **CPU分配**4. **虚拟网络分区**5. **存储虚拟化和分区**6. **虚拟机分区管理**…...
#Linux内存管理# 在32bit Linux中,内核空间的线性映射的虚拟地址和物理地址是如何换算的?
在32位Linux系统中,内核空间的线性映射(也称为直接映射或低端内存映射)采用固定的偏移量进行虚拟地址和物理地址的换算。以下是详细的转换规则及背景知识: 1. 32位Linux内存布局 用户空间:虚拟地址 0x00000000 到 0x…...
006贪心——算法备赛
跨步问题 跳跃游戏|| 问题描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j &…...
对 Python Websockets 库全方位详解
一、WebSocket 简介 WebSocket 是一种基于 TCP 的协议,支持全双工通信(服务器和客户端可以同时发送消息),适用于实时性要求高的场景(如聊天、实时数据监控、在线游戏等)。与 HTTP 不同,WebSock…...
pytorch中Dropout
Dropout 是一种常用的正则化技术,用于防止神经网络过拟合。PyTorch 提供了 nn.Dropout 层来实现这一功能。 基本用法 torch.nn.Dropout(p0.5, inplaceFalse) 参数说明: p (float): 每个元素被置为0的概率(默认0.5) inplace (b…...
【玩泰山派】2、制作buildroot镜像,并烧录
文章目录 前言制作buildroot镜像过程搭建环境(docker版)下载泰山派开发的sdk利用制作的镜像和下载的sdk去启动开发docker容器编译buildroot镜像 参考 前言 泰山派官方提供了不少现成的镜像 但是都买了泰山派了,肯定是想自己编译折腾下&…...
初阶数据结构--树
1. 树的概念与结构 树是⼀种⾮线性的数据结构,它是由 n(n>0) 个有限结点组成⼀个具有层次关系的集合。把它叫做 树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。 有⼀个特殊的结点,称…...
client-go如何监听自定义资源
如何使用 client-go 监听自定义资源 在 Kubernetes 中使用 client-go 监听自定义资源(Custom Resource,简称 CR)需要借助 Dynamic Client 或 Custom Informer,因为 client-go 的标准 Clientset 只支持内置资源(如 Pod…...
安装gpu版本的dgl
1.先去网址,找到对应版本的dgl,然后下载到本地。 dgl-whl下载地址 我的是python 3.8 ,cuda 11.6. windows 2.在虚拟环境里 输入 pip install E:\dgl-1.0.2cu116-cp38-cp38-win_amd64.whl (因为我下载到E盘里了) 这样GPU版本的d…...
AI比人脑更强,因为被植入思维模型【43】蝴蝶效应思维模型
giszz的理解:蝴蝶效应我们都熟知,就是说一个微小的变化,能带动整个系统甚至系统的空间和时间的远端,产生巨大的链式反应。我学习后的启迪,简单的说,就是不要忽视任何微小的问题,更多时候&#x…...
Libevent UDP开发指南
UDP 与 TCP 的核心区别 无连接:不需要建立/维护连接 不可靠:不保证数据包顺序和到达 高效:头部开销小,没有连接管理负担 支持广播/多播:可以向多个目标同时发送数据 一、基础UDP服务器实现 1. 创建 UDP 套接字 #include <event2/event.h> #include <event2/lis…...
Android View事件分发机制深度解析
在Android面试中,关于View事件分发机制的考察往往不仅限于基础流程,更关注底层原理、性能优化和实际应用场景。以下是针对面试的全面回答策略: 一、基础回答框架 核心三要素: 传递流程 "事件分发遵循Activity → Window →…...
如何在 GitHub 上开源一个小项目:从创建到长期维护的完整指南
如何在 GitHub 上开源一个小项目:从创建到长期维护的完整指南 适用于 个人开发者、团队合作、企业开源,涵盖 Git 基础、GitHub 配置、最佳实践、社区互动、自动化 CI/CD 及长期维护策略。 📌 1. 注册 GitHub 账户 如果你还没有 GitHub 账户&…...
autoconf 笔记250404
autoconf autoconf 是 Linux 系统中控制 IPv6 无状态地址自动配置(SLAAC) 的关键参数,位于 /proc/sys/net/ipv6/conf/<接口>/ 目录下。它决定接口是否根据接收到的 路由通告(Router Advertisement, RA) 自动生成…...
5天速成ai agent智能体camel-ai之第1天:camel-ai安装和智能体交流消息讲解(附源码,零基础可学习运行)
嗨,朋友们!👋 是不是感觉AI浪潮铺天盖地,身边的人都在谈论AI Agent、大模型,而你看着那些密密麻麻的代码,感觉像在读天书?🤯 别焦虑!你不是一个人。很多人都想抓住AI的风…...
FPGA——FPGA状态机实现流水灯
一、引言 在FPGA开发中,状态机是一种重要的设计工具,用于处理具有时间顺序的事件。本文将详细介绍如何使用状态机实现一个LED流水灯的效果。 二、状态机概述 状态机(FSM)是一种行为模型,用于表示系统在不同状态下的…...
晶晨S905-S905L-S905LB_S905M2通刷_安卓6.0.1_16S极速开机_线刷固件包
晶晨S905-S905L-S905LB_S905M2通刷_安卓6.0.1_16S极速开机_线刷固件包 线刷方法:(新手参考借鉴一下) 刷机工具版本请用2.2.0以上,导入固件后,刷机工具右侧两个擦除打勾,然后点开始。插上刷机神器…...
构建第一个ArkTS应用:Hello World之旅
# 构建第一个ArkTS应用:Hello World之旅 在鸿蒙应用开发的领域中,ArkTS语言为我们提供了强大而便捷的开发方式。今天,就让我们一起踏上构建第一个ArkTS应用——Hello World的奇妙旅程。 ## 一、创建ArkTS工程 1. 首先,我们要使用…...
第十五届单片机模拟考试III
题目 题目不长 ,功能也不难,一道水题 按键功能 S4界面切换,S5 功能切换,在不同界面转换不同的功能,定义两个标志位记录即可。 S9复位,回到初始状态,记得界面也得回到初始的信号界面࿰…...
测试:正交法设计测试用例
目录 一、什么是正交法 二、利用正交表设计测试用例 正交法设计测试用例的步骤 一、什么是正交法 正交法的目的是为了减少测试用例的数量,让尽可能少的用例覆盖两两组合。认识正交表。 最简单的正交表是L4(2^3),含意如下: “L”代表正…...
生成 SSH Key 并配置 GitHub/GitLab 详细教程
🔑 生成 SSH Key 并配置 GitHub/GitLab 详细教程 🟢 第 1 步:检查是否已有 SSH Key 在 Git Bash (Windows)、终端 (Linux/macOS) 运行以下命令: ls -al ~/.ssh🔹 可能的输出: 如果已有 SSH Key…...
[ctfshow web入门] web5
前置知识 引用博客:phps的利用 当服务器配置了 .phps 文件类型时,访问 .phps 文件会以语法高亮的形式直接显示 PHP 源代码,而不是执行它。.phps被作为辅助开发者的一种功能,开发者可以通过网站上访问xxx.phps直接获取高亮源代码 …...
Qt基本框架(2)
本篇主要介绍如何设置窗口,以及在窗口中添加按钮 本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1. Qt简单框架 2. 通过QMainWindow实现简单界面 QMainWindow是构建主窗口应用的核心类,通过合理设计…...
基于javaweb的SpringBoot图片管理系统图片相册系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
用HTML.CSS.JavaScript实现一个贪吃蛇小游戏
目录 一、引言二、实现思路1. HTML 结构2. CSS 样式3. JavaScript 逻辑 三、代码实现四、效果展示 一、引言 贪吃蛇是一款经典的小游戏,曾经风靡一时。今天,我们将使用 HTML、CSS 和 JavaScript 来实现一个简单的贪吃蛇小游戏。通过这个项目,…...
[特殊字符] Pandas 常用操作对比:Python 运算符 vs Pandas 函数
在 Pandas 中,许多操作可以直接使用 Python 的比较运算符(如 、!、>、< 等),而不需要调用 Pandas 的专门函数(如 eq()、ne()、gt() 等)。这些运算符在 Pandas 中已经被重载,代码更简洁。以…...
Java 实现插入排序:[通俗易懂的排序算法系列之三]
引言 大家好!欢迎继续关注我的排序算法系列。今天,我们要学习的是另一种非常基础且重要的排序算法——插入排序 (Insertion Sort)。 插入排序的思路非常贴近我们日常整理扑克牌的方式,理解起来相对自然。虽然它在最坏情况下的效率不高,但在某些特定场景下,它的表现甚至优…...
使用MATIO库写入MATLAB结构体(struct)数据的示例程序
使用MATIO库写入MATLAB结构体(struct)数据的示例程序 MATIO是一个用于读写MATLAB数据文件(.mat)的开源C库。下面是一个完整的示例程序,展示如何使用MATIO库创建一个包含结构体数据的MAT文件。 示例程序 #include <stdio.h> #include <stdlib.h> #inc…...
JVM——模型分析、回收机制
方法区:存储已被虚拟机加载的类元数据信息(元空间) 堆:存放对象实例,几乎所有的对象实例都在这里分配内存 虚拟机栈:虚拟机栈描述的是|ava方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局…...
7. 记忆(Memory)机制:让AI拥有“短期记忆”与“长期记忆”
引言:当AI学会"记住你" 2025年某银行智能客服因无法记住用户身份,每次对话都要求重复验证,引发大量投诉。引入LangChain 记忆系统后,客户满意度提升62%。本文将基于MemorySaver与FAISS本地存储,教你构建符合…...
