【华为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):将内存分为两部分,每次只使用其中一部分。垃

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

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

相关文章

Linux | I.MX6ULL内核及文件系统源码结构(7)

01 类型 描述 备注 ARM 交叉编译器 版本&#xff1a;4.9.4 提供软件工具 Uboot 版本&#xff1a;2016.03 提供源码 支持LCD显示&#xff1b;支持网口&#xff1b; 支持 EMMC,NAND FLASH&#xff1b; 支持环境变量修改保存 Linux 内核 版本&#xff1a;4.1.15 提供…

0基础入门scrapy 框架,获取豆瓣top250存入mysql

一、基础教程 创建项目命令 scrapy startproject mySpider --项目名称 创建爬虫文件 scrapy genspider itcast "itcast.cn" --自动生成 itcast.py 文件 爬虫名称 爬虫网址 运行爬虫 scrapy crawl baidu(爬虫名&#xff09; 使用终端运行太麻烦了&#xff0c;而且…

鸿蒙NEXT小游戏开发:猜小球

1. 引言 “猜小球”是一个经典的益智游戏&#xff0c;通常由一名表演者和多名参与者共同完成。表演者会将一个小球放在一个杯子下面&#xff0c;然后将三个杯子快速地交换位置&#xff0c;参与者则需要猜出最终哪个杯子下面有小球。本文将介绍如何使用HarmonyOS NEXT技术&…

网络购物谨慎使用手机免密支付功能

在数字经济蓬勃发展的当下&#xff0c;“免密支付”成为许多人消费时的首选支付方式。 “免密支付”的存在有其合理性。在快节奏的现代生活中&#xff0c;时间愈发珍贵&#xff0c;每节省一秒都可能带来更高的效率。以日常通勤为例&#xff0c;上班族乘坐交通工具时&#xff0c…

记录 | Android getWindow().getDecorView().setSystemUiVisibility(...)设置状态栏属性

纯纯的一边开发一边学习&#xff0c;是小白是菜鸟&#xff0c;单纯的记录和学习&#xff0c;大神勿喷&#xff0c;理解有错望指正&#xff5e; getWindow().getDecorView().setSystemUiVisibility(…) 该方法用于控制系统 UI&#xff08;如状态栏、导航栏&#xff09;的可见性…

java虚拟机---JVM

JVM JVM&#xff0c;也就是 Java 虚拟机&#xff0c;它最主要的作用就是对编译后的 Java 字节码文件逐行解释&#xff0c;翻译成机器码指令&#xff0c;并交给对应的操作系统去执行。 JVM 的其他特性有&#xff1a; JVM 可以自动管理内存&#xff0c;通过垃圾回收器回收不再…

VectorBT:使用PyTorch+LSTM训练和回测股票模型 进阶四

VectorBT&#xff1a;使用PyTorchLSTM训练和回测股票模型 进阶四 本方案融合 LSTM 时序预测与动态风险控制。系统采用混合架构&#xff0c;离线训练构建多尺度特征工程和双均线策略&#xff0c;结合在线增量更新持续优化模型。技术要点包括三层特征筛选、波动率动态仓位管理、混…

前端中rem,vh,vw

1. rem&#xff08;Root EM&#xff09; 参照对象 基准&#xff1a;相对于 根元素&#xff08;<html>&#xff09;的 font-size 计算。 默认情况下&#xff0c;浏览器的根 font-size 为 16px&#xff08;即 1rem 16px&#xff09;&#xff0c;但可通过 CSS 修改&#…

详解 MySQL 常见的存储引擎及它们之间的区别

MySQL 支持多种存储引擎&#xff0c;每种引擎针对不同的应用场景提供了特定的特性和优化。下面是几种常见的存储引擎以及它们之间的主要区别&#xff1a; 常见存储引擎 1. InnoDB&#xff08;重点&#xff09; 事务支持&#xff1a; 完全支持 ACID 事务&#xff0c;确保数据一…

html+css+js 实现一个贪吃蛇小游戏

目录 游戏简介 游戏功能与特点 如何玩转贪吃蛇 游戏设计与实现 HTML结构 JavaScript核心实现 代码结构&#xff1a; 效果 关于“其他游戏” 游戏简介 贪吃蛇是一款经典的单人小游戏&#xff0c;玩家通过控制蛇的移动&#xff0c;吃掉食物来增加长度&#xff0c;避免撞…

GLSL(OpenGL 着色器语言)基础语法

GLSL&#xff08;OpenGL 着色器语言&#xff09;基础语法 GLSL&#xff08;OpenGL Shading Language&#xff09;是 OpenGL 计算着色器的语言&#xff0c;语法类似于 C 语言&#xff0c;但提供了针对 GPU 的特殊功能&#xff0c;如向量运算和矩阵运算。 着色器的开头总是要声明…

ngx_http_core_merge_srv_conf

定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) {ngx_http_core_srv_conf_t *prev parent;ngx_http_core_srv_conf_t *conf child;ngx_str_t name;ngx_http_server_name_t…

uni-app:firstUI框架的选择器Select改造,添加一个搜索的插槽

<fui-select :show"showSiteType" :options"siteTypeList" textKey"dict_label" title"请选择站点类型" confirm"chooseSiteType" close"onCloseSiteType"><template v-slot:search><view><…

Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件,如何配置route路由

Debian/Ubuntu的networking的/etc/network/interfaces配置文件,如何配置route路由 在 Debian/Ubuntu 系统中&#xff0c;通过 /etc/network/interfaces 配置文件配置路由&#xff08;静态路由或默认路由&#xff09;可以通过以下方式实现。以下是详细配置方法及示例&#xff1…

天梯赛 L2-024 部落

一个并查集题目&#xff0c;难点就在于统计总人数&#xff0c;使用map即可&#xff0c;还有需要注意的是编号不一定是小于N的&#xff0c;小于10000的&#xff0c;需要注意。 #include<bits/stdc.h> using namespace std; const int N 10010; int fa[N]; int find(int …

uniapp 微信小程序 使用ucharts

文章目录 前言一、组件功能概述二、代码结构分析2.1 模板结构 总结 前言 本文介绍一个基于 Vue 框架的小程序图表组件开发方案。该组件通过 uCharts 库实现折线图的绘制&#xff0c;并支持滚动、缩放、触摸提示等交互功能。文章将从代码结构、核心方法、交互实现和样式设计等方…

Axure项目实战:智慧运输平台后台管理端-承运商管理(中继器筛选)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:智慧运输平台后台管理端 主要内容:承运商管理 应用场景:条件筛选、增删改查操作、台账制作 案例展示: 正文内容: 承运商管理模块主要解决平台对承运商的管理,包括新增承运商作,审核承运商申请,修…

[论文笔记] Deepseek技术报告解读: MLAMTP

1. RMSNorm 归一化层 class RMSNorm(nn.Module):def __init__(self, dim: int, eps: float = 1e-8):super().__init__()self.eps = epsself.weight = nn.Parameter(torch.ones(dim)) # 可学习的缩放参数def _norm(self, x: torch.Tensor):return x * torch.rsqrt(x.pow(2).me…

八款内网电脑监控软件:探寻适配企业需求的数字化监管方案组合

数字化办公的时代背景下&#xff0c;企业管理面临着前所未有的挑战。如何实现对员工办公行为的高效管理&#xff0c;确保网络资源的合理利用&#xff0c;成为众多企业决策者和高级管理人员亟待解决的重要问题。内网电脑监控软件作为一种有效的管理工具&#xff0c;应运而生。本…

Flutter求助贴

报错信息&#xff1a;The Dart VM Service was not discovered after 30 seconds. This is taking much longer than expected... 基本情况&#xff1a; 硬件&#xff1a;mac(15.3.1)&#xff0c;iPad(iOS 16.6),iPhone 16 pro(iOS 18.4) 项目环境 flutter&#xff1a;3.16…