面灵AI→

科大讯飞 Java 笔试(9.28):通用单选、AI Coding 与数组最值迭代题

轮次
笔试
时间
2026-09
来源
牛客网

《面试题目》

笔试(9 月 28 日)

  1. 通用单选题 18 道,覆盖操作系统、计算机网络等内容
  2. Java 方向单选题 7 道
  3. AI Coding 1 道,30 分
  4. 编程题:给一个数组,每次操作找到当前最大值 max,然后用 max 减去每个元素 Ai 得到新一轮数组,重复若干轮后输出最终的数组

《参考解析》

  1. 编程题的关键是看清「最值位置会互换」:设本轮最大值为 max、最大值下标 p、最小值下标 q。新一轮每个元素都变成 max 减自身,于是 p 位置变成 0(新数组的最小值),q 位置变成 max 减最小值(新数组的最大值)。所以只要在第一次遍历时记下最大值与最小值的位置,之后每轮把这两个下标交换即可,不必每轮再扫两遍找最值——这正是从「两趟遍历」优化到「一趟变换」的地方。

  2. 还能再进一步:把整轮操作看成一次仿射变换:每一轮都是「常数减当前值」,等价于取负再加常数,也就是值 = 系数 × 原值 + 常数。每轮只更新这组系数与常数,配合原数组的最大值、最小值按当前符号推出本轮最大值,最后一次性还原出答案数组,连每轮的 O(n) 变换都能省掉。笔试里写出这个观察很占优势,但要把边界(元素相等、只有单个元素、操作轮数为 0)在草稿上过一遍再提交。

  3. 卡在 70% 多半是输入输出和剪枝:大数组加多轮操作时,逐行 Scanner 和字符串拼接会吃掉大量时间,换成快读(BufferedReader 按行或自定义 readInt)并用 StringBuilder 一次性输出,往往就能把超时的那部分拿回来;数据规模大时还要注意不要每轮都新建数组。

  4. 选择题结构决定备考重点:18 道通用单选里操作系统与计算机网络占了大头,Java 方向单独一块。这类笔试的准备优先级很清楚——进程线程与调度、内存与文件系统、TCP 与 HTTP、子网划分这些基础先过一遍,Java 部分再看集合、JVM 与并发,别把时间全砸在框架细节上。

  5. AI Coding 环节注意判分节奏:这类环节判分通常要排队,等待时间受平台负载影响,别在没想清楚时反复提交刷次数。稳妥的做法是本地把样例和边界都跑通再交,一次过;如果多次提交都卡在同样的用例,先怀疑是输入输出格式或边界条件,而不是继续盲改逻辑。