2026年软件工程师面试题及编程题解析_第1页
2026年软件工程师面试题及编程题解析_第2页
2026年软件工程师面试题及编程题解析_第3页
2026年软件工程师面试题及编程题解析_第4页
2026年软件工程师面试题及编程题解析_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年软件工程师面试题及编程题解析一、编程题(共4题,总分40分)题目1(10分):字符串处理——最长回文子串题目描述:给定一个字符串`s`,请找出其中最长的回文子串的长度。回文子串是指正读和反读都相同的子串。示例:输入:`s="babad"`输出:`3`(最长回文子串为"bab"或"aba")参考代码(Python):pythondeflongest_palindrome(s:str)->int:ifnots:return0n=len(s)dp=[[False]nfor_inrange(n)]max_len=1foriinrange(n):dp[i][i]=Trueforiinrange(n-1,-1,-1):forjinrange(i+1,n):ifs[i]==s[j]:ifj-i<=2:dp[i][j]=Trueelse:dp[i][j]=dp[i+1][j-1]ifdp[i][j]:max_len=max(max_len,j-i+1)returnmax_len答案解析:1.动态规划思路:使用二维数组`dp[i][j]`表示子串`s[i:j+1]`是否为回文。2.初始化:单个字符一定是回文,`dp[i][i]=True`。3.状态转移:当`s[i]==s[j]`时,若`j-i<=2`(即相邻或相同字符),直接为回文;否则需检查`dp[i+1][j-1]`。4.结果:遍历所有子串,记录最长回文子串的长度。题目2(10分):算法设计——TopKFrequentWords题目描述:给定一个字符串数组`words`和一个整数`k`,返回词频最高的`k`个单词。如果有词频相同,按字母顺序排序。示例:输入:`words=["i","love","leetcode","i","love","coding"],k=2`输出:`["i","love"]`参考代码(Java):javaimportjava.util.;publicclassTopKFrequentWords{publicList<String>topKFrequent(String[]words,intk){Map<String,Integer>countMap=newHashMap<>();for(Stringword:words){countMap.put(word,countMap.getOrDefault(word,0)+1);}PriorityQueue<Map.Entry<String,Integer>>heap=newPriorityQueue<>((a,b)->a.getValue()!=b.getValue()?b.getValue()-a.getValue():a.getKey().compareTo(b.getKey()));for(Map.Entry<String,Integer>entry:countMap.entrySet()){heap.offer(entry);if(heap.size()>k){heap.poll();}}List<String>result=newArrayList<>();while(!heap.isEmpty()){result.add(heap.poll().getKey());}Collections.reverse(result);returnresult;}}答案解析:1.统计词频:使用哈希表记录每个单词的出现次数。2.小顶堆维护TopK:堆中存储`k`个元素,新元素若更大则替换,保持堆大小为`k`。3.排序规则:词频相同则按字母顺序(字典序)排序。4.结果:堆中元素按倒序输出(需反转)。题目3(10分):数据结构——二叉树遍历优化题目描述:给定一个二叉树,返回其前序遍历(根-左-右)。要求不使用递归,且空间复杂度尽可能低。示例:输入:`[1,2,3]`(二叉树结构为:1/\23)输出:`[1,2,3]`参考代码(JavaScript):javascriptfunctionpreorderTraversal(root){if(!root)return[];conststack=[root];constresult=[];while(stack.length){constnode=stack.pop();result.push(node.val);if(node.right)stack.push(node.right);if(node.left)stack.push(node.left);}returnresult;}答案解析:1.迭代思路:使用栈模拟递归过程。2.顺序:先处理右子节点(后进栈),确保左子节点先被访问。3.空间复杂度:O(h),其中`h`为树的高度。题目4(10分):系统设计——LRU缓存实现题目描述:设计LRU(LeastRecentlyUsed)缓存,支持`get`和`put`操作。缓存容量为`capacity`,超出容量时淘汰最久未使用项。示例:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache=OrderedDict()defget(self,key:int)->int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)returnself.cache[key]defput(self,key:int,value:int)->None:ifkeyinself.cache:self.cache.move_to_end(key)self.cache[key]=valueiflen(self.cache)>self.capacity:self.cache.popitem(last=False)答案解析:1.数据结构:使用`OrderedDict`维护访问顺序。2.`get`操作:若存在,移动到末尾(标记为最近使用)。3.`put`操作:若存在则更新,否则添加;超出容量时删除最左侧(最早访问)。4.复杂度:O(1)时间复杂度。二、选择题(共6题,总分20分)题目1(3分):算法复杂度题目:以下哪个算法的平均时间复杂度最低?A.快速排序B.堆排序C.冒泡排序D.插入排序答案:B解析:堆排序平均为O(nlogn),快速排序和归并排序也为O(nlogn),但堆排序最稳定;其他为O(n²)。题目2(3分):数据库索引题目:以下哪种索引适合高基数(唯一值多)的列?A.哈希索引B.B+树索引C.全文索引D.范围索引答案:B解析:B+树索引支持范围查询和高基数列;哈希索引不支持范围查询;全文索引用于文本分词。题目3(3分):分布式系统题目:CAP理论中,以下哪个选项不属于三大特性?A.一致性(Consistency)B.可用性(Availability)C.分区容错性(PartitionTolerance)D.可扩展性(Scalability)答案:D解析:CAP理论包括一致性、可用性和分区容错性。可扩展性是设计目标,非理论本身。题目4(3分):前端性能优化题目:以下哪个方法不能减少页面加载时间?A.CDN加速B.图片懒加载C.JavaScript代码拆分D.动态渲染HTML答案:D解析:动态渲染HTML会增加首屏加载时间;其他方法均能优化加载。题目5(4分):网络安全题目:以下哪种攻击利用了会话固定漏洞?A.SQL注入B.XSS跨站脚本C.中间人攻击D.会话固定攻击答案:D解析:会话固定攻击指攻击者控制用户会话ID。其他攻击类型不同。题目6(4分):设计模式题目:以下哪个模式强调“单一职责原则”?A.工厂模式B.观察者模式C.单例模式D.组合模式答案:A解析:工厂模式分离创建逻辑;单一职责原则由依赖注入实现。三、简答题(共4题,总分20分)题目1(5分):分布式事务题目:请简述分布式事务的常见解决方案及其优缺点。答案:1.2PC(两阶段提交):强一致性,但阻塞性能差。2.TCC(补偿事务):柔性一致性,实现复杂。3.Saga模式:通过本地事务+补偿实现,扩展性好。4.本地消息表:异步最终一致性,适合高可用场景。题目2(5分):缓存雪崩题目:如何防止缓存雪崩?答案:1.缓存预热:提前加载热点数据。2.互斥锁/分布式锁:避免缓存失效时大量请求数据库。3.设置缓存过期时间:避免集中过期。4.多级缓存:如Redis+本地缓存。题目3(5分):JW

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论