- 0
- 0
- 约6.52千字
- 约 19页
- 2026-01-31 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年IT工程师岗位技术面试题及答案
一、编程语言与基础算法(共5题,每题10分)
1.题目(10分):
请用Python实现一个函数,输入一个正整数`n`,返回其阶乘值。要求使用递归和非递归两种方式实现,并分析时间复杂度差异。
答案:
python
递归方式
deffactorial_recursive(n):
ifn==0:
return1
returnnfactorial_recursive(n-1)
非递归方式
deffactorial_iterative(n):
result=1
foriinrange(2,n+1):
result=i
returnresult
解析:
-递归方式:时间复杂度为`O(n)`,空间复杂度为`O(n)`(调用栈深度)。适合小规模`n`,但`n`过大时可能栈溢出。
-非递归方式:时间复杂度仍为`O(n)`,空间复杂度为`O(1)`(无额外栈空间)。更适合大规模计算。
2.题目(10分):
给定一个字符串`s`,请实现一个函数,返回其中不重复字符的最长子串长度。例如,输入`abcabcbb`,输出`3`(abc)。
答案:
python
deflength_of_longest_substring(s):
char_set=set()
left=0
max_length=0
forrightinrange(len(s)):
whiles[right]inchar_set:
char_set.remove(s[left])
left+=1
char_set.add(s[right])
max_length=max(max_length,right-left+1)
returnmax_length
解析:
使用滑动窗口技术,`left`和`right`分别表示窗口的左右边界。遍历时,若`right`字符已存在窗口中,则移动`left`直到去重。时间复杂度为`O(n)`,空间复杂度为`O(min(m,n))`(`m`为字符集大小)。
3.题目(10分):
请实现快速排序算法,并说明其工作原理及稳定性问题。
答案:
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`,将数组分为`pivot`、`==pivot`、`pivot`三部分,递归排序左右子数组。
-稳定性问题:快速排序为不稳定性排序,因相等的元素可能因分区规则改变相对顺序。实际应用中可改用归并排序。
4.题目(10分):
请解释什么是“时间复杂度”和“空间复杂度”,并比较`O(n^2)`与`O(logn)`的适用场景。
答案:
-时间复杂度:描述算法执行时间随输入规模增长的变化趋势,如`O(n)`表示线性增长。
-空间复杂度:描述算法所需额外存储空间随输入规模增长的变化趋势。
-适用场景:
-`O(n^2)`:适用于小规模数据或计算资源充足场景(如简单排序)。
-`O(logn)`:适用于大规模数据或内存受限场景(如二分查找)。
5.题目(10分):
给定一个链表,请实现反转链表的函数。假设链表节点定义如下:
python
classListNode:
def__init__(self,val=0,next=None):
self.val=val
self.next=next
答案:
python
defreverse_list(head):
prev=None
current=head
whilecurrent:
next_node=current.next
current.next=prev
prev=current
current=next_node
returnprev
解析:
通过迭代反转每个节点的`next`指针,维护`prev`、`current`指针。时间复杂度`O(n)`,空间复杂度`O(1)`。
二、数据库与SQL(共4题,每题10分)
1.题目(10分):
请写出SQL语句,查询`employees`表中工资高
原创力文档

文档评论(0)