- 1
- 0
- 约4.62千字
- 约 15页
- 2026-02-19 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件工程师岗位面试题及解析
一、编程语言基础(5题,每题10分,共50分)
地域/行业针对性:互联网、金融科技
要求:考察Java/Python/Go语言核心概念及实际应用
1.题目:
java
publicclassTest{
publicstaticvoidmain(String[]args){
inta=0;
Integerb=null;
intc=a+b;//会抛出什么异常?如何避免?
}
}
答案:
会抛出`NullPointerException`,因为`b`为`null`,调用`null`的`intValue()`方法会导致异常。
解析:
-Java中的基本类型(如`int`)无法直接与包装类(如`Integer`)进行运算,必须先拆箱。
-`null`的包装类实例在拆箱时会抛`NullPointerException`。
-解决方案:
1.增加`null`判断(如`b!=null`);
2.使用默认值(如`intc=(b!=null)?b:0;`);
3.使用`OptionalInteger`(Java8+)避免空指针风险。
2.题目:
Python代码:
python
deffactorial(n):
ifn==0:
return1
returnnfactorial(n-1)
写出该递归函数的时间复杂度和空间复杂度,并优化为迭代版本。
答案:
-时间复杂度:O(n),每层递归调用一次;
-空间复杂度:O(n),调用栈深度为n;
-迭代优化:
python
deffactorial_iterative(n):
result=1
foriinrange(1,n+1):
result=i
returnresult
解析:
递归版本在大型输入(如`n=10000`)时可能栈溢出。迭代版本仅使用O(1)额外空间,更高效。
3.题目:
Go语言中,如何声明一个带默认值的切片?如果切片长度为0,访问元素会发生什么?
答案:
声明带默认值切片:
go
a:=make([]int,0,5)//长度0,容量5
fori:=0;i5;i++{
a=append(a,i)//手动填充
}
访问元素:会报`panic:runtimeerror:indexoutofrange`。
解析:
-Go切片的长度和容量是不同的,长度为0的切片不能访问元素;
-使用`append`动态扩容时需注意内存分配。
4.题目:
Java中的`volatile`关键字有什么作用?与`synchronized`的区别是什么?
答案:
-`volatile`:
1.保证可见性(写操作后,其他线程立即可见);
2.禁止指令重排序;
3.不保证原子性(如`a++`仍需加锁);
-区别:
-`volatile`适用于轻量级同步(单变量读写);
-`synchronized`是互斥锁,支持原子操作(如`i++`),但性能开销大。
解析:
金融交易场景中,`volatile`常用于计数器等无并发修改场景;复杂业务需`ReentrantLock`。
5.题目:
Python中的`args`和`kwargs`如何使用?举例说明在函数中如何传递可变参数。
答案:
python
deffunc(args,kwargs):
print(args:,args)#(a,b,c)
print(kwargs:,kwargs)#{x:10,y:20}
func(a,b,c,x=10,y=20)
解析:
-`args`接收元组参数;
-`kwargs`接收字典参数;
-适用于参数数量不确定的场景(如日志记录、数据解析)。
二、数据结构与算法(5题,每题10分,共50分)
地域/行业针对性:大数据、高并发
要求:考察常见算法及复杂度分析
1.题目:
实现快速排序(QuickSort),并说明其时间复杂度在最坏、平均、最好情况下的表现。
答案:
python
defquick_sort(arr):
iflen(arr)=1:
returnarr
pivot=arr[len(arr)//2]
left=[xforxinarrifxpivot]
middle=[xforxinarrifx==pivot]
right=[xforxinarrifxpivot]
returnquick_sort(left)+
原创力文档

文档评论(0)