面灵AI→

京东 9.26 笔试:两道算法题加一道 AI Coding

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

《面试题目》

  1. 编程题一:n 行 m 列的网格,每个格子是空地、/ 或 \ 三种之一。从每个格子的每个方向(U/D/L/R)各发射一束光线,光按所在格子的物体改变方向后前移一格,重复直到移出网格。起始位置不同或起始方向不同即算不同光线,求能逃离实验室的光线总数。多组数据,n×m 之和不超过 10^6。
  2. 编程题二「封条受力的安全起点」:给 n、安全范围 [L, R]、倍数 G 和 n 个数值变化 d1…dn。初始值 x 必须是 G 的倍数且落在 [L, R] 内,从 x 出发依次施加每次变化,过程中任意时刻数值都必须留在 [L, R] 内。求满足条件的初始值个数、最小值与最大值;无解输出 0 0 0。n ≤ 2×10^5,|L|、|R|、G 到 10^18,|di| ≤ 10^12。
  3. AI Coding:题干给出一份需求文档(readme),要求借助 AI 直接产出可提交的代码。

《参考解析》

  1. 镜子反射题:本质是状态图可达性:把「格子 + 方向」看成一个状态,一共 4nm 个,转移规则由格子和方向唯一决定,顺着走到出界就算逃离,走进已访问过的状态就说明会永远打转。逐条光线模拟的代价是光线数乘路径长度,会超时;正确做法是记忆化——同一个状态出发的结果完全相同,算过一次就缓存「能否逃出」,可以按出界方向反向递推,也可以建反向边做拓扑。反射规则写成一张固定的转移表(U/R/D/L 与 /、\ 的对应),别用一串 if 现拼,斜杠方向写反是这类题最常见的失分点。多组数据记得清空标记数组,总和 10^6 的量级用 O(nm) 才稳。
  2. 安全起点题:把过程约束翻译成前缀和区间:设 Sk = d1 + … + dk,要求是任意时刻 x + Sk 都在 [L, R] 内,也就是对全部 k 取交集,得到 x ∈ [L − min(0, minS), R − max(0, maxS)],一次遍历求前缀和的最小值与最大值就够。剩下的是数这个区间里有多少个 G 的倍数,并找出其中最小和最大的那个,除法的取整方向、负数边界和 long long 溢出都要留意,无解时按题目要求输出 0 0 0。这题的全部难度在建模,不在代码。
  3. AI Coding 怎么用:需求文档长的时候别整段丢给模型就交——先让它输出实现计划与边界条件,再分块生成,然后自己跑样例验证;涉及 10^18 这种量级的题,边界用例必须手工构造。AI 生成的代码要当草稿读一遍,最容易漏的是多组数据的清空、取整方向和大数溢出。另外提醒模型或自己注意:若要求完整输出,必须明说「完整输出而不是省略相同部分」,否则拿到的是残缺版本。