360 技术综合卷 N 笔试:30 道选择加两道编程,找规律与堆
- 轮次
- 笔试
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 选择题一共多少道、占多少分?主要考哪些方向?
- 代码输出题考的是哪种语言?
- 编程题一:一道「找规律」题,要求根据给定数列或图形推出下一项。
- 编程题二:作者判断是堆(优先队列)相关的题。
《参考解析》
先说清这份记录的边界。 原帖只记了卷面结构(选择 30 题 / 60 分,编程 2 题 / 40 分)、选择题的偏向(测试相关偏多、代码输出用 Python)以及两道编程题的类型,具体题面没有留下。所以下面的内容不是「还原原题」,而是把这几种题型的通用解法讲清楚——遇到同类题能直接用。
「找规律」题的四条主线。 笔试里的找规律几乎不会超出这四类。① 数列递推:先看一阶差、二阶差是不是等差/等比,不行再看「前两项运算得后一项」(a_n = a_{n-1} + 2·a_{n-2}、a_n = a_{n-1}² - 1 这类),实在推不出就用「相邻项的商」或「奇偶项分开看」——奇偶位各自成数列是经典陷阱。② 分组与周期:把数列按 2 个或 3 个一组看,组内关系固定、组间递进;或者判断周期(模运算、循环小数、日期问题里「过 N 天是周几」)。③ 图形/矩阵:按行、按列分别成规律,或沿对角线、按「外围一圈」递进;九宫格题优先试「每行前两个运算得第三个」和「每列同理」。④ 特殊数列:斐波那契变体、质数序列、平方/立方数的加减偏移、杨辉三角的某条斜线。做法上先用纸写两行差分,超过 80% 的题在这一步就能看出结构;还不行就试「模某个数」看余数规律。写代码时把规律表达成递推式再迭代,注意用 long long / Python 大整数避免溢出。
堆(优先队列)题的常见考法。 编程题里出现堆,基本是这五类:① Top-K——求最大的 K 个数用「大小为 K 的小顶堆」,遍历时比堆顶大就替换,O(n log K),比全排序省;求第 K 大等价于求第 n-K+1 小,同理。② 数据流中位数——维护一个大顶堆(存较小的一半)和一个小顶堆(存较大的一半),插入后调整两边大小差不超过 1,中位数从堆顶取,O(log n) 每次。③ 合并 K 个有序链表/数组——把每个链表当前头节点入小顶堆,每次弹出最小的接到结果后面、再把它的 next 入堆,O(N log K)。④ 堆排序 / 建堆——heapify 从 n/2-1 往前做下沉,建堆 O(n)、整体 O(n log n);手写时注意下沉的终止条件。⑤ 带权最短路的 Dijkstra、或「任务调度/会议室」这类按结束时间取最小的贪心。Python 里用 heapq(小顶堆;要小顶堆存负数或存 (优先级, 数据) 元组实现大顶堆),C++ 用 priority_queue(默认大顶堆,greater<> 变小的),Java 用 PriorityQueue 配 Comparator。面试/笔试里被追问时,讲清「为什么用堆而不是排序」——数据量大或流式输入时,堆只需要 O(K) 额外空间、且能边读边维护。
Python 代码输出题的考点。 选择题里考代码输出,几乎集中在:可变默认参数(def f(a=[]) 的坑)、列表的引用与浅拷贝(b = a vs b = a[:]、[[0]*3]*3 的共享行)、is 与 == 的区别(小整数缓存、字符串驻留)、闭包与延迟绑定(循环里的 lambda 全捕获最后一个值)、try/except/finally 的返回值覆盖、以及整数除法 // 对负数的取整方向。做这类题不要靠记忆,按执行顺序在纸上画一遍变量表,特别是可变对象被多处引用的时候。
卷面节奏。 60 分的 30 道选择题平均每题 1 分多钟,遇到没把握的先标记、别纠缠;两道编程题 40 分才是大头,先把有把握的写完整(哪怕暴力解,能过部分用例也有分),再回头补选择题。笔试里最亏的是「选择题纠结半小时、编程题没时间写完」——这道题的作者提到「选择题似乎不是特别难,忘记了」,说明选择题本身没形成记忆点,把时间留给编程更划算。