海尔集团技术部门面试问题及答案.docxVIP

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

第PAGE页共NUMPAGES页

2026年海尔集团技术部门面试问题及答案

一、编程能力测试(5题,每题10分,共50分)

1.题目:

请用Python编写一个函数,实现判断一个字符串是否为“回文串”。回文串是指正读和反读都相同的字符串,例如“madam”、“racecar”。

答案:

python

defis_palindrome(s:str)-bool:

returns==s[::-1]

解析:

通过字符串切片`[::-1]`可以快速反转字符串,然后与原字符串比较。时间复杂度为O(n),空间复杂度为O(n)。

2.题目:

请用Java实现一个方法,计算一个整数数组中的“最大子数组和”。例如,输入`[-2,1,-3,4,-1,2,1,-5,4]`,输出`6`(对应子数组`[4,-1,2,1]`)。

答案:

java

publicintmaxSubArray(int[]nums){

intmaxSum=nums[0];

intcurrentSum=nums[0];

for(inti=1;inums.length;i++){

currentSum=Math.max(nums[i],currentSum+nums[i]);

maxSum=Math.max(maxSum,currentSum);

}

returnmaxSum;

}

解析:

使用动态规划思想,维护两个变量:`currentSum`表示当前子数组的最大和,`maxSum`表示全局最大和。时间复杂度为O(n),空间复杂度为O(1)。

3.题目:

请用C++实现一个函数,反转一个单链表。假设链表节点定义如下:

cpp

structListNode{

intval;

ListNodenext;

ListNode(intx):val(x),next(nullptr){}

};

答案:

cpp

ListNodereverseList(ListNodehead){

ListNodeprev=nullptr;

ListNodecurrent=head;

while(current){

ListNodenext=current-next;

current-next=prev;

prev=current;

current=next;

}

returnprev;

}

解析:

通过迭代法反转链表,使用三个指针`prev`、`current`和`next`,时间复杂度为O(n),空间复杂度为O(1)。

4.题目:

请用Go语言实现一个快速排序算法,对整数切片进行排序。

答案:

go

funcquickSort(arr[]int)[]int{

iflen(arr)=1{

returnarr;

}

pivot:=arr[len(arr)/2];

left:=[]int{};

right:=[]int{};

for_,v:=rangearr{

ifvpivot{

left=append(left,v);

}elseifvpivot{

right=append(right,v);

}

}

returnappend(quickSort(left),append([]int{pivot},quickSort(right)...)...);

}

解析:

快速排序采用分治思想,选择基准值`pivot`,将数组分为小于和大于`pivot`的两部分,递归排序。时间复杂度为O(nlogn),最坏情况下为O(n2)。

5.题目:

请用JavaScript实现一个算法,找出数组中“第三大的数”。如果数组不足三个数,则返回最大的数。

答案:

javascript

functionthirdMax(nums){

letfirst=-Infinity,second=-Infinity,third=-Infinity;

for(letnumofnums){

if(numfirst){

third=second;

second=first;

first=num;

}elseif(numsecondnumfirst){

third=second;

second=num;

}elseif(numthirdnumsecond){

third=num;

}

}

returnthird!==-Infinity?third:first;

}

解析:

通过遍历数组,维护三个变量`first`、`s

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档