版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年程序员技术面试宝典及模拟试题一、编程语言基础(共5题,每题10分,总分50分)题目1(Java基础):请编写一个Java方法,实现将一个字符串中的所有空格替换为`%20`。要求不使用`String`类的`replace`方法,并考虑字符数组的高效操作。答案与解析:javapublicclassStringReplace{publicstaticStringreplaceSpaces(Strings){if(s==null)returnnull;char[]arr=s.toCharArray();intspaceCount=0;for(charc:arr){if(c=='')spaceCount++;}char[]result=newchar[arr.length+spaceCount2];intindex=0;for(charc:arr){if(c==''){result[index++]='%';result[index++]='2';result[index++]='0';}else{result[index++]=c;}}returnnewString(result);}publicstaticvoidmain(String[]args){System.out.println(replaceSpaces("HelloWorld"));//"Hello%20World"}}解析:1.首先统计字符串中空格的数量,因为每个空格需要替换为3个字符(`%20`)。2.创建一个新字符数组,长度为原字符串长度加空格数量乘以2(因为每个空格替换为3个字符)。3.遍历原字符串,将非空格字符直接复制到新数组,空格则替换为`%20`。4.最后将字符数组转换为字符串返回。题目2(Python基础):请实现一个Python函数,输入一个列表,返回一个新列表,其中包含原列表中所有非负数的平方。答案与解析:pythondefsquare_non_negatives(nums):return[num2fornuminnumsifnum>=0]示例print(square_non_negatives([1,-2,3,0,-4]))#[1,9,0]解析:1.使用列表推导式遍历输入列表`nums`。2.条件`ifnum>=0`确保只处理非负数。3.`num2`计算平方,结果放入新列表。题目3(C++基础):请编写一个C++函数,输入一个整数数组,返回数组中的最大值和最小值,不使用标准库函数。答案与解析:cppinclude<iostream>include<vector>usingnamespacestd;pair<int,int>findMinMax(constvector<int>&nums){if(nums.empty())return{0,0};intminVal=nums[0],maxVal=nums[0];for(intnum:nums){if(num<minVal)minVal=num;if(num>maxVal)maxVal=num;}return{minVal,maxVal};}intmain(){vector<int>nums={3,1,4,1,5};auto[minVal,maxVal]=findMinMax(nums);cout<<"Min:"<<minVal<<",Max:"<<maxVal;//输出"Min:1,Max:5"return0;}解析:1.初始化`minVal`和`maxVal`为数组的第一个元素。2.遍历数组,更新最小值和最大值。3.返回`pair<int,int>`类型的结果。题目4(JavaScript基础):请编写一个JavaScript函数,实现判断一个字符串是否为回文(正读和反读相同)。答案与解析:javascriptfunctionisPalindrome(s){s=s.toLowerCase().replace(/[^a-z0-9]/g,'');letleft=0,right=s.length-1;while(left<right){if(s[left]!==s[right])returnfalse;left++;right--;}returntrue;}//示例console.log(isPalindrome("Aman,aplan,acanal:Panama"));//true解析:1.将字符串转为小写并去除非字母数字字符。2.使用双指针法,从左右两端向中间遍历,比较字符是否相同。3.若有字符不匹配,返回`false`;全部匹配则返回`true`。题目5(Go基础):请实现一个Go函数,输入一个整数,返回其二进制表示中`1`的个数。答案与解析:gopackagemainimport"fmt"funccountOnes(nint)int{count:=0forn!=0{count+=n&1n>>=1}returncount}funcmain(){fmt.Println(countOnes(13))//3(二进制为1101)}解析:1.使用位运算`n&1`判断最低位是否为`1`,若是则计数加1。2.右移一位`n>>=1`,继续判断。3.循环直到`n`为0,返回计数结果。二、数据结构与算法(共5题,每题10分,总分50分)题目6(链表):请编写一个函数,删除链表的中间节点(假设链表节点数为奇数)。例如,输入`1->2->3->4->5`,删除后为`1->2->4->5`。答案与解析:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefdeleteMiddle(head):ifnotheadornothead.next:returnNoneslow=headfast=headprev=Nonewhilefastandfast.next:prev=slowslow=slow.nextfast=fast.next.nextprev.next=slow.nextreturnhead示例head=ListNode(1,ListNode(2,ListNode(3,ListNode(4,ListNode(5)))))new_head=deleteMiddle(head)whilenew_head:print(new_head.val,end="->")#输出"1->2->4->5->"解析:1.使用快慢指针法:快指针每次移动两步,慢指针移动一步。2.当快指针到达末尾时,慢指针位于中间节点。3.用`prev`记录慢指针的前一个节点,删除慢指针指向的节点。题目7(树):请编写一个函数,判断二叉树是否对称(镜像对称)。答案与解析:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefisSymmetric(root):defcheck(left,right):ifnotleftandnotright:returnTrueifnotleftornotright:returnFalsereturn(left.val==right.val)andcheck(left.left,right.right)andcheck(left.right,right.left)ifnotroot:returnTruereturncheck(root.left,root.right)示例root=TreeNode(1,TreeNode(2,TreeNode(3),TreeNode(4)),TreeNode(2,TreeNode(4),TreeNode(3)))print(isSymmetric(root))#输出True解析:1.对称树要求左子树和右子树镜像相同。2.递归检查:左右子树同时为空则对称,否则比较根节点值,并递归检查左右子树的镜像关系。题目8(动态规划):请编写一个函数,计算给定字符串的最长回文子串的长度。答案与解析:pythondeflongestPalindrome(s):n=len(s)ifn==0:return0dp=[[False]nfor_inrange(n)]maxLen=1foriinrange(n):dp[i][i]=Trueforiinrange(n-1):ifs[i]==s[i+1]:dp[i][i+1]=TruemaxLen=2forlengthinrange(3,n+1):foriinrange(n-length+1):j=i+length-1ifs[i]==s[j]anddp[i+1][j-1]:dp[i][j]=TruemaxLen=lengthreturnmaxLen示例print(longestPalindrome("babad"))#输出3("bab"或"aba")解析:1.使用动态规划`dp[i][j]`表示子串`s[i..j]`是否为回文。2.初始化:单个字符为回文,相邻字符相同为回文。3.递推:当`s[i]==s[j]`且`s[i+1..j-1]`为回文时,`s[i..j]`为回文。4.记录最长回文子串的长度。题目9(贪心算法):请编写一个函数,给定一个非负整数数组`coins`和目标值`amount`,返回凑出`amount`所需的最少硬币数量。假设每种硬币无限可用。答案与解析:pythondefminCoins(coins,amount):ifamount==0:return0dp=[amount+1](amount+1)dp[0]=0foriinrange(1,amount+1):forcoinincoins:ifi>=coin:dp[i]=min(dp[i],dp[i-coin]+1)returndp[amount]ifdp[amount]!=amount+1else-1示例print(minCoins([1,2,5],11))#输出3(5+5+1)解析:1.初始化`dp[i]`为`amount+1`(一个不可能的大数),`dp[0]=0`。2.遍历金额`1`到`amount`,对于每个金额,尝试减去每种硬币,更新最少硬币数。3.若`dp[amount]`仍为初始值,说明无法凑出,返回`-1`。题目10(哈希表):请编写一个函数,找出数组中重复次数超过`n/3`的元素。假设数组长度为`n`,最多有两个这样的元素。答案与解析:pythondefmajorityElement(nums):count1,count2,candidate1,candidate2=0,0,None,Nonefornuminnums:ifnum==candidate1:count1+=1elifnum==candidate2:count2+=1elifcount1==0:candidate1,count1=num,1elifcount2==0:candidate2,count2=num,1else:count1-=1count2-=1count1,count2=0,0fornuminnums:ifnum==candidate1:count1+=1elifnum==candidate2:count2+=1result=[]ifcount1>len(nums)//3:result.append(candidate1)ifcount2>len(nums)//3:result.append(candidate2)returnresult示例print(majorityElement([3,2,3]))#输出[3]解析:1.Boyer-Moore投票算法:维护两个候选者和计数器。2.第一遍遍历,选定两个候选者。3.第二遍验证候选者的出现次数是否超过`n/3`。4.返回符合条件的候选者列表。三、系统设计(共3题,每题20分,总分60分)题目11(分布式系统):设计一个简单的分布式缓存系统,要求支持高可用性和负载均衡。答案与解析:1.系统架构:-使用一致性哈希算法将数据分片存储在多个节点(缓存服务器)上。-每个节点负责一部分数据,当节点宕机时,其数据可由其他节点接管(数据冗余)。2.负载均衡:-使用轮询或随机算法将请求分发到各个节点,避免单点过载。3.高可用性:-每个数据分片在多个节点上存储副本(如3副本,至少2个可用)。-使用心跳检测机制监控节点状态,故障时自动切换。4.缓存过期:-每个缓存项设置过期时间,过期后通过定期扫描或主动过期策略回收。5.数据一致性:-采用最终一致性模型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西安雁塔区长延堡社区卫生服务中心招聘备考题库及完整答案详解一套
- 2025年河北省三河市医院招聘36人备考题库及完整答案详解1套
- 灰色插画风总结汇报模板
- 2025年成都大学附属小学公开招聘教师备考题库含答案详解
- 2025年遵化市事业单位公开选聘高层次人才8人备考题库含答案详解
- 2025年国家空间科学中心质量管理处招聘备考题库参考答案详解
- 2025年汤旺县事业单位公开招聘19人备考题库及完整答案详解一套
- 2025年福州市妇女儿童活动中心关于招聘劳务派遣制工作人员的备考题库及参考答案详解1套
- 2025年南宁市兴宁区虹桥路幼儿园招聘备考题库及1套完整答案详解
- 后疫情时代邀约策略
- 小小小厨师幼儿健康食谱烹饪
- 2023历史新课标培训心得
- 国家开放大学期末机考理工英语3
- 《贪污贿赂罪新》课件
- 《斯大林格勒保卫战》课件
- 清华大学《工程伦理》网课习题及期末考试答案
- 2023年运动康复期末复习-体适能理论与训练(运动康复专业)考试上岸题库历年考点含答案
- 中国纪录片发展历程
- 班组工程进度款申请表
- 四年级阅读训练概括文章主要内容(完美)
- JJG 1033-2007电磁流量计
评论
0/150
提交评论