版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年华为研发工程师面试题库及答案详述一、编程语言与基础算法(共5题,每题10分,总分50分)1.题目:编写一个函数,实现快速排序算法,并说明其时间复杂度和空间复杂度。假设输入数组为`[4,2,6,1,9,5,3]`,请输出排序后的数组。答案与解析:答案:pythondefquick_sort(arr):iflen(arr)<=1:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=[xforxinarrifx>pivot]returnquick_sort(left)+middle+quick_sort(right)input_array=[4,2,6,1,9,5,3]sorted_array=quick_sort(input_array)print(sorted_array)#输出:[1,2,3,4,5,6,9]解析:快速排序的时间复杂度平均为O(nlogn),最坏情况为O(n²)(当每次选择的基准值都是最小或最大时)。空间复杂度为O(logn),因为递归调用栈的深度为logn。上述代码采用分治法,将数组分为三部分(小于、等于、大于基准值),再递归排序左右子数组。2.题目:给定一个字符串`"华为成立于1987年"`,请编写代码统计其中每个字符的出现次数,并按出现次数降序排列。答案与解析:答案:pythonfromcollectionsimportCounterdefcount_chars(s):counter=Counter(s)sorted_counter=sorted(counter.items(),key=lambdax:x[1],reverse=True)returnsorted_counterinput_str="华为成立于1987年"char_counts=count_chars(input_str)print(char_counts)#输出:[('华',2),('于',1),('成',1),('立',1),('了',1),('1987年',1)]解析:使用`collections.Counter`统计字符频率,然后按频率降序排序。注意中文和数字也会被单独计数,`"1987年"`被视为一个整体。3.题目:实现一个函数,检查一个字符串是否为回文串(如`"abba"`或`"上海自来水来自海上"`)。要求忽略空格和大小写。答案与解析:答案:pythondefis_palindrome(s):s=''.join(s.split()).lower()returns==s[::-1]test1="abba"test2="上海自来水来自海上"print(is_palindrome(test1))#输出:Trueprint(is_palindrome(test2))#输出:True解析:先去除字符串中的空格并转换为小写,然后检查字符串是否与反转后的字符串相同。回文串对左右对称。4.题目:编写一个函数,找出数组中重复的数字,且不能使用额外空间。假设输入数组为`[1,2,3,4,2,3,5]`,请输出重复的数字。答案与解析:答案:pythondeffind_duplicates(arr):duplicates=[]fornuminarr:index=abs(num)-1ifarr[index]<0:duplicates.append(abs(num))else:arr[index]=-arr[index]returnduplicatesinput_array=[1,2,3,4,2,3,5]duplicates=find_duplicates(input_array)print(duplicates)#输出:[2,3]解析:利用数组索引作为标记,将数字对应的索引位置取反。如果某个索引已被取反,说明该数字重复。注意此方法仅适用于数字范围在数组长度内。5.题目:实现一个函数,计算二叉树的最大深度。假设二叉树如下:3/\920/\157答案与解析:答案:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefmax_depth(root):ifnotroot:return0return1+max(max_depth(root.left),max_depth(root.right))构建二叉树root=TreeNode(3)root.left=TreeNode(9)root.right=TreeNode(20,TreeNode(15),TreeNode(7))print(max_depth(root))#输出:3解析:递归计算左右子树的最大深度,取较大值加1。二叉树深度从根节点开始计算。二、系统设计(共3题,每题20分,总分60分)1.题目:设计一个高并发的短链接系统(如`tinyurl`)。要求:-用户输入长链接,系统返回短链接。-短链接应具有唯一性和可访问性。-支持高并发访问。答案与解析:答案:系统架构:1.前端服务(APIGateway):接收用户请求,负载均衡分发到后端服务。2.短链接服务(后端):-使用哈希算法(如Base62)将长链接映射为短链接。-数据库存储映射关系(长链接<->短链接)。3.数据库:使用高可用数据库(如Redis或MySQLCluster)存储映射关系。4.CDN:缓存短链接,加速访问。技术选型:-短链接生成:-哈希算法:`hash(long_url)%62`,转换为`a-z`和`A-Z`。-也可使用分布式ID生成器(如Snowflake)。-数据库:-使用Redis缓存热点短链接,降低数据库压力。-MySQL存储所有映射关系,配合分库分表扩展。-高并发处理:-APIGateway使用Nginx负载均衡。-后端服务使用无状态架构,可水平扩展。示例:长链接`/article/12345`→哈希后生成`a1b2`→缓存到Redis。访问`a1b2`时,APIGateway查询Redis,若未命中则查询数据库。解析:关键点:1.唯一性:哈希算法或分布式ID生成确保短链接唯一。2.高并发:负载均衡、缓存、数据库扩展保证性能。3.可访问性:通过数据库或CDN返回长链接。2.题目:设计一个微博系统,要求支持亿级用户,实现实时动态发布和推送。答案与解析:答案:系统架构:1.用户服务:用户注册、登录、信息管理(使用分布式缓存Redis)。2.动态服务:-动态发布:写入Kafka或RabbitMQ,异步写入数据库。-数据库:分片存储动态(如按用户ID或时间分片)。3.实时推送:-WebSocket或MQTT实现实时通知。-用户订阅关注关系,推送动态。4.搜索服务:-Elasticsearch索引动态内容,支持分词搜索。5.CDN:缓存静态资源(如头像、图片)。技术选型:-高并发写入:-使用Kafka/RabbitMQ解耦动态发布和存储。-数据库分片(如ShardingSphere),单表不超过5000万行。-实时推送:-WebSocket保持长连接,减少延迟。-Redis订阅发布(PUB/SUB)加速通知。-搜索优化:-Elasticsearch索引全文内容,支持高亮显示。解析:关键点:1.可扩展性:分片、缓存、异步写入保证系统扩展。2.实时性:WebSocket/Redis保证消息实时推送。3.搜索效率:Elasticsearch提供快速全文搜索。3.题目:设计一个分布式限流系统,要求支持全局限流,且低延迟。答案与解析:答案:方案:1.限流算法:-滑动窗口:滑动固定窗口计数,动态调整。-令牌桶:按固定速率放行令牌,防止突发流量。2.分布式实现:-使用Redis记录每个用户/接口的请求计数。-使用分布式锁(如RedisLock)保证计数一致性。3.架构:-限流模块嵌入网关(如Nginx或SpringCloudGateway)。-配置中心(如Nacos)动态调整限流阈值。示例:用户请求`/api/user/login`,限流模块检查Redis中计数是否超过阈值,若超过则拒绝。技术选型:-Redis:记录请求计数,高可用集群。-分布式锁:防止多节点并发更新计数。-配置中心:动态调整限流策略。解析:关键点:1.一致性:分布式锁保证计数准确。2.低延迟:Redis高性能读写。3.灵活性:配置中心动态调整限流策略。三、数据库与存储(共2题,每题15分,总分30分)1.题目:设计一个电商订单表,要求支持高并发写入,并支持按用户ID和时间范围查询。答案与解析:答案:表结构:sqlCREATETABLEorders(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,order_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,total_amountDECIMAL(10,2)NOTNULL,statusENUM('pending','paid','shipped','completed')NOTNULL,INDEXidx_user_time(user_id,order_time),INDEXidx_time(order_time));优化方案:1.高并发写入:-数据库分片(按`user_id`或`order_time`)。-使用Redis缓存热点用户订单,减少数据库压力。2.查询优化:-索引`idx_user_time`支持按用户和时间范围查询。-热点用户数据存入Redis,查询先走缓存。解析:关键点:1.分片:均衡写入压力,避免单表过大。2.索引:优化查询性能。3.缓存:减少数据库访问,提升响应速度。2.题目:为什么Redis的RDB持久化会卡顿?如何优化?答案与解析:答案:RDB问题:-全量快照:RDB持久化时,Redis停止所有写操作,生成临时文件,再恢复写。导致短暂卡顿。-内存占用大:RDB文件包含所有键值对,内存占用高。优化方案:1.AOF持久化:-持续记录写操作,不卡顿。但文件大,恢复慢。-混合模式(RDB+AOF):定期全量快照,AOF恢复时补全。2.参数调整:-`save`指令优化(如`save601000`,60秒内至少1000次写操作触发快照)。-使用`bgrewriteaof`定期重写AOF文件。解析:关键点:1.RDB缺点:卡顿、内存占用高。2.替代方案:AOF或混合模式。3.参数优化:减少快照频率,降低卡顿。四、网络与安全(共2题,每题15分,总分30分)1.题目:解释TCP的三次握手过程,并说明为什么不能有四次握手?答案与解析:答案:三次握手:1.SYN:客户端发送`SYN=1`,请求连接,`seq=x`。2.SYN+ACK:服务器回复`SYN=1,ACK=1`,`seq=y`,`ack=x+1`。3.ACK:客户端发送`ACK=1`,`ack=y+1`,连接建立。为什么不能四次握手:-四次握手会导致资源浪费:-服务器需额外发送一个`ACK`,增加网络负载。-空间换时间,无实际收益。解析:关键点:1.握手目的:确认双方收发能力。2.四次握手问题:多发一个`ACK`,无必要。2.题目:设计一个防止SQL注入的方案。答案与解析:答案:方案:1.预处理语句(PreparedStatements):-将SQL和参数分离,数据库自动转义。-如MySQL的`PREPARE`语句。2.ORM框架:-使用Hibernate、MyBatis等框架,自动转义参数。3.输入验证:-前端校验输入格式(如正则)。-后端再次校验,如`ESCAPE`转义特殊字符。4.参数化查询:-避免拼接SQL,使用`?`占位符。示例:sql--错误(拼接SQL):SELECTFROMusersWHEREusername='admin'OR'1'='1'--正确(预处理语句):PREPAREstmtFROM'SELECTFROMusersWHEREusername=?ANDpassword=?';EXECUTEstmtUSING'admin','password';解析:关键点:1.预处理语句:核心防御手段。2.ORM:减少手动SQL编写。3.输入验证:多层防御。五、综合题(共2题,每题20分,总分40分)1.题目:华为云推出分布式数据库,如何保证数据一致性和高可用性?答案与解析:答案:方案:1.数据一致性:-Raft协议:多节点选举Leader,统一写操作。-Paxos:用于分布式系统共识,但复杂。-同步复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建海峡银行龙岩分行诚聘英才备考题库参考答案详解
- 2025年中国科学院心理研究所认知与发展心理学研究室杜忆研究组招聘备考题库参考答案详解
- 圣诞节甜甜文案9篇
- 2026年少儿编程教育合作加盟合同
- 银联企业服务(上海)有限公司2026年度招聘备考题库及1套参考答案详解
- 国科大杭州高等研究院2025年9月批次公开招聘教学科研人员40人备考题库及1套完整答案详解
- 2025年北京协和医院变态(过敏)反应科合同制科研助理招聘备考题库及一套答案详解
- 甘肃电器科学研究院2025年度聘用制工作人员招聘备考题库附答案详解
- 2026年食品安全检测合同
- 2025年滁州市公安机关公开招聘警务辅助人员50人备考题库及1套完整答案详解
- 2026年海南经贸职业技术学院单招(计算机)考试参考题库及答案1套
- 代办执照合同范本
- 2025天津大学管理岗位集中招聘15人备考考点试题及答案解析
- 口腔肿瘤腓骨皮瓣移植
- 2025昆明市呈贡区城市投资集团有限公司及下属子公司第一批招聘(12人)(公共基础知识)测试题附答案解析
- 2025年国家公务员录用考试《行测+申论》真题卷(地市级)及答案解析
- (2025年)教育博士(EdD)教育领导与管理方向考试真题附答案
- 2025年起重机司机(限门式起重机)理论考试考题(有答案)
- 奇安信Linux系统安全课件
- 老年压疮预防与护理新进展
- 《JB 5317.3-1991 环链电动葫芦用锥形转子电动机》(2026年)实施指南
评论
0/150
提交评论