版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年软件开发工程师面试题及代码实例含答案一、编程语言基础(3题,每题10分,共30分)题目1(Java基础)请编写一个Java方法,实现将一个字符串中的所有大写字母转换为小写字母,所有小写字母转换为大写字母,其他字符保持不变。例如,输入`"HelloWorld!"`,输出`"hELLOwORLD!"`。javapublicclassCaseConverter{publicstaticStringswapCase(Stringinput){if(input==null||input.isEmpty()){returninput;}StringBuilderresult=newStringBuilder();for(charc:input.toCharArray()){if(Character.isUpperCase(c)){result.append(Character.toLowerCase(c));}elseif(Character.isLowerCase(c)){result.append(Character.toUpperCase(c));}else{result.append(c);}}returnresult.toString();}publicstaticvoidmain(String[]args){Stringinput="HelloWorld!";Stringoutput=swapCase(input);System.out.println(output);//hELLOwORLD!}}题目2(Python基础)请编写一个Python函数,接受一个列表作为参数,返回该列表中所有奇数的平方。例如,输入`[1,2,3,4,5]`,输出`[1,9,25]`。pythondefsquare_odds(numbers):return[num2fornuminnumbersifnum%2!=0]示例print(square_odds([1,2,3,4,5]))#输出:[1,9,25]题目3(JavaScript基础)请编写一个JavaScript函数,接受一个正整数作为参数,返回该整数的所有质因数的列表。例如,输入`28`,输出`[2,2,7]`。javascriptfunctiongetPrimeFactors(n){constfactors=[];for(leti=2;i<=n;i++){while(n%i===0){factors.push(i);n/=i;}}returnfactors;}//示例console.log(getPrimeFactors(28));//输出:[2,2,7]二、数据结构与算法(4题,每题12分,共48分)题目4(数组与字符串)请编写一个函数,判断一个字符串是否是回文(即正读和反读相同)。例如,输入`"madam"`,返回`true`;输入`"hello"`,返回`false`。pythondefis_palindrome(s):returns==s[::-1]示例print(is_palindrome("madam"))#输出:Trueprint(is_palindrome("hello"))#输出:False题目5(链表)请编写一个函数,删除链表的重复元素,返回一个不包含重复元素的新链表。假设链表节点定义如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next例如,输入`[1,1,2,3,3]`,返回`[1,2,3]`。pythondefdelete_duplicates(head):ifnothead:returnheaddummy=ListNode(0)dummy.next=headprev=dummywhilehead:ifhead.nextandhead.val==head.next.val:whilehead.nextandhead.val==head.next.val:head=head.nextprev.next=head.nextelse:prev=prev.nexthead=head.nextreturndummy.next辅助函数:将列表转换为链表deflist_to_linkedlist(lst):dummy=ListNode(0)cur=dummyfornuminlst:cur.next=ListNode(num)cur=cur.nextreturndummy.next辅助函数:将链表转换为列表deflinkedlist_to_list(head):lst=[]whilehead:lst.append(head.val)head=head.nextreturnlst示例head=list_to_linkedlist([1,1,2,3,3])new_head=delete_duplicates(head)print(linkedlist_to_list(new_head))#输出:[1,2,3]题目6(树)请编写一个函数,二叉树的中序遍历结果。假设二叉树节点定义如下:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=right例如,输入`[1,null,2,3]`(表示的树为`1->2->3`),中序遍历结果为`[3,2,1]`。pythondefinorder_traversal(root):result=[]definorder(node):ifnode:inorder(node.left)result.append(node.val)inorder(node.right)inorder(root)returnresult示例构建树:1->null->2->3root=TreeNode(1)root.right=TreeNode(2)root.right.left=TreeNode(3)print(inorder_traversal(root))#输出:[3,2,1]题目7(动态规划)请编写一个函数,计算一个字符串的最长回文子串的长度。例如,输入`"babad"`,返回`3`("bab"或"aba")。pythondeflongest_palindrome(s):ifnots:return0n=len(s)dp=[[False]nfor_inrange(n)]max_len=1foriinrange(n):dp[i][i]=Trueforiinrange(n-1):ifs[i]==s[i+1]:dp[i][i+1]=Truemax_len=2forlengthinrange(3,n+1):foriinrange(n-length+1):j=i+length-1ifs[i]==s[j]anddp[i+1][j-1]:dp[i][j]=Truemax_len=lengthreturnmax_len示例print(longest_palindrome("babad"))#输出:3三、系统设计与数据库(3题,每题15分,共45分)题目8(数据库设计)设计一个简单的学生选课系统数据库表结构。要求包含以下功能:1.学生表(Student):学生ID(主键)、姓名、年龄。2.课程表(Course):课程ID(主键)、课程名称、学分。3.选课表(Enrollment):选课ID(主键)、学生ID(外键)、课程ID(外键)、成绩。请写出各表的创建语句(使用SQL)。sql--学生表CREATETABLEStudent(StudentIDINTPRIMARYKEY,NameVARCHAR(50),AgeINT);--课程表CREATETABLECourse(CourseIDINTPRIMARYKEY,CourseNameVARCHAR(100),CreditsINT);--选课表CREATETABLEEnrollment(EnrollmentIDINTPRIMARYKEY,StudentIDINT,CourseIDINT,GradeDECIMAL(5,2),FOREIGNKEY(StudentID)REFERENCESStudent(StudentID),FOREIGNKEY(CourseID)REFERENCESCourse(CourseID));题目9(系统设计)设计一个简单的短链接生成系统。要求:1.用户输入长链接,系统返回一个短链接。2.短链接应唯一且易于记忆(例如`/abc123`)。3.系统应支持按短链接查询原始长链接。请简述系统架构设计,并说明如何保证短链接的唯一性和快速查询。答案:系统架构设计:1.前端服务:接收用户的长链接请求,返回短链接。2.短链接生成服务:生成唯一的短链接,可以是随机字符串或基于长链接的哈希值。3.数据库:存储长链接和短链接的映射关系。4.缓存服务(可选):缓存常用短链接以提高查询速度。唯一性和快速查询:-唯一性:使用随机字符串生成算法(如UUID或随机字符组合)或长链接的哈希值(如MD5)作为短链接。-快速查询:将短链接和长链接的映射关系存储在数据库中,并使用索引优化查询。对于常用短链接,可以使用Redis等缓存服务减少数据库查询次数。题目10(分布式系统)假设你需要设计一个高并发的短链接服务,请简述如何保证服务的可用性和扩展性。至少提出三种方案。答案:1.负载均衡:使用Nginx或HAProxy等负载均衡器分发请求到多个后端服务实例,提高并发处理能力。2.微服务架构:将短链接服务拆分为多个微服务(如生成服务、查询服务),每个服务独立扩展,降低单点压力。3.分布式缓存:使用Redis或Memcached缓存短链接映射关系,减少数据库压力,提高查询速度。4.数据库分片:将数据库分片,按短链接或时间范围分散数据,避免单表过大。5.异步处理:使用消息队列(如Kafka)处理生成和查询请求,解耦服务,提高吞吐量。答案与解析一、编程语言基础题目1(Java基础)javapublicclassCaseConverter{publicstaticStringswapCase(Stringinput){if(input==null||input.isEmpty()){returninput;}StringBuilderresult=newStringBuilder();for(charc:input.toCharArray()){if(Character.isUpperCase(c)){result.append(Character.toLowerCase(c));}elseif(Character.isLowerCase(c)){result.append(Character.toUpperCase(c));}else{result.append(c);}}returnresult.toString();}publicstaticvoidmain(String[]args){Stringinput="HelloWorld!";Stringoutput=swapCase(input);System.out.println(output);//hELLOwORLD!}}解析:-首先检查输入是否为空,如果是则直接返回。-使用`StringBuilder`高效拼接字符串。-遍历每个字符,使用`Character.isUpperCase`和`Character.isLowerCase`判断大小写,然后转换。-其他字符保持不变。题目2(Python基础)pythondefsquare_odds(numbers):return[num2fornuminnumbersifnum%2!=0]示例print(square_odds([1,2,3,4,5]))#输出:[1,9,25]解析:-使用列表推导式,遍历`numbers`列表。-判断每个数字是否为奇数(`num%2!=0`)。-如果是奇数,计算其平方并加入结果列表。题目3(JavaScript基础)javascriptfunctiongetPrimeFactors(n){constfactors=[];for(leti=2;i<=n;i++){while(n%i===0){factors.push(i);n/=i;}}returnfactors;}//示例console.log(getPrimeFactors(28));//输出:[2,2,7]解析:-从2开始遍历到`n`,检查`n`是否能被`i`整除。-如果能,将`i`加入`factors`数组,并将`n`除以`i`。-重复直到`n`无法被`i`整除,然后继续下一个`i`。-最终返回所有质因数。二、数据结构与算法题目4(数组与字符串)pythondefis_palindrome(s):returns==s[::-1]示例print(is_palindrome("madam"))#输出:Trueprint(is_palindrome("hello"))#输出:False解析:-回文字符串正读和反读相同。-使用Python切片`[::-1]`反转字符串,然后比较是否等于原字符串。题目5(链表)pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefdelete_duplicates(head):ifnothead:returnheaddummy=ListNode(0)dummy.next=headprev=dummywhilehead:ifhead.nextandhead.val==head.next.val:whilehead.nextandhead.val==head.next.val:head=head.nextprev.next=head.nextelse:prev=prev.nexthead=head.nextreturndummy.next辅助函数:将列表转换为链表deflist_to_linkedlist(lst):dummy=ListNode(0)cur=dummyfornuminlst:cur.next=ListNode(num)cur=cur.nextreturndummy.next辅助函数:将链表转换为列表deflinkedlist_to_list(head):lst=[]whilehead:lst.append(head.val)head=head.nextreturnlst示例head=list_to_linkedlist([1,1,2,3,3])new_head=delete_duplicates(head)print(linkedlist_to_list(new_head))#输出:[1,2,3]解析:-使用虚拟头节点`dummy`简化边界处理。-遍历链表,如果当前节点的下一个节点与当前节点值相同,则跳过所有重复节点。-否则,移动`prev`指针。题目6(树)pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefinorder_traversal(root):result=[]definorder(node):ifnode:inorder(node.left)result.append(node.val)inorder(node.right)inorder(root)returnresult示例构建树:1->null->2->3root=TreeNode(1)root.right=TreeNode(2)root.right.left=TreeNode(3)print(inorder_traversal(root))#输出:[3,2,1]解析:-中序遍历顺序:左子树->根节点->右子树。-使用递归实现,先遍历左子树,记录根节点值,再遍历右子树。题目7(动态规划)pythondeflongest_palindrome(s):ifnots:return0n=len(s)dp=[[False]nfor_inrange(n)]max_len=1foriinrange(n):dp[i][i]=Trueforiinrange(n-1):ifs[i]==s[i+1]:dp[i][i+1]=Truemax_len=2forlengthinrange(3,n+1):foriinrange(n-length+1):j=i+length-1ifs[i]==s[j]anddp[i+1][j-1]:dp[i][j]=Truemax_len=lengthreturnmax_len示例print(longest_palindrome("babad"))#输出:3解析:-使用动态规划,`dp[i][j]`表示`s[i..j]`是否为回文。-初始化单个字符为回文,检查相邻字符,然后扩展到更长的子串。-记录最大回文长度。三、系统设计与数据库题目8(数据库设计)sql--学生表CREATETABLEStudent(StudentIDINTPRIMARYKEY,NameVARCHAR(50),AgeINT);--课程表CREATETABLECourse(CourseI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 20XX年邮政集团宁夏分行年终总结报告
- 广州省公务员考试试题及答案
- 2026年水文地质学基础测试题库带答案(满分必刷)
- 古典名著《水浒传》练习题含完整答案(典优)
- 2023年乌兰察布市直机关遴选公务员笔试真题汇编附答案解析(夺冠)
- 广东省廉江公务员考试试题及答案
- 2026年长沙卫生职业学院单招职业适应性测试模拟测试卷附答案
- 2024年吉林省直机关遴选公务员考试真题汇编附答案解析(夺冠)
- 2026年口腔正畸学考试题库含答案【培优a卷】
- 广东佛山公务员考试试题及答案
- 建筑安全风险辨识与防范措施
- 培训教师合同范本
- 北京市中小学智慧校园建设规范(试行)
- 结构件通用检验规范
- 高考生物学二轮复习备课素材:多变量实验题的类型及审答思维
- 水电基础知识培训(二)
- 保险管选型指导书
- 建筑风景速写课件
- 第五届“国药工程杯”全国大学生制药工程设计竞赛
- 三年级上册英语素材-复习要点 Join in剑桥英语
- Q∕SY 1275-2010 油田污水回用湿蒸汽发生器水质指标
评论
0/150
提交评论