2026年华为技术专家招聘面试题解析.docxVIP

  • 0
  • 0
  • 约7.06千字
  • 约 22页
  • 2026-01-20 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年华为技术专家招聘面试题解析

一、编程语言与算法(共5题,总分25分)

1.题目(5分):

给定一个字符串,请实现一个函数,统计字符串中所有单词的出现频率,并按频率降序排列。例如,输入`helloworldhello`,输出`{hello:2,world:1}`。要求考虑空格和标点符号的影响,忽略大小写。

答案:

python

defword_frequency(s:str)-dict:

importre

words=re.findall(r\b\w+\b,s.lower())

freq={}

forwordinwords:

freq[word]=freq.get(word,0)+1

returndict(sorted(freq.items(),key=lambdax:x[1],reverse=True))

解析:

-使用正则表达式`re.findall(r\b\w+\b,s.lower())`提取所有单词,忽略大小写和标点。

-遍历单词统计频率,使用`dict.get`简化计数。

-最后按频率降序排序输出,时间复杂度O(nlogn),适用于大数据场景。

2.题目(5分):

实现快速排序算法,要求:

(1)原地排序(不使用额外内存);

(2)处理重复元素时,尽量减少比较次数。

答案:

python

defquick_sort(arr,left,right):

ifleft=right:

return

pivot=arr[left]

i,j=left,right

whileij:

whileijandarr[j]=pivot:

j-=1

arr[i]=arr[j]

whileijandarr[i]=pivot:

i+=1

arr[j]=arr[i]

arr[i]=pivot

quick_sort(arr,left,i-1)

quick_sort(arr,i+1,right)

解析:

-选择左边界为基准值(pivot),双指针向中间移动。

-处理重复元素时,通过`arr[i]=arr[j]`覆盖重复值,避免多次比较。

-原地排序空间复杂度O(logn),适用于华为常见的分布式系统排序需求。

3.题目(5分):

设计一个无重复字符的最长子串函数,输入`abcabcbb`,输出`abc`(长度3)。要求时间复杂度O(n)。

答案:

python

deflongest_unique_substring(s:str)-str:

char_set=set()

left=0

max_len=0

max_substr=

forrightinrange(len(s)):

whiles[right]inchar_set:

char_set.remove(s[left])

left+=1

char_set.add(s[right])

ifright-left+1max_len:

max_len=right-left+1

max_substr=s[left:right+1]

returnmax_substr

解析:

-使用滑动窗口技术,`left`和`right`分别表示子串左右边界。

-哈希集合记录窗口中的字符,遇到重复时移动`left`并移除字符。

-时间复杂度O(n),空间复杂度O(min(m,n)),其中m为字符集大小。

4.题目(5分):

给定一个链表,判断是否为回文链表(如`1-2-2-1`)。要求不使用额外空间。

答案:

python

classListNode:

def__init__(self,val=0,next=None):

self.val=val

self.next=next

defis_palindrome(head:ListNode)-bool:

ifnotheadornothead.next:

returnTrue

找到中点

slow=head

fast=head

whilefastandfast.next:

slow=slow.next

fast=fast.next.next

反转后半部分

prev=None

whileslow:

tmp=slow.next

slow.next=prev

prev=slow

slow=tmp

比较前后半部分

left,right=head,prev

whileright:

ifl

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档