版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
拼多多2026届校招服务端开发工程师笔试题库一、编程语言基础(共5题,每题6分,总分30分)题目1:请用Java语言实现一个方法,输入一个正整数`n`,返回`n`的阶乘。例如,输入`5`,返回`120`。要求:1.不能使用现成的库函数计算阶乘。2.考虑输入边界情况(如`n=0`或`n`为负数时返回`1`)。题目2:用Python实现一个函数,输入一个字符串`s`,返回该字符串中所有唯一字符的列表(按出现顺序)。例如,输入`"hello"`,返回`['h','e','l','o']`。题目3:用C++实现快速排序算法(QuickSort),输入一个整数数组`arr`,原地排序该数组。要求:1.使用递归方式实现。2.给出测试用例(如`[3,1,4,1,5,9,2,6,5,3,5]`)。题目4:用JavaScript实现一个闭包(Closure),创建一个计数器函数`createCounter`,每次调用时返回递增的数字。例如:javascriptconstcounter=createCounter();console.log(counter());//1console.log(counter());//2题目5:用Go语言实现一个并发程序,使用`goroutine`和`channel`,模拟10个用户同时向服务器发送请求,服务器每秒响应一次。要求:1.输出每个请求的响应时间。2.使用`time`包计时。二、数据结构与算法(共8题,每题5分,总分40分)题目6:给定一个无重复元素的数组`nums`和一个目标值`target`,请编写一个函数,返回`target`在`nums`中的索引。要求:1.时间复杂度为O(n)。2.不能使用现成的`indexOf`方法。题目7:用栈(Stack)实现队列(Queue)的功能。要求:1.支持队列的基本操作:`enqueue`(入队)、`dequeue`(出队)。2.给出Python实现。题目8:给定一个二叉树,请编写递归函数,计算其最大深度。例如:3/\920/\157最大深度为`3`。题目9:用动态规划(DynamicProgramming)解决背包问题(KnapsackProblem):给定物品的重量和价值,以及背包容量,求背包能装下的最大价值。例如:-物品:`[2,3,4,5]`-价值:`[3,4,5,6]`-背包容量:`5`最大价值为`7`(选择物品`[3,4]`)。题目10:给定一个字符串`s`,判断是否是有效的括号字符串(如`"()[]{}"`)。要求:1.使用栈(Stack)实现。2.时间复杂度为O(n)。题目11:用二分查找(BinarySearch)在有序数组`nums`中查找目标值`target`,如果存在返回索引,否则返回`-1`。要求:1.时间复杂度为O(logn)。题目12:给定一个字符串`s`,找到其中不重复的最长子串。例如,输入`"abcabcbb"`,返回`"abc"`(长度为3)。题目13:用BFS(广度优先搜索)遍历一个无向图,并返回遍历顺序。例如:1->2->3||/||/4->5BFS遍历顺序为`[1,2,4,3,5]`。三、系统设计与数据库(共5题,每题8分,总分40分)题目14:设计一个简单的短链接系统(如TinyURL)。要求:1.输入一个长链接,返回一个短链接。2.输入短链接,能反查回长链接。3.说明如何保证唯一性和高可用性。题目15:设计一个高并发的计数器系统,要求:1.支持高并发访问和更新。2.说明使用Redis或数据库的实现方案。题目16:假设你要设计一个微博系统,用户可以发布、评论、点赞。请画出核心模块的架构图,并说明:1.如何处理高并发和大数据量。2.如何保证数据一致性。题目17:给定一个SQL查询:sqlSELECTname,ageFROMusersWHEREage>(SELECTAVG(age)FROMusers);请解释其执行逻辑,并优化查询性能(如使用索引)。题目18:设计一个用户登录系统,要求:1.支持第三方登录(如微信、支付宝)。2.说明如何防止SQL注入和XSS攻击。四、分布式与缓存(共5题,每题8分,总分40分)题目19:假设你要设计一个分布式缓存系统,请说明:1.如何使用Redis或Memcached。2.如何处理缓存穿透、缓存击穿和缓存雪崩问题。题目20:设计一个分布式事务系统,说明:1.如何保证事务的原子性和一致性(如使用2PC或TCC)。2.举例说明在哪些场景下适用。题目21:假设你要设计一个秒杀系统,请说明:1.如何防止超卖和并发问题(如使用分布式锁或数据库事务)。2.如何优化系统性能。题目22:设计一个分布式ID生成系统,要求:1.ID要全局唯一且递增。2.说明使用Snowflake算法的实现。题目23:假设你要设计一个消息队列系统(如Kafka或RabbitMQ),请说明:1.如何保证消息的可靠传输。2.如何处理消息重复消费问题。五、网络与安全(共3题,每题10分,总分30分)题目24:HTTP和HTTPS有什么区别?HTTPS如何保证数据传输的安全性?题目25:假设你要设计一个负载均衡系统,请说明:1.如何使用Nginx或LVS。2.负载均衡的常见算法(如轮询、最少连接)。题目26:解释什么是DDoS攻击,如何防御?答案与解析一、编程语言基础题目1(Java):javapublicstaticlongfactorial(intn){if(n<0)return1;longresult=1;for(inti=1;i<=n;i++){result=i;}returnresult;}解析:使用循环计算阶乘,注意大数问题(Java的`long`类型最大支持`20!`)。题目2(Python):pythondefunique_chars(s):seen=set()unique=[]forcharins:ifcharnotinseen:seen.add(char)unique.append(char)returnunique解析:遍历字符串,使用集合记录已出现字符,保证唯一性。题目3(C++):cppinclude<vector>usingnamespacestd;voidquickSort(vector<int>&arr,intleft,intright){if(left>=right)return;intpivot=arr[right];inti=left-1;for(intj=left;j<right;j++){if(arr[j]<=pivot){i++;swap(arr[i],arr[j]);}}swap(arr[i+1],arr[right]);quickSort(arr,left,i);quickSort(arr,i+2,right);}解析:标准快速排序实现,递归划分。题目4(JavaScript):javascriptfunctioncreateCounter(){letcount=0;returnfunction(){return++count;};}解析:闭包保存`count`状态,每次调用返回递增值。题目5(Go):gopackagemainimport("fmt""sync""time")funccreateRequest(idint,chchan<-int){start:=time.Now()time.Sleep(time.Second)//模拟请求耗时ch<-idfmt.Printf("Request%d:%v\n",id,time.Since(start))}funcmain(){ch:=make(chanint,10)varwgsync.WaitGroupfori:=0;i<10;i++{wg.Add(1)gocreateRequest(i,ch)}wg.Wait()close(ch)}解析:使用`goroutine`模拟并发请求,`channel`传递结果。二、数据结构与算法题目6:pythondefsearch(nums,target):fori,numinenumerate(nums):ifnum==target:returnireturn-1解析:线性遍历数组,时间复杂度O(n)。题目7(Python):pythonclassQueue:def__init__(self):self.in_stack=[]self.out_stack=[]defenqueue(self,x):self.in_stack.append(x)defdequeue(self):ifnotself.out_stack:whileself.in_stack:self.out_stack.append(self.in_stack.pop())returnself.out_stack.pop()ifself.out_stackelseNone解析:使用两个栈实现队列,`enqueue`压入`in_stack`,`dequeue`时先转移`out_stack`。题目8:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefmaxDepth(root):ifnotroot:return0return1+max(maxDepth(root.left),maxDepth(root.right))解析:递归计算左右子树深度,取最大值加1。题目9:pythondefknapsack(weights,values,capacity):dp=[[0](capacity+1)for_inrange(len(weights)+1)]foriinrange(1,len(weights)+1):forjinrange(1,capacity+1):ifweights[i-1]<=j:dp[i][j]=max(dp[i-1][j],dp[i-1][j-weights[i-1]]+values[i-1])else:dp[i][j]=dp[i-1][j]returndp[-1][-1]解析:动态规划,`dp[i][j]`表示前`i`件物品在容量`j`下的最大价值。题目10:pythondefisValid(s):stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping.values():stack.append(char)elifcharinmapping:ifnotstackorstack.pop()!=mapping[char]:returnFalsereturnnotstack解析:遍历字符串,用栈匹配括号。题目11:pythondefbinarySearch(nums,target):left,right=0,len(nums)-1whileleft<=right:mid=(left+right)//2ifnums[mid]==target:returnmidelifnums[mid]<target:left=mid+1else:right=mid-1return-1解析:标准二分查找,时间复杂度O(logn)。题目12:pythondeflengthOfLongestSubstring(s):left=0max_len=0char_set=set()forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,right-left+1)returnmax_len解析:滑动窗口,双指针移动,时间复杂度O(n)。题目13:pythondefbfs(graph,start):visited=set()queue=[start]order=[]whilequeue:node=queue.pop(0)ifnodenotinvisited:visited.add(node)order.append(node)forneighboringraph[node]:ifneighbornotinvisited:queue.append(neighbor)returnorder解析:BFS遍历,使用队列和集合记录状态。三、系统设计与数据库题目14:短链接设计:1.使用Base62编码(`a-z`、`A-Z`、`0-9`)将长链接转化为短字符串。2.使用Redis或数据库存储映射关系(`short_url->long_url`)。3.高可用性:使用分布式缓存和负载均衡。题目15:高并发计数器:-使用Redis的`INCR`命令,原子性更新。-数据库方案:使用自增主键+锁。题目16:微博系统架构:1.核心模块:用户模块、发布模块、关系模块(关注/粉丝)、消息模块(评论/私信)。2.高并发:使用分库分表、缓存(Redis)、异步处理(消息队列)。3.数据一致性:使用分布式事务或最终一致性。题目17:SQL优化:-执行逻辑:子查询先计算平均年龄,外层查询筛选大于平均年龄的用户。-优化:为`age`字段加索引。题目18:用户登录系统:1.第三方登录:使用OAuth协议,调用微信/支付宝API。2.安全:使用预处理语句防SQL注入,对用户输入进行转义防XSS。四、分布式与缓存题目19:分布式缓存:1.使用Redis:设置过期时间,热点数据缓存。2.缓存问题:-缓存穿透:布隆过滤器拦截不存在的查询。-缓存击穿:使用互斥锁或双重检查。-缓存雪崩:使用随机过期时间。题目20:分布式事务:1.2PC:确保所有节点要么全部提交,要么全部回滚。2.适用场景:金融交易、订单系统。题目21:秒杀系统:1.防超卖:使用分布式锁(Redis或数据库锁)。2.性能优化:预热库存、异步下单。题目22:分布式ID生成:javapublicclassSnowflakeIdWorker{privatelongworkerId;privatelongdatacenterId;privatelongsequence=0L;privatelongtwepoch=1288834974657L;privatelongworkerIdBits=5L;privatelongdatacenterIdBits=5L;privatelongmaxWorkerId=-1L^(-1L<<workerIdBits);privatelongmaxDatacenterId=-1L^(-1L<<datacenterIdBits);privatelongsequenceBits=12L;privatelongworkerIdShift=sequenceBits;privatelongdatacenterIdShift=sequenceBits+workerIdBits;privatelongtimestampLeftShift=sequenceBits+workerIdBits+datacenterIdBits;privatelongsequenceMask=-1L^(-1L<<sequenceBits);privatelonglastTimestamp=-1L;privatefinalReentrantLocklock=newReentrantLock();publicSnowflakeIdWorker(longworkerId,longdatacenterId){if(workerId>maxWorkerId||workerId<0){thrownewIllegalArgumentException(String.format("workerIdcan'tbegreaterthan%dorlessthan0",maxWorkerId));}if(datacenterId>maxDatacenterId||datacenterId<0){thrownewIllegalArgumentException(String.format("datacenterIdcan'tbegreaterthan%dorlessthan0",maxDatacenterId));}this.workerId=workerId;this.datacenterId=datacenterId;}publicsynchronizedlongnextId(){longtimestamp=timeGen();if(timestamp<lastTimestamp){thrownewRuntimeException(String.format("Clockmovedbackwards.Refusingtogenerateidfor%d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47362-2026鹿茸片分等质量
- 长白山职业技术学院《中药调剂学》2025-2026学年期末试卷
- 长春职业技术大学《库存控制与管理》2025-2026学年期末试卷
- 扎兰屯职业学院《组织行为学》2025-2026学年期末试卷
- 长春师范高等专科学校《康复生理学》2025-2026学年期末试卷
- 中国医科大学《安装工程计量与计价》2025-2026学年期末试卷
- 运城幼儿师范高等专科学校《社会工作概论》2025-2026学年期末试卷
- 中国医科大学《中医方剂学》2025-2026学年期末试卷
- 中国药科大学《中国对外贸易》2025-2026学年期末试卷
- 扎兰屯职业学院《工程热力学》2025-2026学年期末试卷
- 药厂化验室基础知识培训课件
- 2025年初级(五级)保育师(保育)技能鉴定《理论知识》真题(答案和解析附后)
- 教材选用与审查会议纪要范文
- 2025年国家电网考试面试试题试题及答案解析
- 氮气安全培训课件
- 《项目管理案例教程》课件-05 第5章 项目管理的综合应用案例
- DB63-T 1599-2025 高海拔高寒地区公路边坡生态防护技术设计规范
- 文件记录管理办法
- 对外提供资料管理办法
- 小学教育毕业论文10000字
- 沉香与健康课件
评论
0/150
提交评论