- 0
- 0
- 约5.78千字
- 约 18页
- 2026-01-28 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件工程师岗位面试题目分析
一、编程语言基础(5题,每题6分,共30分)
地域/行业针对性:互联网(北京/上海)、金融科技(深圳/杭州)
1.Java
编写一个Java方法,实现字符串反转,但不能使用内置的`reverse()`方法,要求时间复杂度为O(n)。
java
publicStringreverseString(Strings){
char[]arr=s.toCharArray();
intleft=0,right=arr.length-1;
while(leftright){
chartemp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
returnnewString(arr);
}
解析:双指针法,空间复杂度O(1),时间复杂度O(n)。
2.Python
实现一个函数,判断一个整数是否为完全平方数(例如,16是,14不是)。
python
defisPerfectSquare(num):
left,right=0,num
whileleft=right:
mid=(left+right)//2
ifmidmid==num:
returnTrue
elifmidmidnum:
left=mid+1
else:
right=mid-1
returnFalse
解析:二分查找法,时间复杂度O(logn),避免直接开方导致浮点误差。
3.C++
编写一个C++函数,实现快速排序的递归实现,要求不使用库函数。
cpp
voidquickSort(intarr[],intleft,intright){
if(left=right)return;
intpivot=arr[right];
inti=left-1;
for(intj=left;jright;j++){
if(arr[j]=pivot){
i++;
swap(arr[i],arr[j]);
}
}
swap(arr[i+1],arr[right]);
quickSort(arr,left,i);
quickSort(arr,i+2,right);
}
解析:分治思想,平均时间复杂度O(nlogn),注意边界条件。
4.JavaScript
实现一个函数,找出数组中所有唯一的数字(数组中其他数字出现两次,只有一个数字出现一次)。
javascript
functionsingleNumber(nums){
letunique=0;
for(letnumofnums){
unique^=num;
}
returnunique;
}
解析:异或运算特性,a^a=0,a^0=a,时间复杂度O(n)。
5.Go
编写一个Go函数,计算一个链表的中间节点(假设链表长度为奇数)。
go
funcmiddleNode(headListNode)ListNode{
slow,fast:=head,head
forfast!=nilfast.Next!=nil{
slow=slow.Next
fast=fast.Next.Next
}
returnslow
}
解析:快慢指针法,时间复杂度O(n),空间复杂度O(1)。
二、系统设计(3题,每题10分,共30分)
地域/行业针对性:北京/上海(高并发系统)、深圳(金融风控)
1.设计一个短链接系统(如tinyURL)
要求:
-支持高并发访问。
-链接生成唯一且可逆。
-支持分布式部署。
解答思路:
-分布式ID生成器:使用Snowflake算法(41位时间戳+10位机器标识+12位序列号)。
-数据库设计:
sql
CREATETABLEurl_mapping(
short_idVARCHAR(6)PRIMARYKEY,
long_urlVARCHAR(2048)NOTNULL,
created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP
);
-缓存层:Redis缓存短链接到长链接,减少数据库查询。
-负载均衡:Nginx分发请求到多个后端服务。
解析:关键在于ID唯一性和性能,分布式ID解决高并发问题,缓存层提升响应速度。
2.设计一个实时消息推送系统(如微信通知)
要求:
-支持百
原创力文档

文档评论(0)