- 0
- 0
- 约4.34千字
- 约 14页
- 2026-02-02 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年工程师面试常见问题与参考答案速查
一、编程语言与基础算法(共5题,每题8分,总分40分)
1.题目:
请用Python实现一个函数,输入一个非负整数n,返回其二进制表示中1的个数。例如,输入5(二进制为101),返回2。
参考答案:
python
defcount_bits(n):
count=0
whilen:
count+=n1
n=1
returncount
解析:
该方法利用位运算,通过不断与1进行AND操作并右移,统计1的个数。时间复杂度为O(logn),适合大数处理。
2.题目:
给定一个字符串s,判断它是否是回文串(忽略大小写和非字母字符)。例如,输入Aman,aplan,acanal:Panama,返回True。
参考答案:
python
defis_palindrome(s):
left,right=0,len(s)-1
whileleftright:
whileleftrightandnots[left].isalnum():
left+=1
whileleftrightandnots[right].isalnum():
right-=1
ifs[left].lower()!=s[right].lower():
returnFalse
left,right=left+1,right-1
returnTrue
解析:
双指针法从两端向中间遍历,跳过非字母字符并忽略大小写,时间复杂度O(n)。
3.题目:
用Java实现快速排序算法,并说明其时间复杂度。
参考答案:
java
publicvoidquickSort(int[]arr,intleft,intright){
if(left=right)return;
intpivot=arr[left+(right-left)/2];
inti=left,j=right;
while(i=j){
while(arr[i]pivot)i++;
while(arr[j]pivot)j--;
if(i=j){
swap(arr,i,j);
i++;
j--;
}
}
quickSort(arr,left,j);
quickSort(arr,i,right);
}
privatevoidswap(int[]arr,inti,intj){
inttemp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
解析:
快速排序平均时间复杂度O(nlogn),最坏O(n2),通过选择枢轴分区实现。
4.题目:
请解释什么是“线程池”,并说明其优缺点。
参考答案:
线程池复用已创建的线程,避免频繁创建销毁开销。优点:减少资源消耗、提高响应速度、便于管理。缺点:可能导致线程过多(OOM)、任务阻塞。
5.题目:
给定一个链表,删除其中的重复元素,使每个元素只出现一次。例如,输入1-1-2-3-3,返回1-2-3。
参考答案:
python
defdelete_duplicates(head):
current=head
whilecurrent:
whilecurrent.nextandcurrent.val==current.next.val:
current.next=current.next.next
current=current.next
returnhead
解析:
快慢指针法,当前节点与next相同则跳过,时间复杂度O(n)。
二、系统设计与架构(共4题,每题10分,总分40分)
1.题目:
设计一个高并发的短链接系统(如tinyURL),要求支持秒级生成和查询。
参考答案:
-存储:Redis(高速缓存)+数据库(持久化)
-生成:映射表(如hash(url)-6位短码)
-查询:先查缓存,未命中再查数据库
-扩容:哈希槽分布式部署
解析:
结合缓存与分布式存储,牺牲少量可用性换取高性能。
2.题目:
如何设计一个高可用的分布式计数器?
参考答案:
-方案:Redis原子自增(单key)或Zookeeper/Consul
-扩容:分片(如hashmodN)+节点间同步
-容灾:多副本部署+Leader选举
解析:
利用原子操作避免并发冲突,分片可横向扩展。
3.题目:
设计一个微博实时推送系统(如Twitter),要求低延迟、高吞吐。
参考答案:
-架构:
-
原创力文档

文档评论(0)