华为技术专员面试全攻略及答案.docxVIP

华为技术专员面试全攻略及答案.docx

本文档由用户AI专业辅助创建,并经网站质量审核通过
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第PAGE页共NUMPAGES页

2026年华为技术专员面试全攻略及答案

一、编程能力测试(5题,共30分)

说明:考察编程基础、算法设计及代码实现能力。题目涵盖C/C++、Java等语言,结合华为业务场景。

1.1编程题(6分)

题目:

给定一个无重复元素的整数数组`nums`和一个目标值`target`,请找出数组中和为目标值`target`的两个数,并返回它们的索引。你可以假设每个输入都有且只有一对解,不能重复使用同一个元素。

示例:

输入:`nums=[2,7,11,15],target=9`

输出:`[0,1]`(因为`nums[0]+nums[1]=2+7=9`)

要求:

-使用哈希表实现,时间复杂度O(n)。

-代码需包含主函数测试。

答案与解析:

cpp

includeiostream

includevector

includeunordered_map

usingnamespacestd;

vectorinttwoSum(vectorintnums,inttarget){

unordered_mapint,intnumMap;

for(inti=0;inums.size();++i){

intcomplement=target-nums[i];

if(numMap.find(complement)!=numMap.end()){

return{numMap[complement],i};

}

numMap[nums[i]]=i;

}

return{};//不应有此行,题目保证有解

}

intmain(){

vectorintnums={2,7,11,15};

inttarget=9;

vectorintresult=twoSum(nums,target);

coutIndices:result[0],result[1]endl;

return0;

}

解析:

-使用哈希表存储每个数字及其索引,遍历时直接查找`target-nums[i]`是否存在。

-时间复杂度O(n),空间复杂度O(n)。

1.2编程题(6分)

题目:

实现一个`LRU(LeastRecentlyUsed)缓存`,使用双向链表和哈希表实现。支持`get`和`put`操作。

要求:

-`get(key)`:返回键对应的值,若不存在返回-1。每次访问后,将该键值对移动到链表头部。

-`put(key,value)`:若键已存在,更新值并移动到链表头部;若不存在,插入到链表头部,并哈希表中添加。若超出容量,删除链表尾部元素。

示例:

LRU缓存容量为2:

`put(1,1)`→缓存是{[1,1]}

`put(2,2)`→缓存是{[2,2],[1,1]}

`get(1)`→返回1,缓存是{[1,1],[2,2]}

`put(3,3)`→删除键2,缓存是{[3,3],[1,1]}

`get(2)`→返回-1(未命中)

答案与解析:

cpp

includeiostream

includeunordered_map

usingnamespacestd;

//双向链表节点

structNode{

intkey,value;

Nodeprev;

Nodenext;

Node(intk,intv):key(k),value(v),prev(nullptr),next(nullptr){}

};

classLRUCache{

private:

unordered_mapint,Nodecache;

Nodehead,tail;

intcapacity;

voidaddNode(Nodenode){

node-next=head-next;

node-prev=head;

head-next-prev=node;

head-next=node;

}

voidremoveNode(Nodenode){

NodeprevNode=node-prev;

NodenextNode=node-next;

prevNode-next=nextNode;

nextNode-prev=prevNode;

}

voidmoveToHead(Nodenode){

removeNode(node);

addNode(node);

}

voidpopTail(){

Nodenode=tail-prev;

removeNode(nod

文档评论(0)

肖四妹学教育 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档