- 0
- 0
- 约5.49千字
- 约 15页
- 2026-03-16 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年华为公司招聘工程师面试题及答案解析
一、编程基础题(共3题,每题10分,总分30分)
1.编程题:编写一个函数,实现快速排序算法。输入一个整数数组,输出排序后的数组。
2.编程题:给定一个字符串,判断该字符串是否是回文串。如果是,返回`true`;否则返回`false`。
3.编程题:编写一个函数,计算一个链表的中间节点。假设链表长度为奇数,返回中间节点;如果长度为偶数,返回中间两个节点的后一个节点。
二、算法设计题(共2题,每题15分,总分30分)
1.算法设计题:设计一个算法,找出数组中和最大的三个数。例如,输入`[1,2,3,4,5]`,输出`[3,4,5]`。
2.算法设计题:设计一个算法,实现二分查找。输入一个有序数组和一个目标值,返回目标值的索引;如果目标值不存在,返回`-1`。
三、数据库题(共2题,每题10分,总分20分)
1.数据库题:编写SQL查询语句,从`employees`表中查询出每个部门的平均工资。假设表结构如下:
sql
CREATETABLEemployees(
idINTPRIMARYKEY,
nameVARCHAR(50),
departmentVARCHAR(50),
salaryDECIMAL(10,2)
);
2.数据库题:编写SQL查询语句,从`students`表中查询出年龄大于18岁的学生名单。假设表结构如下:
sql
CREATETABLEstudents(
idINTPRIMARYKEY,
nameVARCHAR(50),
ageINT
);
四、网络编程题(共2题,每题15分,总分30分)
1.网络编程题:简述TCP和UDP协议的区别,并说明在哪些场景下使用TCP协议更合适,哪些场景下使用UDP协议更合适。
2.网络编程题:编写一个简单的HTTP服务器,实现返回一个固定的字符串Hello,World!。
五、系统设计题(共1题,25分)
1.系统设计题:设计一个简单的短链接系统。用户输入一个长链接,系统返回一个短链接,点击短链接后跳转到长链接。要求说明系统的主要模块、数据存储方式、API设计等。
答案及解析
一、编程基础题(共3题,每题10分,总分30分)
1.编程题:编写一个函数,实现快速排序算法。输入一个整数数组,输出排序后的数组。
答案:
python
defquick_sort(arr):
iflen(arr)=1:
returnarr
pivot=arr[len(arr)//2]
left=[xforxinarrifxpivot]
middle=[xforxinarrifx==pivot]
right=[xforxinarrifxpivot]
returnquick_sort(left)+middle+quick_sort(right)
解析:快速排序是一种分治算法,通过选择一个基准值(pivot),将数组分为三部分:小于基准值的、等于基准值的、大于基准值的。然后对小于和大于基准值的部分递归进行快速排序。时间复杂度为O(nlogn),空间复杂度为O(logn)。
2.编程题:给定一个字符串,判断该字符串是否是回文串。如果是,返回`true`;否则返回`false`。
答案:
python
defis_palindrome(s):
returns==s[::-1]
解析:回文串是指正读和反读都相同的字符串。可以通过将字符串反转后比较是否与原字符串相同来判断。时间复杂度为O(n),空间复杂度为O(n)。
3.编程题:编写一个函数,计算一个链表的中间节点。假设链表长度为奇数,返回中间节点;如果长度为偶数,返回中间两个节点的后一个节点。
答案:
python
classListNode:
def__init__(self,val=0,next=None):
self.val=val
self.next=next
deffind_middle_node(head):
slow=fast=head
whilefastandfast.next:
slow=slow.next
fast=fast.next.next
returnslow
解析:使用快慢指针法。快指针每次移动两步,慢指针每次移动一步。当快指针到达链表末尾时,慢指针就到达中间节点。时间复杂度为O(n),空间复杂度为O(1)。
二、算法设计题(共2题,每题15分,总分30分)
1.算法设计题:设计一个算法,找出数组中和最大的三个数。例如,输入`[1,
原创力文档

文档评论(0)