- 1
- 0
- 约5.89千字
- 约 19页
- 2026-02-09 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件开发工程师面试常见问题解答
一、编程语言基础(5题,每题2分,共10分)
地域/行业针对性:大中华区互联网企业,侧重Java和Python应用
1.题目:
在Java中,以下代码段输出什么结果?并解释原因。
java
Stringstr1=abc;
Stringstr2=newString(abc);
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
答案:
输出:
`false`
`true`
解析:
-`str1==str2`输出`false`,因为`==`比较的是对象引用,`str1`指向字符串常量池中的`abc`,而`str2`是通过`new`创建的新对象,存储在堆中。
-`str1.equals(str2)`输出`true`,因为`equals()`方法比较字符串内容,两者内容相同。
2.题目:
Python中,如何高效地删除列表中的重复元素,并保持原有顺序?请给出代码示例。
答案:
python
defremove_duplicates(lst):
seen=set()
result=[]
foriteminlst:
ifitemnotinseen:
seen.add(item)
result.append(item)
returnresult
示例
print(remove_duplicates([1,2,2,3,1]))#输出[1,2,3]
解析:
通过集合`seen`记录已出现元素,确保顺序的同时避免重复。时间复杂度为O(n)。
3.题目:
Java中,简述`volatile`关键字的作用,并说明它与`synchronized`的区别。
答案:
-`volatile`保证变量可见性和有序性,但不保证原子性。
-与`synchronized`对比:
-`volatile`更轻量,仅影响内存可见性;`synchronized`是互斥锁,涉及线程阻塞。
-`volatile`不能替代`synchronized`解决多线程状态问题(如计数器)。
4.题目:
Python中,解释装饰器的原理,并给出一个限制函数执行时间的示例。
答案:
python
deftime_limit(seconds):
defdecorator(func):
defwrapper(args,kwargs):
importtime
start=time.time()
result=func(args,kwargs)
iftime.time()-startseconds:
raiseException(执行超时)
returnresult
returnwrapper
@time_limit(2)
deftest():
importtime
time.sleep(3)
print(完成)
test()#抛出异常
解析:
装饰器本质是高阶函数,`wrapper`捕获原函数执行时间。
5.题目:
Java中,`ArrayList`和`LinkedList`的主要区别是什么?在什么场景下优先选择哪个?
答案:
-`ArrayList`基于数组,随机访问快(O(1)),但插入/删除慢(O(n))。
-`LinkedList`基于链表,插入/删除快(O(1)),随机访问慢(O(n))。
-场景:
-高频随机读取选`ArrayList`;
-高频插入/删除选`LinkedList`。
二、数据结构与算法(6题,每题3分,共18分)
地域/行业针对性:阿里、腾讯等大厂,侧重高并发场景
1.题目:
实现快速排序算法,并说明其时间复杂度和稳定性。
答案:
java
publicstaticvoidquickSort(int[]arr,intleft,intright){
if(left=right)return;
intpivot=arr[left];
inti=left,j=right;
while(ij){
while(ijarr[j]=pivot)j--;
if(ij)arr[i++]=arr[j];
while(ijarr[i]=pivot)i++;
if(ij)arr[j--]=arr[i];
}
arr[i]=pivot;
quickSort(arr,left,i-
原创力文档

文档评论(0)