- 0
- 0
- 约6.56千字
- 约 19页
- 2026-02-13 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件开发面试题及参考答案
一、编程语言基础(5题,每题2分)
1.题目(2分):
请用Python编写一个函数,接收一个字符串列表,返回所有包含重复字符的字符串。
参考答案:
python
deffind_duplicate_strings(strings):
result=[]
forsinstrings:
seen=set()
forcharins:
ifcharinseen:
result.append(s)
break
seen.add(char)
returnresult
示例用法
print(find_duplicate_strings([abc,aab,xyz,aabb]))#输出:[aab,aabb]
解析:
通过遍历每个字符串,使用集合记录已出现字符。若字符重复,则添加到结果列表。时间复杂度为O(nm),n为字符串数量,m为字符串平均长度。
2.题目(2分):
解释Java中的`volatile`关键字的作用,并说明它与`synchronized`的区别。
参考答案:
`volatile`关键字确保变量的可见性和有序性,但不保证原子性。
-可见性:线程修改volatile变量后,其他线程立即可见。
-有序性:禁止指令重排序,但仅对volatile变量相关指令有效。
`synchronized`是悲观锁,通过`monitorenter`/`monitorexit`实现原子性、可见性和有序性。
-原子性:保证代码块内操作完整执行。
-可见性:释放锁时自动刷新工作内存。
区别:`volatile`轻量级(性能高),仅保证可见性和有序性;`synchronized`重量级(性能低),保证原子性、可见性和有序性。
3.题目(2分):
C++中,`std::unique_ptr`和`std::shared_ptr`的区别是什么?适用场景有哪些?
参考答案:
-`std::unique_ptr`:独占所有权,只能有一个`unique_ptr`管理资源,自动释放。
-适用于:资源独占场景(如设备句柄)。
-`std::shared_ptr`:引用计数,多个`shared_ptr`可管理同一资源。
-适用于:资源需被多对象共享的场景(如配置管理)。
区别:`unique_ptr`无法复制,`shared_ptr`可拷贝。性能上,`unique_ptr`更高效。
4.题目(2分):
Go语言中的`defer`语句如何工作?请举例说明。
参考答案:
`defer`语句延迟执行,即使在函数返回前也会执行。按后进先出(LIFO)顺序执行。
go
funcmain(){
deferfmt.Println(A)//最后执行
deferfmt.Println(B)//次后执行
fmt.Println(C)//最先执行
}
//输出:CBA
适用于资源释放(如文件关闭、锁释放)。
5.题目(2分):
JavaScript中,`Promise`的`finally`方法有什么用?与`then`的区别?
参考答案:
`finally`无论`Promise`成功或失败都会执行,用于清理操作(如关闭网络请求)。
`then`用于处理成功或失败结果:
javascript
newPromise((resolve,reject)={
//...
})
.then(result=console.log(成功:,result))
.catch(err=console.error(失败:,err))
.finally(()=console.log(清理));
区别:`finally`无返回值,`then`可链式处理结果。
二、数据结构与算法(5题,每题3分)
1.题目(3分):
请实现快速排序算法,并说明其时间复杂度。
参考答案:
python
defquicksort(arr):
iflen(arr)=1:
returnarr
pivot=arr[len(arr)//2]
left=[xforxinarrifxpivot]
middle=[xforxinarrifx==pivot]
right=[xforxinarrifxpivot]
returnquicksort(left)+middle+quicksort(right)
示例用法
print(quicksort([3,6,2,7,1]))#输出:[1,2,3,6,7]
时间复杂度:平均O(nlo
原创力文档

文档评论(0)