华为留学生笔试 华为笔试 0828

笔试时间:2025年8月28日

往年笔试合集:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题:基于决策树预判资源调配优先级

在无线通信系统中为了资源调配更加合理和及时,需要对未来一段时间网络的负载做出预判以确定资源调配的优先级。决策树是一种常用的模型,可以根据采集到的状态数据,结合时间段、天气等因素来推测合理的资源调配优先级。现在将一个训练好的分类决策树模型 Tree 安装在系统中,请实现决策树的推算算法,根据输入特征返回资源调配优先级。

输入描述

输入包含多行数据:

首行是属性参数;后续 (m) 行是决策树模型的结构数据;再后续 (n) 行是待推理的样本。

1. 属性参数(首行)包含 3 个 int 类数据,分别表示:特征数量 (f),树模型的节点数 (m),待推理样本的行数 (n)。

2. 决策树模型 (T) ((T) 是 (m) 行 5 列的矩阵)一行数据表示决策树的一个节点,首行表示根节点(即 (T) 矩阵中的第 0 行),共有 (m) 个节点。5 个列分别表示:分裂特征的下标分裂特征的阈值当前节点左子节点的行号(即 (T) 矩阵中第几行)当前节点右子树的行号分类结果(即资源调配优先级)数据类型分别为:int, float, int, int, int;下标和行号均从 0 开始。模型结构中有意义的数据均 (\geq 0),无意义数据统一用 (-1) 表示。 例如:叶子节点无分裂特征,因此该字段填入 (-1)。决策规则:若样本特征的取值 (\leq) 分裂特征的阈值,则进入左子树,否则进入右子树。

3. 待推理样本((n) 行 (f) 列)一行数据表示一个待推理的样本;每行包含 (f) 个特征,数据类型为 float。

输出描述

返回分类结果。 注:一行一个分类结果,数据类型为 int。

样例输入

2 5 2

0 2.5 1 2 -1

-1 -1 -1 -1 1

1 5.0 3 4 -1

-1 -1 -1 -1 2

-1 -1 -1 -1 3

1.2 3.4

5.6 6.0

样例输出

1

3

解释:

第 1 行:特征数量为 2,模型节点数为 5,待推理样本为 2 条。

第 2 到 6 行:决策树模型,共 5 个节点。首行(第 2 行输入数据)为根节点。

第 7 到 8 行:2 个待推理样本,每个样本包含 2 个特征。输出:两条样本的推理结果分别为 分类 1、分类 3。

参考题解

这道题的核心是模拟决策树的推理过程。题目给了树的结构(每行一个节点)和待分类样本,要求根据决策规则输出分类结果。输入结构分析首行给出三个参数:特征数 f、树节点数 m、样本数 n。接着 m 行,每行 5 个数,描述一个节点:分裂特征下标阈值左子节点行号右子节点行号分类结果(叶子节点有效,否则 -1)最后 n 行是待分类的样本。树的结构特征若样本对应特征值 ≤ 阈值 → 进入左子树;否则进入右子树。如果 res != -1,说明是叶子节点,直接返回分类结果。否则按照规则判断:不断迭代,直到走到叶子节点。推理过程对每个样本:从根节点(下标 0)开始;根据特征和阈值一路走到叶子;输出叶子节点存放的分类结果。关键点树是用数组存的,节点索引即行号。遍历过程是 while 循环,不是递归。遇到 res != -1 就停。本题的核心就是 按输入描述的决策树结构,逐个样本从根节点出发,比较特征值和阈值,沿左右子树递归/迭代下去,直到到达叶子节点,输出对应分类结果

Python:

f, m, n = map(int, input().split())
tree = [list(map(float, input().split())) for _ in range(m)]
samples = [list(map(float, input().split())) for _ in range(n)]

for s in samples:
    idx = 0
    whileTrue:
        feat, thr, lch, rch, res = tree[idx]
        feat, lch, rch, res = int(feat), int(lch), int(rch), int(res)
        if res != -1:
            print(res)
            break
        if s[feat] <= thr:
            idx = lch
        else:
            idx = rch

第二题:Group卷积实现

卷积(Convolution)是计算视觉中常用的计算算子,广泛应用于图像分类、检测、跟踪等多领域。

如下图所示,以2个三维张量卷积计算为例,取输入张量X为通道数3、高度3、宽度3,卷积核K为通道数3、高度2、宽度2,二者执行卷积计算要求其通道数相同。 当取卷积计算步长stride=1,填充padding=0,膨胀dilation=1,无偏置项(bias)时,卷积核K在输入张量X上从左至右,从上至下滑动,分别与滑窗所重叠的输入张量3×2×2切片,逐元素相乘求和后,得到输出张量Y的各元

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务