华为公司技术工程师面试题及答案.docxVIP

  • 0
  • 0
  • 约5.32千字
  • 约 15页
  • 2026-02-03 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年华为公司技术工程师面试题及答案

一、编程与算法(共5题,每题10分,总分50分)

1.题目:

实现一个函数,输入一个非负整数`n`,返回`n`的各位数字之和。例如,输入`123`,返回`6`。要求不使用内置的字符串或数学库函数(如`parseInt`、`split`等),仅使用循环和位运算。

答案:

python

defsum_of_digits(n):

total=0

whilen0:

total+=n%10

n//=10

returntotal

解析:

通过循环逐位提取数字,使用`n%10`获取最低位,`n//=10`移除最低位。位运算不依赖库函数,更符合低层优化需求。华为注重底层实现能力,此题考察基础编程逻辑。

2.题目:

给定一个链表,判断链表是否存在环。要求不使用额外的空间(如哈希表或集合),仅使用两个指针(快慢指针)。

答案:

python

classListNode:

def__init__(self,x):

self.val=x

self.next=None

defhas_cycle(head):

ifnothead:

returnFalse

slow=head

fast=head.next

whilefast!=slow:

ifnotfastornotfast.next:

returnFalse

slow=slow.next

fast=fast.next.next

returnTrue

解析:

快慢指针的经典应用,快指针每次移动两步,慢指针每次移动一步。若存在环,快慢指针必相遇;否则,快指针先到达`None`。华为常用此题考察链表和循环判断能力。

3.题目:

实现快速排序算法,要求原地排序(不使用额外数组),并处理重复元素的情况。

答案:

python

defquick_sort(arr,low,high):

iflowhigh:

pivot=partition(arr,low,high)

quick_sort(arr,low,pivot-1)

quick_sort(arr,pivot+1,high)

defpartition(arr,low,high):

pivot=arr[high]

i=low-1

forjinrange(low,high):

ifarr[j]=pivot:

i+=1

arr[i],arr[j]=arr[j],arr[i]

arr[i+1],arr[high]=arr[high],arr[i+1]

returni+1

解析:

快速排序核心是分治思想,通过`partition`函数将数组划分为小于等于和大于枢轴的两部分。处理重复元素时,需确保所有等于枢轴的元素聚集在一起,避免性能退化。华为关注算法的鲁棒性和效率。

4.题目:

设计一个LRU(最近最少使用)缓存,容量为`capacity`。支持`get`和`put`操作,要求时间复杂度为O(1)。

答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.order=[]

defget(self,key:int)-int:

ifkeyinself.cache:

self.order.remove(key)

self.order.append(key)

returnself.cache[key]

return-1

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self.order.remove(key)

eliflen(self.cache)==self.capacity:

oldest=self.order.pop(0)

delself.cache[oldest]

self.cache[key]=value

self.order.append(key)

解析:

LRU缓存需记录访问顺序,通过双向链表和哈希表实现。`get`操作将元素移至队尾表示最近使用,`put`操作需淘汰最久未使用的元素(队首)。华为常用此题考察数据结构设计能力。

5.题目:

给定一个包含`n`个整数的数组,返回所有和为`target`的三个整数的组合。例如,输入`[1,2,3,4]`,`target=7`,返回`[[1,2,4]]`。

文档评论(0)

1亿VIP精品文档

相关文档