美少年实习生后端Java笔试题解析

美少年 · 后端Java实习生 · 笔试 · 2026-03

面试题目

笔试概况

  • 题型:10道单选题 + 5道不定项选择题 + 3道算法题
  • 难度:算法题整体不难

算法题

第1题(核心模式):消除相邻元素

消除字符串/数组中相邻的相同元素,使用栈实现。

第2题(ACM模式):数组数字排序拼接输出

输入一个数组,将数组中的数字排序后拼接成字符串输出。 (使用了 Arrays.sort,不确定是否可行。)

第3题(ACM模式):字符串加密填充

给定一个字符串和一个数字,数字代表容器的行数,将字符串依次填充进容器,最后按行输出结果(类似栅栏密码/矩阵填充加密)。


参考解析

第1题:消除相邻元素(栈)

  • 遍历字符串/数组,维护一个栈。
  • 若当前元素与栈顶元素相同,则弹出栈顶(消除);否则将当前元素压栈。
  • 遍历结束后,栈中剩余元素即为结果。
  • 时间复杂度 O(n),空间复杂度 O(n)。
  • Java 可用 Deque<Character> stack = new ArrayDeque<>() 实现。

第2题:数组数字排序拼接输出

  • 读取输入数组后,使用 Arrays.sort() 排序,再用 StringBuilder 拼接输出即可。
  • 注意 ACM 模式需要自行处理输入(ScannerBufferedReader)。
  • Arrays.sort 对基本类型为双轴快速排序,完全可用,不影响结果。
  • 若题目要求”最小数字拼接最小”(如大数排列),需自定义比较器:按字符串拼接 a+b vs b+a 排序。

第3题:字符串加密填充(矩阵/栅栏密码)

  • 给定行数 rows,将字符串按列顺序逐字符填入二维矩阵(每列一个字符)。
  • 计算列数:cols = ceil(len / rows),构建 rows × cols 的矩阵。
  • 按顺序填充后,逐行读取矩阵内容拼接输出,空位可忽略或填充占位符(视题意而定)。
  • 本质是字符串按固定行数分组重排,注意边界处理(最后一列可能不满)。