360 秋招笔试面经:40 道选择题加两道编程
- 轮次
- 笔试
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 选择题 40 道:覆盖数据库、Java、UML、大模型、算法、前端、Linux 等方向,范围很广。
- 编程题 1:最小自然数(原帖未记录完整题面,帖主自评思路没问题,但用例通过率不到一半)。
- 编程题 2:原帖判断是一道贪心题,因时间耗尽未写完,直接放弃。
《参考解析》
选择题为什么「写一半猜一半」。这套卷的特点是横向铺得很开:数据库、Java、UML、大模型、算法、前端、Linux 各来几道,任何只押一个方向的人都会有一半不会。应对这种「范围最广」的卷子,靠的不是继续深挖某个方向,而是把各科的常识层补平:数据库侧至少掌握范式与 SQL 语义、事务隔离级别、索引与锁的基本结论;Java 侧掌握集合结构、异常体系、JVM 内存分区这几个必考面;Linux 侧掌握权限、常用命令语义与进程/文件描述符概念;大模型侧掌握 Transformer 基本结构、微调与 RAG 的区别、上下文与 token 这类概念;UML 只在概念题里出现,记住类图、用例图、时序图各自表达什么就够。准备方式建议按「一分钟能判断对错」为标准过一遍各科速查表,而不是把每一科都学成系统课。
「最小自然数」这类题的解法。求最小未出现的自然数(MEX)有几种常见做法,按数据规模选:一是哈希集合法,把所有元素放进集合,再从 0 开始逐个判断是否存在,时间 O(n)、空间 O(n),实现最快;二是排序后扫描,排序后从左到右找第一个「期望值」断档的位置,O(n log n)、空间 O(1);三是原地标记法,若元素范围在 [0, n] 内,可以把值 v 交换到下标 v 的位置,最后扫一遍找到第一个下标与值不匹配的位置,做到 O(n) 时间 O(1) 空间。
容易踩的坑有几处:自然数是否包含 0、元素可能为负或超过 n 时如何处理(这类值可以直接忽略并单独记录)、有重复元素时交换会死循环(要判断目标位置是否已经是同一个值)、以及数据规模大时不要用递归。只过了一半用例,最常见的三个原因是:边界上的 0/负数没处理、重复元素导致死循环或超时、以及输出格式(要求返回个数还是返回具体的最小值)与题面不一致。
怎么判断一道题是不是贪心。帖主对第二题的第一反应是贪心,这是笔试里很常见也最容易翻车的判断。判定的可操作方法是:先假设贪心策略(例如按某种顺序排序后逐项处理),然后主动构造反例——把相邻两三项换一下顺序看结果会不会变差,或者构造一个「局部最优拖累全局」的输入。如果找不到反例,再尝试交换论证或归纳证明;证不出来就只能当作假设,写的时候保留暴力解做对拍。反过来,看到「每种物品有容量约束、要求数量最大」这种二维约束结构时,要立刻想到 0/1 背包而不是贪心,因为二维费用下贪心的交换性质通常不成立。笔试的稳妥策略是:先把暴力/DP 的正确版本写出来拿部分分,再去优化,别为了想一个漂亮的最优解把时间耗光。
这场笔试暴露的节奏问题与复盘方法。两道编程都没拿到满意分数,通常是时间分配而不是能力的差距:40 道选择题如果卡在超过一半的题上反复纠结,编程题只剩很短时间,第一题写不完、第二题连读题都来不及。合理的分配是先花十到十五分钟把选择题里「能立刻判断」的做掉,拿不准的标号跳过,把大头时间留给编程;编程里优先保证每题的最小可运行版本(读入、输出、能跑通样例),再逐步加逻辑。复盘时建议把错题按考点归类而不是按题号记录:同一个考点连续两次错,说明是知识缺口;同一个考点每次都「差一点」,说明是熟练度问题,需要限时重做。把两类问题分开处理,比刷更多新题有效得多。