华为公司技术人才面试题解析及答案.docxVIP

  • 0
  • 0
  • 约5.12千字
  • 约 16页
  • 2026-02-12 发布于福建
  • 举报

华为公司技术人才面试题解析及答案.docx

第PAGE页共NUMPAGES页

2026年华为公司技术人才面试题解析及答案

一、编程语言基础(3题,每题10分,共30分)

1.题目:

请用C++实现一个函数,输入一个整数数组,返回数组中所有奇数元素的平方和。例如,输入`[1,2,3,4,5]`,返回`1^2+3^2+5^2=35`。

答案:

cpp

includevector

includecmath

intsumOfOddSquares(conststd::vectorintnums){

intresult=0;

for(intnum:nums){

if(num%2!=0){

result+=numnum;

}

}

returnresult;

}

解析:

-遍历数组,判断每个元素是否为奇数(`num%2!=0`)。

-如果是奇数,计算其平方并累加到`result`中。

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

2.题目:

用Java实现一个方法,输入一个字符串,返回该字符串中所有单词的长度之和。单词由空格分隔,假设输入均为小写字母。例如,输入`helloworld`,返回`5+5=10`。

答案:

java

publicintsumOfWordLengths(Stringinput){

if(input==null||input.isEmpty())return0;

String[]words=input.split();

intsum=0;

for(Stringword:words){

sum+=word.length();

}

returnsum;

}

解析:

-使用`split()`按空格分割字符串,得到单词数组。

-遍历数组,累加每个单词的长度。

-边界处理:输入为空或空字符串时返回0。

3.题目:

用Python实现一个函数,输入一个列表,返回一个新列表,其中包含原列表中所有非负整数的平方。例如,输入`[1,-2,3,0,-4]`,返回`[1,9,0]`。

答案:

python

defsquare_non_negative(nums):

return[num2fornuminnumsifnum=0]

解析:

-使用列表推导式,过滤非负数并计算平方。

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

二、数据结构与算法(4题,每题10分,共40分)

1.题目:

请解释什么是二叉搜索树(BST),并给出一个中序遍历BST的递归算法(用Java或Python实现)。

答案:

解释:

二叉搜索树(BST)是一种二叉树,满足:

-左子树所有节点的值小于根节点值。

-右子树所有节点的值大于根节点值。

-左右子树均为BST,且无重复值。

中序遍历算法(Python):

python

definorder_traversal(root):

ifnotroot:

return[]

returninorder_traversal(root.left)+[root.val]+inorder_traversal(root.right)

解析:

-中序遍历顺序:左子树→根节点→右子树,适用于BST可按升序输出。

-递归实现简单直观,但深度过大可能栈溢出。

2.题目:

用C++实现快速排序(QuickSort)算法,输入一个整数数组,原地排序。

答案:

cpp

includevector

voidquickSort(std::vectorintnums,intleft,intright){

if(left=right)return;

intpivot=nums[left+(right-left)/2];

inti=left,j=right;

while(i=j){

while(nums[i]pivot)i++;

while(nums[j]pivot)j--;

if(i=j){

std::swap(nums[i],nums[j]);

i++,j--;

}

}

quickSort(nums,left,j);

quickSort(nums,i,right);

}

解析:

-选择中位数作为基准(pivot),分割数组。

-递归排序左右子区间。

-时间复杂度O(nlogn),最坏O(n^2)。

3.题目:

用Java实现一个LRU(LeastRecentlyUsed)缓存的数据结构,支持`get(key)`和`put(key,value)`操作

文档评论(0)

1亿VIP精品文档

相关文档