2026年华为校招面试预测题技术岗_第1页
2026年华为校招面试预测题技术岗_第2页
2026年华为校招面试预测题技术岗_第3页
2026年华为校招面试预测题技术岗_第4页
2026年华为校招面试预测题技术岗_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

2026年华为校招面试预测题(技术岗)一、编程实现题(共3题,每题10分,总分30分)题目1:题目描述:请实现一个函数,输入一个字符串,输出该字符串中所有字符的频率统计。要求使用哈希表(字典)实现,并保证输出结果按照字符升序排列。示例输入:`"hello"`示例输出:`{'h':1,'e':1,'l':2,'o':1}`要求:1.不能使用Python内置的`collections.Counter`;2.处理字符串时忽略大小写;3.字符顺序按照ASCII码升序排列。题目2:题目描述:实现一个简单的LRU(LeastRecentlyUsed)缓存机制,支持以下操作:-`get(key)`:获取键对应的值,如果键不存在返回-1;获取成功后,将该键值对标记为最近使用;-`put(key,value)`:插入或更新键值对,如果缓存已满,则删除最久未使用的键值对。要求:1.使用双向链表和哈希表结合实现;2.时间复杂度为O(1);3.缓存容量为固定值(如100)。题目3:题目描述:给定一个包含重复元素的数组,请实现一个函数,返回所有可能的子集(不包含重复的子集)。示例输入:`["a","b","c","b"]`示例输出:`[[],["a"],["b"],["c"],["a","b"],["a","c"],["b","c"],["a","b","c"]]`要求:1.子集不区分顺序;2.忽略输入中的重复元素(如两个"b"视为一个)。二、算法设计题(共3题,每题15分,总分45分)题目1:题目描述:华为云存储系统中,需要统计一个文件夹内所有文件的大小总和,但文件可能存在重命名或硬链接的情况(即两个文件可能指向同一存储块)。请设计一个算法,高效统计实际不重复的文件大小总和。假设:1.文件名和大小通过目录遍历获取;2.硬链接信息存储在一个哈希表中(`{"file1":"file2"}`表示`file1`和`file2`是硬链接)。要求:1.时间复杂度尽可能低;2.给出伪代码或Python伪代码实现。题目2:题目描述:在华为5G基站网络中,需要检测是否存在环路(即多个基站通过光纤互连形成闭环)。网络结构用邻接表表示,请设计一个算法检测环路。示例输入:{"A":["B","C"],"B":["A","D"],"C":["A","D"],"D":["B","C","E"],"E":["D"]}示例输出:`True`(存在环路ABC或BCD)要求:1.使用深度优先搜索(DFS)或广度优先搜索(BFS);2.说明算法的鲁棒性(如处理自环或重复边的情况)。题目3:题目描述:华为移动支付系统需要优化交易排序算法,要求在保证交易时间复杂度为O(nlogn)的前提下,额外满足:1.相同时间戳的交易按金额升序排序;2.金额相同但时间戳不同的交易按时间戳升序排序。示例输入:`[{"time":"2023-10-0110:00:01","amount":100},{"time":"2023-10-0110:00:01","amount":200},{"time":"2023-10-0110:00:02","amount":100}]`示例输出:`[{"time":"2023-10-0110:00:01","amount":100},{"time":"2023-10-0110:00:01","amount":200},{"time":"2023-10-0110:00:02","amount":100}]`要求:1.给出排序函数伪代码;2.解释为何该排序方法满足要求。三、系统设计题(共2题,每题20分,总分40分)题目1:题目描述:设计一个华为鸿蒙系统中的消息推送服务,要求:1.支持多设备(手机、平板、手表)推送;2.消息类型包括紧急通知(优先级最高)、普通通知(按时间排序);3.考虑网络不稳定场景下的消息重试机制。要求:1.绘制系统架构图(手绘即可);2.说明关键技术选型(如消息队列、数据库);3.分析高并发场景下的解决方案。题目2:题目描述:华为智能摄像机需要设计一个实时人脸识别系统,要求:1.支持多人同时识别;2.在低功耗模式下降低算法复杂度;3.异常情况(如遮挡、光照变化)下仍需较高准确率。要求:1.给出系统模块划分;2.说明可能的算法优化方法(如模型压缩、特征提取);3.提出容错方案。答案与解析一、编程实现题答案题目1:pythondefchar_frequency(s:str)->dict:freq={}forcharins.lower():ifchar.isalnum():#忽略非字母数字字符freq[char]=freq.get(char,0)+1returndict(sorted(freq.items()))解析:1.遍历字符串时转为小写,忽略大小写;2.使用`dict.get`统计频率;3.最后按ASCII码排序(Python中`sorted`默认按字节序)。题目2:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=self.tail=ListNode(0)self.head.next=self.tailself.tail.prev=self.headclassListNode:def__init__(self,key=0,value=0):self.key=keyself.value=valueself.prev=self.next=Nonedefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._move_to_head(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_head(node)else:iflen(self.cache)==self.capacity:self._remove_tail()new_node=self.ListNode(key,value)self.cache[key]=new_nodeself._add_node(new_node)self._move_to_head(new_node)def_add_node(self,node:ListNode)->None:node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node:ListNode)->None:node.prev.next=node.nextnode.next.prev=node.prevdef_move_to_head(self,node:ListNode)->None:self._remove_node(node)self._add_node(node)def_remove_tail(self)->None:tail=self.tail.prevself._remove_node(tail)delself.cache[tail.key]解析:1.使用双向链表维护最近使用顺序;哈希表存储键值对;2.`get`操作将节点移动到头部;`put`操作时先删除旧节点;3.删除尾节点时释放内存。题目3:pythondefsubsets_with_duplicates(nums:List[str])->List[List[str]]:res=[]nums.sort()#忽略重复元素需先排序subset=[]i=0whilei<len(nums):ifi>0andnums[i]==nums[i-1]:ifnotsubsetornums[i]!=subset[-1]:ifsubset:j=len(subset)-1whilej>=0andsubset[j]==nums[i]:j-=1ifj==-1:res.append(subset+[nums[i]])else:res.append([nums[i]])else:res.append(subset+[nums[i]])subset.append(nums[i])i+=1returnres解析:1.先排序,将重复元素相邻;2.类似回溯法,但需跳过连续重复元素;3.通过动态维护子集`subset`,避免重复子集。二、算法设计题答案题目1:伪代码:functioncount_unique_file_sizes(files,hard_links):file_blocks={}#存储文件名到存储块的映射forfileinfiles:iffileinhard_links:block=hard_links[file]ifblocknotinfile_blocks:file_blocks[block]=[]file_blocks[block].append(file)else:file_blocks[file]=[file]total_size=0forblock_listinfile_blocks.values():iflen(block_list)==1:total_size+=get_file_size(block_list[0])忽略硬链接(不重复计算)returntotal_size解析:1.建立存储块与文件名的映射,相同块视为同一文件;2.只统计独立文件的大小,硬链接不重复计算。题目2:伪代码:functiondetect_cycle(graph):visited=set()rec_stack=set()fornodeingraph:ifnodenotinvisited:ifdfs(node,visited,rec_stack):returnTruereturnFalsefunctiondfs(node,visited,rec_stack):visited.add(node)rec_stack.add(node)forneighboringraph[node]:ifneighbornotinvisited:ifdfs(neighbor,visited,rec_stack):returnTrueelifneighborinrec_stack:returnTruerec_stack.remove(node)returnFalse解析:1.使用DFS检测环,通过递归栈记录路径;2.处理自环时`neighborinrec_stack`直接返回True。题目3:伪代码:functioncustom_sort(transactions):按时间戳升序,时间戳相同按金额升序transactions.sort(key=lambdax:(x["time"],x["amount"]))returntransactions解析:1.Python中`sort`支持多级排序,先按时间戳,再按金额;2.时间复杂度O(nlogn),满足要求。三、系统设计题答案题目1:架构图(文字描述):+--++-++-+|用户终端(手机/|->|消息中心(MQ)|->|数据库(Redis)||平板/手表)||(Kafka/RabbitMQ)||(存储推送记录)|+--++-++-+||||||||vvvv+--++-++-+|推送策略模块||网络重试机制||定时清理模块|+--++-++-+解析:1.用户终端通过API请求消息中心;2.消息中心使用MQ解耦,

温馨提示

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

最新文档

评论

0/150

提交评论