软件开发工程师面试题及代码示例含答案_第1页
软件开发工程师面试题及代码示例含答案_第2页
软件开发工程师面试题及代码示例含答案_第3页
软件开发工程师面试题及代码示例含答案_第4页
软件开发工程师面试题及代码示例含答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

2026年软件开发工程师面试题及代码示例含答案一、编程基础(5题,每题10分,共50分)题目1:编写一个函数,接收一个正整数`n`,返回`n`的阶乘。要求使用递归方式实现,并处理输入非正整数的情况。示例代码:pythondeffactorial(n):ifnotisinstance(n,int)orn<0:raiseValueError("输入必须为非负整数")ifn==0orn==1:return1returnnfactorial(n-1)测试print(factorial(5))#输出:120print(factorial(-1))#抛出异常题目2:实现一个函数,接收一个字符串`s`,返回`s`中所有唯一字符的列表(不区分大小写)。示例代码:pythondefunique_chars(s):returnlist(set(s.lower()))测试print(unique_chars("HelloWorld"))#输出:['h','e','l','o','w','r','d']题目3:给定一个数组`arr`,实现一个函数,返回一个新数组,其中包含所有大于前一个元素的值。示例代码:pythondefgreater_than_previous(arr):result=[]foriinrange(1,len(arr)):ifarr[i]>arr[i-1]:result.append(arr[i])returnresult测试print(greater_than_previous([1,2,2,3,4,1]))#输出:[2,3,4]题目4:编写一个函数,接收一个正整数`n`,返回一个包含所有斐波那契数列中小于等于`n`的数的列表。示例代码:pythondeffibonacci(n):ifn<=0:return[]a,b=0,1result=[]whilea<=n:result.append(a)a,b=b,a+breturnresult测试print(fibonacci(10))#输出:[0,1,1,2,3,5,8]题目5:实现一个函数,接收一个字符串`s`,返回`s`中所有单词的长度。假设单词之间由空格分隔。示例代码:pythondefword_lengths(s):return[len(word)forwordins.split()]测试print(word_lengths("Helloworld"))#输出:[5,5]二、数据结构与算法(5题,每题10分,共50分)题目6:使用栈实现一个函数,反转一个字符串。示例代码:pythondefreverse_string(s):stack=[]forcharins:stack.append(char)reversed_str=""whilestack:reversed_str+=stack.pop()returnreversed_str测试print(reverse_string("Hello"))#输出:"olleH"题目7:给定一个无重复元素的数组`arr`和一个目标值`target`,实现一个函数,返回所有和为`target`的数对。示例代码:pythondeftwo_sum(arr,target):result=[]seen={}fornuminarr:complement=target-numifcomplementinseen:result.append([complement,num])seen[num]=Truereturnresult测试print(two_sum([1,2,3,4,5],5))#输出:[[1,4],[2,3]]题目8:实现一个函数,检查一个字符串是否是回文(忽略大小写和空格)。示例代码:pythondefis_palindrome(s):s=''.join(s.lower().split())returns==s[::-1]测试print(is_palindrome("Aman,aplan,acanal:Panama"))#输出:True题目9:给定一个二叉树,实现一个函数,返回其层序遍历(广度优先)。示例代码:pythonfromcollectionsimportdequeclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdeflevel_order(root):ifnotroot:return[]result=[]queue=deque([root])whilequeue:level=[]for_inrange(len(queue)):node=queue.popleft()level.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)result.append(level)returnresult测试root=TreeNode(3,TreeNode(9),TreeNode(20,TreeNode(15),TreeNode(7)))print(level_order(root))#输出:[[3],[9,20],[15,7]]题目10:实现一个函数,合并两个有序数组,返回一个新数组。示例代码:pythondefmerge_sorted_arrays(arr1,arr2):result=[]i,j=0,0whilei<len(arr1)andj<len(arr2):ifarr1[i]<arr2[j]:result.append(arr1[i])i+=1else:result.append(arr2[j])j+=1result.extend(arr1[i:])result.extend(arr2[j:])returnresult测试print(merge_sorted_arrays([1,3,5],[2,4,6]))#输出:[1,2,3,4,5,6]三、系统设计(2题,每题25分,共50分)题目11:设计一个简单的短链接系统。用户输入长链接,系统返回短链接;访问短链接时,系统解析并重定向到长链接。要求:1.短链接应唯一且易于生成(如`/abc123`)。2.支持基本的缓存机制,避免重复生成相同的短链接。3.描述数据存储方案和核心算法。答案解析:1.数据存储方案:-使用哈希表(如Redis)存储`短链接->长链接`的映射。-使用自增ID或随机字符串生成短链接的前缀(如`abc123`)。2.核心算法:-生成短链接:-输入长链接时,生成唯一ID(如UUID或自增数字)。-将ID映射到短链接(如`/ID`)。-缓存`ID->长链接`的映射。-解析短链接:-获取短链接中的ID。-查询哈希表获取对应的长链接。-重定向到长链接。示例伪代码:python生成短链接defgenerate_short_link(long_url):id=generate_unique_id()short_link=f"/{id}"store_mapping(id,long_url)returnshort_link解析短链接defparse_short_link(short_link):id=extract_id(short_link)long_url=get_mapping(id)returnlong_url题目12:设计一个简单的消息队列系统,支持发布/订阅模式。要求:1.支持多个消费者订阅同一主题。2.发布者发布消息时,所有订阅者都能收到消息。3.描述核心数据结构和算法,以及如何处理消息丢失的情况。答案解析:1.核心数据结构:-使用哈希表存储`主题->订阅者列表`的映射。-每个订阅者维护一个待处理消息队列。2.核心算法:-订阅:-消费者向主题添加订阅。-发布:-发布者将消息发送到主题。-遍历所有订阅者,将消息推送到其队列。-消息丢失处理:-使用事务或确认机制(如ACK),确保消息被正确处理。示例伪代码:python订阅defsubscribe(topic,consumer):iftopicnotintopic_subscribers:topic_subscribers[topic]=[]topic_subs

温馨提示

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

最新文档

评论

0/150

提交评论