版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年IT企业校园招聘面试官视角下的模拟题集及解析一、编程题(3题,每题20分)题目1(Python编程)问题描述:实现一个函数`find_substring(s,sub)`,其中`s`是一个字符串,`sub`是一个子串。函数返回`sub`在`s`中出现的所有起始索引的列表。如果没有找到子串,返回空列表。示例:pythonfind_substring("helloworld","o")#输出:[4,7]find_substring("abcdef","xyz")#输出:[]要求:-时间复杂度尽可能低。-可以使用任何Python内置方法或库。答案:pythondeffind_substring(s,sub):ifnotsub:return[]indices=[]sub_len=len(sub)foriinrange(len(s)-sub_len+1):ifs[i:i+sub_len]==sub:indices.append(i)returnindices题目2(Java编程)问题描述:实现一个方法`maxProduct(nums)`,其中`nums`是一个整数数组。方法返回数组中两个不重叠的子数组的乘积的最大值。子数组可以以任意位置开始和结束。示例:javamaxProduct([1,2,-1,2,-1])//输出:8要求:-时间复杂度不超过O(n)。-可以使用任何Java内置方法或库。答案:javapublicintmaxProduct(int[]nums){intn=nums.length;int[]maxLeft=newint[n];int[]maxRight=newint[n];maxLeft[0]=nums[0];for(inti=1;i<n;i++){maxLeft[i]=Math.max(maxLeft[i-1]*nums[i],nums[i]);}maxRight[n-1]=nums[n-1];for(inti=n-2;i>=0;i--){maxRight[i]=Math.max(maxRight[i+1]*nums[i],nums[i]);}intmaxProduct=Integer.MIN_VALUE;for(inti=0;i<n-1;i++){maxProduct=Math.max(maxProduct,maxLeft[i]*maxRight[i+1]);}returnmaxProduct;}题目3(JavaScript编程)问题描述:实现一个函数`reverseWords(s)`,其中`s`是一个字符串。函数返回一个新字符串,其中`s`中的每个单词顺序反转,单词内字符顺序不变。示例:javascriptreverseWords("theskyisblue")//输出:"blueisskythe"要求:-不能使用任何内置的字符串反转方法。-时间复杂度尽可能低。答案:javascriptfunctionreverseWords(s){letwords=s.split('');letreversed=[];for(letwordofwords){letreversedWord='';for(leti=word.length-1;i>=0;i--){reversedWord+=word[i];}reversed.push(reversedWord);}returnreversed.join('');}二、算法题(3题,每题20分)题目1(动态规划)问题描述:给定一个整数数组`nums`和一个目标值`target`,找出数组中和为`target`的所有唯一的三元组。三元组中的数字可以按任意顺序排列。示例:javascriptthreeSum([-1,0,1,2,-1,-4],0)//输出:[[-1,-1,2],[-1,0,1]]要求:-不能有重复的三元组。-时间复杂度尽可能低。答案:javascriptfunctionthreeSum(nums,target){letresults=[];nums.sort((a,b)=>a-b);for(leti=0;i<nums.length-2;i++){if(i>0&&nums[i]===nums[i-1])continue;letleft=i+1;letright=nums.length-1;while(left<right){letsum=nums[i]+nums[left]+nums[right];if(sum===target){results.push([nums[i],nums[left],nums[right]]);while(left<right&&nums[left]===nums[left+1])left++;while(left<right&&nums[right]===nums[right-1])right--;left++;right--;}elseif(sum<target){left++;}else{right--;}}}returnresults;}题目2(贪心算法)问题描述:给定一个非负整数数组`nums`,你可以从中任意选择一些数字,使得所选数字之和的最大与最小值的差值最小。返回这个最小的差值。示例:javascriptminDifference([4,1,7,5,6,2,3])//输出:4要求:-不能选择全部数字。-时间复杂度尽可能低。答案:javascriptfunctionminDifference(nums){if(nums.length<=4)return0;nums.sort((a,b)=>a-b);letn=nums.length;returnMath.min(nums[n-1]-nums[3],nums[n-2]-nums[2],nums[n-3]-nums[1],nums[n-4]-nums[0]);}题目3(树遍历)问题描述:给定一个二叉树的根节点`root`,返回它的最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点数。示例:javascript//示例二叉树://3///\//920///\//157javascriptmaxDepth(root)//输出:3要求:-可以使用递归或迭代方法。-时间复杂度尽可能低。答案:javascriptfunctionmaxDepth(root){if(!root)return0;letleftDepth=maxDepth(root.left);letrightDepth=maxDepth(root.right);returnMath.max(leftDepth,rightDepth)+1;}三、系统设计题(1题,20分)题目1(短链接系统设计)问题描述:设计一个短链接系统。用户可以输入一个长链接,系统返回一个短链接。点击短链接时,系统将用户重定向到原始的长链接。要求:-短链接应尽可能短。-系统应支持高并发访问。-系统应能够统计短链接的点击次数。设计要点:1.短链接生成算法。2.数据存储方案。3.高并发处理方案。4.点击统计方案。答案:短链接系统设计1.短链接生成算法使用Base62编码,将长链接的URL编码后转换为6位短链接。Base62编码包括`a-z`,`A-Z`,`0-9`,可以生成较短的短链接。javascriptfunctionencodeToBase62(num){constbase62='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';letencoded='';while(num>0){encoded=base62[num%62]+encoded;num=Math.floor(num/62);}returnencoded.padStart(6,'0');}functiongenerateShortLink(longUrl){consthash=crypto.randomBytes(4).toString('hex');constnum=parseInt(hash,16);returnencodeToBase62(num);}2.数据存储方案使用Redis存储短链接和长链接的映射关系,并使用TTL设置过期时间。点击时先查询Redis,未命中则查询数据库。javascript//Redis存储结构{"shortLink":{"longUrl":"","clickCount":100,"createdAt":"2025-01-01T00:00:00Z"}}3.高并发处理方案使用Nginx作为反向代理,将请求分发到多个后端服务。后端服务使用负载均衡器(如HAProxy)进行负载均衡。4.点击统计方案每次点击时更新Redis中的点击计数。如果Redis计数超过阈值(如1000),则将数据同步到数据库。javascriptfunctionrecordClick(shortLink){//先尝试Redisletdata=redis.get(shortLink);if(data){letobj=JSON.parse(data);obj.clickCount+=1;redis.set(shortLink,JSON.stringify(obj));return;}//Redis未命中,查询数据库data=database.findOne({shortLink});if(data){data.clickCount+=1;database.save(data);}}四、数据库题(2题,每题10分)题目1(SQL查询)问题描述:给定一个`employees`表,包含以下列:-`id`(员工ID)-`name`(员工姓名)-`department`(部门)-`salary`(薪水)编写一个SQL查询,返回每个部门的平均薪水,按平均薪水降序排列。答案:sqlSELECTdepartment,AVG(salary)ASaverage_salaryFROMemployeesGROUPBYdepartmentORDERBYaverage_salaryDESC;题目2(数据库设计)问题描述:设计一个简单的博客系统数据库。系统应支持以下功能:1.用户注册和登录。2.发布文章。3.查看文章列表。4.查看文章详情。设计要点:1.表结构设计。2.主键和外键关系。3.索引设计。答案:博客系统数据库设计表结构设计1.users表-`id`(主键,自增)-`username`(唯一,非空)-`password`(非空)-`email`(唯一,非空)-`created_at`(创建时间)2.articles表-`id`(主键,自增)-`title`(非空)-`content`(非空)-`user_id`(外键,关联users表)-`created_at`(创建时间)-`updated_at`(更新时间)主键和外键关系-`users.id`是主键。-`articles.user_id`是外键,关联`users.id`。索引设计-`users.username`和`users.email`应建立唯一索引。-`articles.user_id`应建立索引,用于快速查找某个用户发布的文章。-`articles.created_at`应建立索引,用于按创建时间排序。sqlCREATETABLEusers(idINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)UNIQUENOTNULL,passwordVARCHAR(255)NOTNULL,emailVARCHAR(100)UNIQUENOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);CREATETABLEarticles(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(255)NOTNULL,contentTEXTNOTNULL,user_idINT,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,FOREIGNKEY(user_id)REFERENCESusers(id));CREATEINDEXidx_usernameONusers(username);CREATEINDEXidx_emailONusers(email);CREATEINDEXidx_user_idONarticles(user_id);CREATEINDEXidx_created_atONarticles(created_at);五、网络题(2题,每题10分)题目1(HTTP状态码)问题描述:HTTP状态码403表示什么?请解释
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年部编版一年级语文下册第3单元课后练习题
- 2025-2026年中国古代地理知识测试卷
- 妇联相关知识试题及答案
- 互联网平台企业盈利结构演变与绩效评价框构建
- 数字化供应链协同与韧性建设研究
- 耐心资本全链条支持体系构建关键突破点研究
- 银行理财机构在耐心资本产品中的风险管理与创新设计
- 2026年土石方挖掘机司机质量管控考核试卷及答案
- 2026年高考教师监考前考试试题及答案
- 2025年淮盛职业学院高职单招职业技能考试题库附完整答案详解
- 逻辑与思维第一单元单元检测题及答案
- 匹克球介绍课件
- 泌尿结石护理干预措施汇编
- 港口散装液体危险化学品港口经营人的装卸管理人员从业资格试题
- 个人承包槟榔合同范本
- GB/T 191-2025包装储运图形符号标志
- 2.7《风的成因》教学设计-科学三年级上册教科版
- 商法课件完整版本
- GB/T 5617-2025钢件表面淬火硬化层深度的测定
- 企业知识产权保护管理手册
- 688高考高频词拓展+默写检测- 高三英语
评论
0/150
提交评论