- 0
- 0
- 约5.4千字
- 约 15页
- 2026-01-04 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年程序员培训师招聘面试题含答案
一、编程基础与算法(共5题,每题10分,总分50分)
1.题目:
请编写一个函数,实现快速排序算法,并对以下数组进行排序:`[12,4,5,23,1,45,8,16]`。要求说明快速排序的核心思想,并分析其时间复杂度。
答案:
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=[12,4,5,23,1,45,8,16]
sorted_arr=quick_sort(arr)
print(sorted_arr)
解析:
快速排序的核心思想是分治法,通过选择一个基准值(pivot),将数组分成三部分:小于基准值的、等于基准值的、大于基准值的,然后递归地对左右两部分进行排序。平均时间复杂度为O(nlogn),最坏情况下为O(n2)(当基准值选择不均匀时)。在程序员培训中,快速排序是讲解分治算法的经典案例,适合考察候选人对基础算法的理解和编码能力。
2.题目:
编写一个函数,检查一个字符串是否是回文(正读和反读相同),例如输入`madam`,返回`True`;输入`hello`,返回`False`。
答案:
python
defis_palindrome(s):
returns==s[::-1]
print(is_palindrome(madam))#True
print(is_palindrome(hello))#False
解析:
回文判断可以通过字符串反转或双指针法实现。以上代码利用Python的切片功能简化了反转操作。在培训中,此题可拓展到正则表达式处理、大小写敏感性问题等进阶讨论。
3.题目:
给定一个无重复元素的数组`arr`和一个目标值`target`,请编写函数返回`target`在数组中的所有索引。例如:`arr=[1,2,3,4,5]`,`target=3`,返回`[2]`。
答案:
python
deffind_target_indices(arr,target):
return[ifori,xinenumerate(arr)ifx==target]
arr=[1,2,3,4,5]
target=3
print(find_target_indices(arr,target))#[2]
解析:
此题考察基础的列表遍历和条件判断。在培训中可引导候选人对数组和字典实现方式进行对比,例如用字典优化查找效率至O(1)。对地域性培训(如中国IT行业),可结合大数据场景讲解效率优化的重要性。
4.题目:
请实现一个函数,计算斐波那契数列的第n项(n=1)。要求不使用递归,并分析时间复杂度。
答案:
python
deffibonacci(n):
a,b=0,1
for_inrange(n-1):
a,b=b,a+b
returnb
print(fibonacci(10))#55
解析:
迭代法计算斐波那契数列时间复杂度为O(n),空间复杂度为O(1)。适合讲解动态规划思想。在中国程序员培训市场,此类问题常与面试高频题结合,帮助学员掌握算法优化技巧。
5.题目:
编写一个函数,找出数组中的重复数字,要求空间复杂度为O(1)。例如输入`[1,2,3,2,4]`,返回`[2]`。
答案:
python
deffind_duplicates(arr):
duplicates=[]
fornuminarr:
index=abs(num)-1
ifarr[index]0:
duplicates.append(abs(num))
arr[index]=-arr[index]
returnduplicates
arr=[1,2,3,2,4]
print(find_duplicates(arr))#[2]
解析:
此题利用数组索引和负数标记法实现,空间复杂度O(1),时间复杂度O(n)。适合讲解原地算法技巧。在地域性培训(如珠三角IT企业)中,此类题目因考察底层思维而受青睐。
二、
原创力文档

文档评论(0)