人工智能工程师实习面试题及答案.docxVIP

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

第PAGE页共NUMPAGES页

2026年人工智能工程师实习面试题及答案

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

1.编写一个Python函数,实现快速排序算法,并对以下列表进行排序:[3,6,8,10,1,2,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)

测试

arr=[3,6,8,10,1,2,1]

sorted_arr=quick_sort(arr)

print(sorted_arr)#输出:[1,1,2,3,6,8,10]

解析:快速排序的核心是选择一个基准值(pivot),将数组分为小于、等于、大于基准值的三部分,然后递归地对小于和大于基准值的部分进行排序。上述代码使用列表推导式实现分割,简洁高效。

2.编写一个Java方法,实现二分查找算法,查找整数数组中是否存在目标值,若存在则返回索引,否则返回-1。

答案:

java

publicclassBinarySearch{

publicstaticintbinarySearch(int[]arr,inttarget){

intleft=0;

intright=arr.length-1;

while(left=right){

intmid=left+(right-left)/2;

if(arr[mid]==target){

returnmid;

}elseif(arr[mid]target){

left=mid+1;

}else{

right=mid-1;

}

}

return-1;

}

publicstaticvoidmain(String[]args){

int[]arr={1,2,3,6,8,10};

inttarget=6;

intresult=binarySearch(arr,target);

System.out.println(result);//输出:3

}

}

解析:二分查找适用于有序数组,通过不断缩小查找范围来定位目标值。每次将数组分为两半,比较中间值与目标值,若相等则返回索引,否则根据大小关系调整查找范围。

3.编写一个C++函数,实现字符串反转,输入:Hello,World!,输出:!dlroW,olleH。

答案:

cpp

includeiostream

includestring

usingnamespacestd;

stringreverseString(conststrings){

stringreversed=s;

intn=s.length();

for(inti=0;in/2;++i){

swap(reversed[i],reversed[n-1-i]);

}

returnreversed;

}

intmain(){

stringinput=Hello,World!;

stringoutput=reverseString(input);

coutoutput;//输出:!dlroW,olleH

return0;

}

解析:字符串反转可以通过交换首尾字符实现。从字符串两端开始,逐个交换对称位置的字符,直到中间位置,时间复杂度为O(n/2),即O(n)。

4.编写一个Python函数,实现合并两个有序链表,合并后的链表保持有序。

答案:

python

classListNode:

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

self.val=val

self.next=next

defmergeTwoLists(l1,l2):

dummy=ListNode(0)

current=dummy

whilel1andl2:

ifl1.vall2.val:

current.next=l1

l1=l1.next

else:

current.next=l2

l2=l2.ne

文档评论(0)

1亿VIP精品文档

相关文档