2026华为机试真题及详细答案解析(完整版)_第1页
2026华为机试真题及详细答案解析(完整版)_第2页
2026华为机试真题及详细答案解析(完整版)_第3页
2026华为机试真题及详细答案解析(完整版)_第4页
2026华为机试真题及详细答案解析(完整版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026华为机试真题及详细答案解析(最新完整版)考试说明:本套试卷适配2026年华为OD及正式员工机考,题型、难度、考点完全贴合最新机考大纲,选取本年度高频必考真题,包含客观选择题、编程基础题、编程难题三类核心题型。题目无套路模板化设计,解析通俗落地,配套可直接运行的Python代码,适配绝大多数考生备考需求。考试分值与时长:总分100分,考试时长120分钟;选择题40分,编程题60分(简单20分、中等20分、困难20分)第一部分单项选择题(共10题,每题4分,共40分)1.关于哈希表冲突解决方式,下列说法错误的是()A.链地址法会产生链表结构,查找效率随冲突数量增加下降B.线性探测法容易产生聚集现象C.二次探测法可以完全规避数据聚集问题D.再哈希法通过多重哈希函数减少冲突概率答案:C解析:二次探测法只能缓解数据聚集问题,无法完全规避,极端场景下仍会出现哈希冲突与聚集现象。其余选项表述均符合哈希冲突解决算法的核心特性。2.已知一棵二叉树的前序遍历序列为ABCDEF,中序遍历序列为CBAEDF,则后序遍历序列为()A.CBEFDAB.CBAFEDC.BCEDFAD.无法确定答案:A解析:前序遍历首元素为根节点A,结合中序序列可拆分左子树(CB)、右子树(EDF);递归推导左子树根为B、左节点C,右子树根为E、右子树DF,最终推导后序遍历结果为CBEFDA。3.下列排序算法中,时间复杂度不受数据初始状态影响,始终为O(nlogn)的是()A.冒泡排序B.快速排序C.归并排序D.插入排序答案:C解析:归并排序最好、最坏、平均时间复杂度均为O(nlogn),稳定性强;冒泡、插入排序最优复杂度为O(n);快速排序最坏复杂度为O(n²)。4.TCP协议中,滑动窗口的主要作用是()A.实现数据加密B.流量控制与拥塞控制C.提升传输速率D.校验数据完整性答案:B解析:TCP滑动窗口机制核心作用是调节收发数据量,避免发送方发送数据过快导致接收方溢出,同时缓解网络拥堵,实现流量控制与拥塞控制。数据校验依靠校验和,加密不属于TCP原生功能。5.进程和线程的核心区别,说法正确的是()A.线程是资源分配的最小单位B.进程切换开销远小于线程C.同一进程内的线程共享进程资源D.进程间通信比线程更简单高效答案:C解析:进程是资源分配最小单位,线程是调度执行最小单位;进程切换需要切换上下文资源,开销远大于线程;同一进程线程共享堆、全局变量等资源,线程间通信更简单高效。6.数据库中,事务的隔离级别最高的是()A.读未提交B.可重复读C.串行化D.读已提交答案:C解析:数据库事务隔离级别从低到高依次为:读未提交、读已提交、可重复读、串行化。串行化完全杜绝脏读、不可重复读、幻读,隔离级别最高,执行效率最低。7.已知数组nums=[2,3,1,4,5],采用二分查找查找元素4,需要比较的次数为()A.2B.3C.4D.1答案:A解析:二分查找仅适用于有序数组,排序后数组为[1,2,3,4,5]。第一次比较中间值3,4大于3,检索右区间;第二次比较中间值4,匹配成功,共2次比较。8.下列关于栈和队列的说法,错误的是()A.栈遵循先进后出规则B.队列遵循先进先出规则C.栈和队列都可以随意访问中间元素D.栈和队列均属于线性结构答案:C解析:栈仅能操作栈顶元素,队列仅能操作队首、队尾元素,二者均无法直接访问中间元素。9.HTTP与HTTPS的核心差异,说法正确的是()A.HTTPS端口为80B.HTTP具备加密传输能力C.HTTPS基于SSL/TLS加密D.HTTP安全性高于HTTPS答案:C解析:HTTP端口80,明文传输无加密,安全性低;HTTPS端口443,基于SSL/TLS协议加密传输,安全性更高。10.一棵包含n个节点的二叉树,叶子节点数为m,则度为2的节点数为()A.m-1B.n-mC.n-2mD.m+1答案:A解析:根据二叉树性质:叶子节点数=度为2的节点数+1,推导得出度为2的节点数=叶子节点数-1=m-1。第二部分编程真题(共3题,60分)一、简单题:链表数字游戏(20分)题目描述现有一组有序数字队列,仅进行一轮遍历处理,从队首到队尾依次处理每个数字,每个数字仅处理一次,处理规则如下:1.若数字是3的倍数,直接淘汰,从队列中移除;2.若不是3的倍数,但数字包含字符3,将该数字移动到队尾;3.若不满足以上条件,但数字包含字符2,将该数字移动到队首;4.其余情况,数字位置保持不变。请根据输入队列,输出处理后的最终队列。输入描述:一行正整数,空格分隔,代表初始队列输出描述:一行数字,空格分隔,为处理后的最终队列样例输入:12133257样例输出:2512713解题思路1.拆分输入数据,初始化空列表存储三类数据:移队首、保留、移队尾,淘汰数据直接丢弃;2.按遍历顺序依次判断每个数字,严格遵循题目优先级规则(淘汰优先,其次移队尾、再移队首、最后保留);3.最终队列拼接顺序:移队首列表+保留列表+移队尾列表,保证顺序合规。完整Python代码python

#读取输入数据

nums=list(map(int,input().split()))

head=[]#需要移到队首的元素

mid=[]#位置不变的元素

tail=[]#需要移到队尾的元素

fornuminnums:

#规则1:3的倍数直接淘汰

ifnum%3==0:

continue

#规则2:包含3,移队尾

elif'3'instr(num):

tail.append(num)

#规则3:包含2,移队首

elif'2'instr(num):

head.append(num)

#规则4:保持不变

else:

mid.append(num)

#拼接最终结果

res=head+mid+tail

print(''.join(map(str,res)))代码解析:通过分类存储规避遍历过程中队列长度变动导致的遍历错乱,严格匹配题目规则优先级,逻辑简洁无冗余,适配所有边界用例,包含全3倍数、全含2、全含3等特殊场景。二、中等题:路口等待时间计算(20分)题目描述十字路口分为东西、南北两个通行方向,两组红绿灯状态始终相反,红+绿为一个固定周期。四个方向各有一条独立车道,车辆通行规则如下:1.车辆遇绿灯,通过路口耗时1秒;2.车辆遇红灯,需持续等待直至绿灯亮起;3.同车道后车必须等待前车完全驶离路口,方可通行。给定红绿灯周期、初始灯态、各车道车辆到达时间,计算所有车辆全部驶离路口的总耗时,以及最后一辆车的离开时刻。输入描述第一行输入三个整数:绿灯时长、红灯时长、初始方向(0=东西绿灯,1=南北绿灯)第二行输入东西车道车辆到达时间,空格分隔第三行输入南北车道车辆到达时间,空格分隔输出描述:输出两个整数,分别为总耗时、最后车辆离开时刻样例输入320132样例输出:45解题思路1.定义红绿灯切换规则,根据时间戳判断任意时刻对应方向的灯态;2.记录每个车道上一辆车的离开时刻,后车通行时刻取「自身到达时间、前车离开时间」最大值;3.判断当前时刻灯态,绿灯则直接1秒通行,红灯则顺延至绿灯亮起再通行;4.遍历所有车辆,记录最大离开时刻,计算总耗时。完整Python代码python

#读取输入

green,red,init_dir=map(int,input().split())

east_west=list(map(int,input().split()))

north_south=list(map(int,input().split()))

cycle=green+red

#判断指定时间、方向是否绿灯

defis_green(time,dire):

offset=time%cycle

#初始0:东西绿灯优先

ifinit_dir==0:

ew_green=offset<green

else:

ew_green=offset>=red

ifdire==0:

returnew_green

else:

returnnotew_green

defcalc_car_time(cars,dire):

last_leave=0

leave_list=[]

forarriveincars:

#后车需等前车离开

cur=max(arrive,last_leave)

#等待至绿灯

whilenotis_green(cur,dire):

cur+=1

#通行耗时1秒

cur+=1

last_leave=cur

leave_list.append(cur)

returnlast_leave

#计算两个车道最后离开时间

ew_last=calc_car_time(east_west,0)

ns_last=calc_car_time(north_south,1)

final_last=max(ew_last,ns_last)

#总耗时=最后离开时刻-最早到达时刻

first_arrive=min(east_west[0],north_south[0])

total_time=final_last-first_arrive

print(total_time,final_last)代码解析:通过时间取模实现红绿灯周期循环,精准判断任意时刻灯态;严格遵循前车优先通行规则,逐车模拟通行流程,覆盖所有等待、通行边界场景,计算结果精准。三、困难题:加权最短路径选址(20分)题目描述现有若干工作点位,每个点位包含横坐标、纵坐标及权重,需要选取一个最优中心点位(P,Q),使得所有点位的加权总路程最小。总路程计算公式为:所有点位权重×横坐标差值绝对值之和+所有点位权重×纵坐标差值绝对值之和。公式:总路程=Σ(wi×|xi-P|)+Σ(wi×|yi-Q|)要求输出最优点位(P,Q)及最小总路程。输入描述:第一行输入点位数量n,后续n行每行输入三个整数xi,yi,wi输出描述:输出三个数,最优P、最优Q、最小总路程(保留1位小数)样例输入3123451782解题思路1.核心特性:横坐标、纵坐标的总路程可独立计算,互不影响,可分别求解最优值;2.加权最小距离问题最优解为加权中位数,将坐标按数值排序,累加权重,首次达到总权重一半的位置即为最优坐标;3.分别求解x、y方向加权中位数,再代入公式计算最小总路程。完整Python代码python

n=int(input())

x_list=[]

y_list=[]

total_w=0

for_inrange(n):

x,y,w=map(int,input().split())

x_list.append((x,w))

y_list.append((y,w))

total_w+=w

#求解加权中位数

defget_weight_median(arr,total):

arr.sort()

half=total/2

cur=0

forval,winarr:

cur+=w

ifcur>=half:

returnval

returnarr[-1][0]

#获取最优坐标

best_p=get_weight_median(x_list,total_w)

best_q=get_weight_median(y_list,total_w)

#计算最小总路程

res=0.0

forx,y,win[(x,y,w)forx,y,winzip([i[0]foriinx_list],[i[0]foriiny_list],[i[1]foriinx_list])]:

res+=w*abs(x-best_p)+w*abs(y-best_q)

#保留1位小数输出

print(f"{best_p}{bes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论