溢信科技笔试
1.选择题
本次笔试一共五道选择题,其中两道都是考的continue,因此在这里记录一下continue和break的区别
在Java语法中,continue是跳过本次循环,进行下一次循环;而break是直接跳出循环。
在上图中,我们会发现if里面的语句走完的时候,就立马跳出循环,当i取余不等于0的时候才会有s的值相加,所以每次s相加取到的都是偶数值,当i加到7的时候退出了循环。
从上图我们可以看出,当走到break这里的时候直接退出了循环,s输出为0。
2.编程题
在本次笔试中的编程题中,一共有两道,第一道是在有序数组中使用二分查找找出目标值。第二道是找出字符串中重复字符最多的子串。
2.1 二分查找目标值
思路:使用一层while循环,将更新的中间索引对应的数组值与目标值比较,如果相等直接返回中间索引值;如果小于则更新右边位置为原中间索引前一个位置;如果大于则更新左边位置为原中间索引的后一个位置。

public int search(int[] nums, int target) { int left = 0, right = nums.length-1; while(left <= right){ int mid = (right - left)/2 + left; if(nums[mid] == target){ return mid; }else if(nums[mid] < target){ left = mid + 1; }else{ right = mid -1; } } return -1; }
2.2 找出字符串中重复字符最多的子串
从上图可以看出,最后截取的重复字符最多的子串是eeeee。
思路:一层for循环,索引从1开始,当后一个数组值跟前一个数组值相等只,当前长度自增;当不相等时,说明是其他字符,此时先判断当前字符长度与最大长度的值。然后更新最大长度以及当前长度还有末尾索引。最后根据最大长度索引和末尾索引返回截取的子串。

private static String findLongestString(String s){ if(s == null || s.length() == 0){ return ""; } char[] cArr = s.toCharArray(); int maxLen = 1; int curLen = 1; int endIndex = 0; for (int i = 1; i < cArr.length; i++){ if(cArr[i] == cArr[i-1]){ curLen++; } else { if (curLen > maxLen){ maxLen = curLen; endIndex = i - 1;//更新尾元素 } curLen = 1;//重置为1 } } if (curLen > maxLen){ maxLen = curLen; endIndex = cArr.length - 1; } return s.substring(endIndex - maxLen + 1, endIndex + 1); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2022-10-27 2.@Param()注解