2026年程序员面试题与技能考核含答案_第1页
2026年程序员面试题与技能考核含答案_第2页
2026年程序员面试题与技能考核含答案_第3页
2026年程序员面试题与技能考核含答案_第4页
2026年程序员面试题与技能考核含答案_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

2026年程序员面试题与技能考核含答案一、编程语言基础(共5题,每题10分,总分50分)题目1(Java)分数:10分编写一个Java方法,实现判断一个字符串是否为有效的括号组合(仅考虑圆括号`()`、方括号`[]`和花括号`{}`)。例如:-输入:`"()[]{}"`→输出:`true`-输入:`"([)]"`→输出:`false`-输入:`"{[]}"`→输出:`true`要求:1.不能使用现成的栈库函数,需自定义栈结构实现2.时间复杂度不超过O(n)题目2(Python)分数:10分实现一个函数`find_frequent_words(text,n)`,统计文本中频率最高的`n`个单词,返回为列表形式(词频相同按字母顺序排序)。例如:pythontext="helloworldhellopythonworld"find_frequent_words(text,2)#输出:['hello','world']要求:1.忽略大小写和标点符号2.处理空字符串输入需返回空列表题目3(C++)分数:10分实现一个无参数的函数`boolis_prime(intnum)`,判断`num`是否为质数。要求:1.对于`num<=1`直接返回`false`2.优化算法避免重复检查(如只检查到√num)测试用例:-输入:`13`→输出:`true`-输入:`100`→输出:`false`题目4(JavaScript)分数:10分编写一个JavaScript函数,实现数组元素的移动:给定数组`arr`和移动次数`k`,将数组元素向右移动`k`次。例如:javascriptrotate([1,2,3,4,5],2)//输出:[4,5,1,2,3]要求:1.不能使用`slice`或`splice`等现成方法2.处理负数`k`需正确实现循环移动题目5(Go)分数:10分实现一个Go函数,计算两个正整数的最大公约数(GCD),要求使用欧几里得算法。测试用例:-输入:`48,18`→输出:`6`-输入:`56,98`→输出:`14`二、数据结构与算法(共6题,每题15分,总分90分)题目6(链表操作)分数:15分实现一个单链表类,包含方法`delete_duplicates()`,删除链表中重复的元素(保留第一次出现的节点)。假设节点定义如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next要求:1.不允许使用额外空间(如哈希表)2.时间复杂度O(n²)可接受,但需说明优化空间题目7(二叉树)分数:15分给定一个二叉搜索树,实现一个函数,输出所有小于等于`target`的最大值。例如:树结构:5/\37/\/\2468-输入:`target=6`→输出:`6`要求:1.遍历方式不限(中序/前序等)2.需考虑树为空的情况题目8(动态规划)分数:15分实现一个函数`max_profit(prices)`,计算股票最佳买卖策略(只能买卖一次)。输入为价格数组,输出最大利润。例如:pythonmax_profit([7,1,5,3,6,4])#输出:5要求:1.不能使用暴力解法(O(n²))2.需处理无利润情况题目9(图算法)分数:15分实现无向图的连通分量判断函数,输入邻接矩阵`graph`,返回连通分量的数量。例如:graph=[[0,1,0,0],[1,0,1,0],[0,1,0,1],[0,0,1,0]]-输出:`3`要求:1.使用DFS或BFS实现2.需处理自环和重边题目10(字符串匹配)分数:15分实现KMP算法的核心函数`compute_lps()`,计算最长公共前后缀数组(LPSarray)。例如:-输入:`"ABABAC"`→输出:`[0,0,1,2,0,1]`要求:1.不能直接实现完整KMP,仅计算LPS数组2.时间复杂度O(n)题目11(堆操作)分数:15分实现一个优先队列类,支持动态数组实现,包含`heappush()`和`heappop()`方法。要求:1.使用最小堆实现2.插入和删除操作需保持堆性质三、系统设计与架构(共4题,每题20分,总分80分)题目12(短链接系统)分数:20分设计一个短链接系统,要求:1.输入长URL,生成固定长度短URL(如6位字符)2.支持短URL到长URL的反向解析3.说明高并发解决方案要求:1.需考虑URL编码/解码2.可简化数据库设计题目13(分布式缓存)分数:20分设计一个分布式缓存系统,需解决:1.缓存命中率优化(如LRU策略)2.节点间数据同步方案3.缓存过期处理要求:1.描述至少两种缓存一致性协议2.可简化网络拓扑设计题目14(消息队列)分数:20分设计一个高可用消息队列,要求:1.支持至少两种消息确认机制2.说明如何处理消息重复消费3.考虑网络分区场景下的解决方案要求:1.描述关键组件(生产者/消费者/Broker)2.可简化存储设计题目15(微服务拆分)分数:20分将一个单体电商应用拆分为微服务架构,要求:1.描述至少三个核心微服务及接口2.说明服务间通信方式3.考虑跨服务事务解决方案要求:1.需明确每个服务的业务边界2.可简化技术选型(如RPC/REST)四、数据库与存储(共3题,每题25分,总分75分)题目16(SQL优化)分数:25分优化以下SQL查询:sqlSELECTuser_id,COUNT()asorder_countFROMordersWHEREstatus='completed'GROUPBYuser_idHAVINGorder_count>5ORDERBYorder_countDESCLIMIT10;要求:1.说明索引优化方案2.解释执行计划可能的瓶颈3.可使用伪代码描述索引设计题目17(NoSQL设计)分数:25分设计一个用于社交系统的数据库表(关系型+NoSQL组合):1.描述用户表设计(关系型部分)2.设计好友关系存储方案(NoSQL部分)3.说明如何实现好友推荐功能要求:1.需考虑数据一致性问题2.可简化分片设计题目18(数据备份)分数:25分设计一个数据库备份恢复方案,要求:1.支持全量+增量备份2.说明灾难恢复流程3.考虑备份窗口和存储成本要求:1.描述至少两种备份技术(如LogShipping/物理备份)2.可简化网络传输方案五、网络与安全(共4题,每题25分,总分100分)题目19(HTTPS原理)分数:25分解释HTTPS握手过程,需说明:1.密钥交换算法(如ECDHE)2.数字证书验证流程3.如何防止重放攻击要求:1.可用时序图辅助说明2.需明确非对称/对称加密应用场景题目20(负载均衡)分数:25分设计一个高可用负载均衡方案,要求:1.描述至少三种负载均衡算法2.说明会话保持策略3.考虑健康检查方案要求:1.需明确主动/被动健康检查区别2.可简化DNS轮询实现题目21(SQL注入防御)分数:25分列举至少五种防御SQL注入的方法,并说明原理。例如:1.预处理语句2.参数化查询要求:1.需结合具体代码示例2.可简化WAF应用场景题目22(API安全设计)分数:25分设计一个安全的RESTAPI,要求:1.描述认证授权方案(如JWT)2.说明防止越权访问措施3.考虑DDoS攻击防御要求:1.需明确Token刷新策略2.可简化认证流程设计答案与解析一、编程语言基础答案1(Java)javaclassSolution{//自定义栈结构staticclassStackNode{charval;StackNodenext;StackNode(charv){val=v;}}staticclassMyStack{StackNodetop;voidpush(charc){StackNodenode=newStackNode(c);node.next=top;top=node;}charpop(){if(top==null)return'#';charv=top.val;top=top.next;returnv;}booleanisEmpty(){returntop==null;}}publicbooleanisValid(Strings){MyStackstack=newMyStack();for(charc:s.toCharArray()){if(c=='('||c=='['||c=='{'){stack.push(c);}else{if(stack.isEmpty())returnfalse;chartop=stack.pop();if((c==')'&&top!='(')||(c==']'&&top!='[')||(c=='}'&&top!='{')){returnfalse;}}}returnstack.isEmpty();}}解析:1.自定义栈实现:通过链表节点存储字符,实现push/pop操作2.时间复杂度:每个字符处理一次,共O(n)3.空间复杂度:最坏情况O(n)(如全为左括号)答案2(Python)pythonfromcollectionsimportdefaultdictdeffind_frequent_words(text,n):ifnottextorn<=0:return[]去除标点符号并转为小写text=''.join(c.lower()ifc.isalnum()else''forcintext)words=text.split()word_count=defaultdict(int)forwordinwords:word_count[word]+=1按频率降序,频率相同按字母顺序sorted_words=sorted(word_count.items(),key=lambdax:(-x[1],x[0]))return[wordforword,countinsorted_words[:n]]解析:1.使用defaultdict统计词频2.排序时先按负频率(降序),再按字母顺序3.处理空字符串和n为0的情况答案3(C++)cppinclude<cmath>include<vector>boolis_prime(intnum){if(num<=1)returnfalse;if(num==2||num==3)returntrue;if(num%2==0||num%3==0)returnfalse;intlimit=sqrt(num);for(inti=5;i<=limit;i+=6){if(num%i==0||num%(i+2)==0)returnfalse;}returntrue;}解析:1.快速排除偶数和3的倍数2.只检查到√num可优化效率3.检查6k±1形式进一步减少测试次数答案4(JavaScript)javascriptfunctionrotate(arr,k){if(!arr.length||k%arr.length===0)returnarr.slice();k=k%arr.length;//先反转整个数组reverse(arr,0,arr.length-1);//再反转前k个元素reverse(arr,0,k-1);//最后反转剩余元素reverse(arr,k,arr.length-1);functionreverse(arr,start,end){while(start<end){[arr[start],arr[end]]=[arr[end],arr[start]];start++;end--;}}returnarr;}解析:1.三次反转实现数组移动(基于数组旋转性质)2.处理k大于数组长度的情况3.时间复杂度O(n),空间复杂度O(1)答案5(Go)gopackagemainimport"math"funcgcd(a,bint)int{forb!=0{a,b=b,a%b}returna}funcmain(){//测试用例fmt.Println(gcd(48,18))//输出:6fmt.Println(gcd(56,98))//输出:14}解析:1.欧几里得算法:辗转相除法2.Go语言内建%操作符实现取余3.时间复杂度O(log(min(a,b)))六、其他综合题(共2题,每题30分,总分60分)题目23(代码重构)分数:30分重构以下Python代码,要求:pythondefcalculate_score(data):total=0forrecordindata:ifrecord['type']=='A':total+=record['value']2elifrecord['type']=='B':total+=record['value']3elifrecord['type']=='C':total+=record['value']4returntotal要求:1.使用函数式编程风格2.支持不同权重类型扩展3.说明重构优势答案:pythonfrom

温馨提示

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

评论

0/150

提交评论