尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

2023校招算法岗笔试复盘:360客观题考点全解析

2023校招算法岗笔试复盘:360客观题考点全解析 2023校招算法岗笔试复盘360客观题到底在考什么每年八九月份校招笔试就像一场大浪淘沙。我去年集中刷了几十家公司的算法岗笔试题360的这套客观题给我留下的印象挺特别——它不像有些厂子堆砌偏怪难题也不像另一些厂子把题出得过于“考验阅读理解”整体风格是“广而不浅、宽而务实”。尤其是客观题部分混合了数据结构、机器学习理论、概率统计、深度学习基础甚至还有少量脑筋急转弯式的逻辑题非常考验基础功底的扎实程度。这篇文章不打算贴原题毕竟笔试题有保密期而且每年题库都在换直接背题意义不大。我更想从题型结构、知识点权重、容易翻车的细节、以及备考思路这几个维度还原我当时做这套题的完整思考过程。如果你正在准备下一届校招算法岗或者想评估自己的基础功底是否够硬这篇复盘应该能给你一些很实在的参考。1. 这套题的整体气质广度优先深度兼顾1.1 考察范围的第一印象360作为安全起家的企业算法岗的笔试范围整体偏通用型不搞“安全算法专场”这点和预期不太一样。从我做题时的体感来看题目覆盖大致可以分成五个模块数据结构与算法基础栈、队列、二叉树、排序、动态规划机器学习理论模型原理、损失函数、正则化、偏差方差深度学习基础CNN、RNN、激活函数、梯度消失概率论与数理统计概率计算、常见分布、参数估计逻辑与工程常识时间复杂度假装题、边界条件、阅读理解题这五个模块基本就是国内算法岗笔试的“标配套餐”但360的题有一个特点它不会在同一个知识点上连续出两道题也不会刻意针对某个冷门模型深入追问。它的筛选逻辑更像是在看你“学得全不全”而不是“某一块钻得深不深”。1.2 客观题占比和题型特征我记得这套客观题一共大约30到40道具体数字记不太清了全部是选择题有单选也有多选。多选的计分逻辑比较严格少选通常不得分这就意味着你不能用排除法去冒险。从我自己的做题感受来看这套题有两个突出的“体感特征”第一题干描述极其精简有些题甚至只给一行公式或者一个代码片段没有多余背景信息。你需要快速抓取题眼不能被冗长的描述带偏。第二干扰项设计得很“懂行”——错误选项往往不是明显的胡说八道而是某个经典公式缺了条件、某个概念换了个说法、或者某个边界情景没有考虑。这种设计对死记硬背的同学非常不友好。提示如果你平时只是背模型公式不理解推导过程和适用条件这类题会做得很痛苦。2. 数据结构与算法不只是“刷题”那么简单2.1 一个栈和队列相关的边界陷阱这部分给我印象最深的是一道关于用两个栈实现队列的题。很多同学准备过这道题都知道“入队直接入栈A出队时若栈B为空则把栈A全部倒入栈B然后再弹出”。但360的题设了一个陷阱题目问的是“最坏情况下单次出队操作的时间复杂度是多少”。如果你只是机械记忆“均摊O(1)”就容易选错。这里的坑在于“最坏情况”——当栈B为空时需要一次性把栈A的所有元素弹出再压入栈B单次操作的复杂度是O(n)而非O(1)。只有摊还分析下才是O(1)。这种题考的不是你会不会写代码而是你有没有真正理解摊还分析的概念能不能区分“均摊时间复杂度”与“最坏情况时间复杂度”。我当时扫了一眼就选了O(1)但在检查阶段又改回了O(n)。这个细节很值得其他同学留意。2.2 排序算法稳定性的经典考法稳定性是排序题里的高频考点360也没放过。但它不是简单地考“快排稳定吗”而是给了一个具体的交换场景让你判断经过某次交换后两个相等元素的相对位置是否发生了改变。这就比死记硬背要灵活了。我的建议是不要只背结论要能手写一遍插入排序、归并排序和快排的代码在代码层面理解为什么相等元素会被交换。用表格总结一下常规结论排序算法平均时间复杂度最坏时间复杂度空间复杂度稳定性冒泡排序O(n²)O(n²)O(1)稳定插入排序O(n²)O(n²)O(1)稳定选择排序O(n²)O(n²)O(1)不稳定归并排序O(n log n)O(n log n)O(n)稳定快速排序O(n log n)O(n²)O(log n)不稳定堆排序O(n log n)O(n log n)O(1)不稳定2.3 动态规划题的“送分”与“坑分”整套题里动态规划大概出了两三道难度都不算高基本停留在背包问题的变形和简单线性DP级别。有一道题让我印象深刻它给了一个经典的爬楼梯问题但加了一个限制条件——不能连续走两步。这道题的递推公式并不复杂设dp[i]表示到达第i级台阶的方法数由于不能连续走两步所以状态需要额外记录“上一步是否走了两步”。可以定义两个状态dp1[i]最后一步走了一级到达第i级的方法数dp2[i]最后一步走了两级到达第i级的方法数递推关系dp1[i] dp1[i-1] dp2[i-1]从i-1级走一级过来上一步可以是任意的dp2[i] dp1[i-2]从i-2级走两级过来但前提是上一步必须走一级即状态为dp1最后答案是dp1[n] dp2[n]。这道题的价值在于它不是纯粹的模板题而是要求你在经典模型上做状态扩展。这类“经典模型新约束”的组合在笔试里非常常见备考时一定要学会状态维度的扩展思路而不是机械地背转移方程。3. 机器学习理论概念辨析比公式默写更值钱3.1 正则化与偏差方差的核心逻辑机器学习理论部分360比较偏爱基础概念辨析。我印象里有一道关于L1和L2正则化的选择题选项涉及稀疏性、抗共线性、梯度更新方式等多个角度。这类题的本质是考你两个视角。从优化视角看L1正则化在零点不可导导致参数容易收敛到0从而产生稀疏解L2正则化对参数进行等比缩放不会产生严格的零。从几何视角看L1的约束区域是“带尖角的菱形”L2是“光滑的球体”最优点更容易落在L1的尖角上恰好对应某些参数为0而L2需要加入一个小的正则项使得特征变得平滑且高度相关时接近于0但不会是严格的0。这背后其实还藏着另一个考点为什么L2正则化能控制模型复杂度因为它在损失函数里加入了参数平方和梯度下降更新时相当于对权重做了一次等比缩小weight decay限制了参数的取值空间从而降低了模型对训练数据的过拟合程度。3.2 偏差方差分解的易错点有一道题考的是偏差方差分解选项把“模型复杂度增加时偏差怎么变、方差怎么变”组合成了好几项。很多人会觉得“模型越复杂偏差越小”这个说法部分正确但不够完整——随着复杂度增加偏差通常单调下降方差通常单调上升而总误差是U型曲线。不过这里有个前置条件前提是模型容量不断增加且训练方式没有正则化约束。如果加了强正则化模型复杂度增加可能不会明显降低偏差因为正则项本质上限制了模型的表达能力。这就是为什么“模型越复杂偏差越小”不能作为无条件判断的原因。3.3 损失函数与激活函数的关系360的客观题里关于损失函数和激活函数的组合考得也很有意思。有一道题给了一个神经网络场景问最后一个全连接层后面接什么激活函数、配什么损失函数才是合理的组合。这个题的核心要点是二分类sigmoid binary cross-entropy多分类softmax categorical cross-entropy回归问题线性激活不加激活函数 MSE或MAE看似简单但有一项干扰项很阴险——它设置了一个“多标签分类”场景正确的组合应该是sigmoid binary cross-entropy而不是softmax categorical cross-entropy。多标签分类中每个标签是独立的二分类问题sigmoid可以对每个输出维度独立做概率映射而softmax会强制所有类别概率之和为1与多标签的场景冲突。4. 深度学习基础看似送分实则埋雷4.1 梯度消失的根因分析深度学习基础部分360考了梯度消失和梯度爆炸的背景原因。这类题传统答案是“网络层数过深导致梯度连乘”但360的选项里加了一个干扰项把BN层描述成“彻底解决梯度消失的机制”。这个选项非常容易误选。BNBatch Normalization确实能缓解梯度消失问题但它不是“彻底解决”。BN的原理是对每一层的输入做归一化使其均值为0、方差为1然后引入两个可学习的参数做缩放和平移。这能让数据分布保持稳定避免陷入饱和区但并不能根治梯度连乘中的指数衰减问题。真正的根治手段包括残差连接ResNet的核心思想、使用ReLU等非饱和激活函数、合理的权重初始化方式等。所以在选“下列哪些能缓解梯度消失”时BN可以选但如果题目问的是“能够解决”BN就要慎重了。4.2 CNN感受野的计算感受野是CNN里面一个高频考点。360这道题给了三层卷积的kernel size和stride然后让算最后一层某个神经元的感受野大小。计算公式其实不复杂第n层感受野 第n-1层感受野 (kernel_size_n - 1) × stride_1×stride_2×...×stride_{n-1}更直白的理解是当前层的感受野大小取决于之前所有层的卷积核和步长的累积效应。我当时是把每一层的感受野逐步手推做出来的。用三层举例第1层kernel3, stride1感受野3第2层kernel3, stride2感受野 3 (3-1)×1 5第3层kernel3, stride1感受野 5 (3-1)×(1×2) 9注意第二层stride2之后第三层覆盖的输入范围会跨过间隔所以累积要考虑之前所有stride的乘积。这种题不难但需要在草稿纸上一步步算不能心算跳步。4.3 激活函数选择题的隐藏条件有一道关于激活函数的题让我差点翻车。题目问的是“下列哪些激活函数在输入为0时的导数不为0”。我脑子里瞬间列出了ReLU、Leaky ReLU、ELU、tanh、sigmoid这些函数。ReLU在x0处导数不存在但很多教材约定为0或1存在争议Leaky ReLU在x0处导数为负数斜率比如0.01ELU在x0处导数为1tanh在x0处导数为1sigmoid在x0处导数为0.25关键点在于ReLU在0点处不可导但代码实现通常定义了次梯度PyTorch和TensorFlow里x0处的梯度按0处理。但数学严格意义上它不可导。360这道题之所以能做到“看似简单实则容易丢分”就是因为它同时考察了数学定义和工程实现两个层面。5. 概率统计与逻辑题最容易被低估的拉分项5.1 条件概率题的经典套路概率部分的题目密度不高但几乎每一道都带有“计数”属性。有一道题是关于放回抽样与不放回抽样的概率计算题干描述的是一个很朴素的生产线质检场景。这种题看似简单但包含一个经典陷阱事件发生的顺序和无序组合之间的转换。如果用的是组合数计算需要非常小心“分子分母保持一致”要么都用组合数要么都用排列数不能混用。我当时的做法是先写出条件概率的定义式P(A|B) P(AB)/P(B)然后分步计算分子分母。这样虽然慢一点但不容易出错。在笔试这种高压环境下概率题最忌讳心算很容易漏乘以某个系数。5.2 期望值计算的级数求和有一道题涉及几何分布的期望计算本质是“重复独立实验直到首次成功”的期望次数。公式是1/p这个大家都背过。但360把它包装成了一个“每次实验成功率逐次变化”的场景。这就不能直接套1/p了。我记得当时先在草稿纸上写出了前几次成功概率的序列发现前几次的规律性比较强但后续会出现分支。这种题的正确做法是划分事件空间利用全期望公式逐层拆解。对于这类“看似几何分布实则非独立同分布”的题拿到手先不要急着套公式花30秒判断各次实验是否满足独立同分布条件比盲目计算更高效。5.3 逻辑与工程常识题速度和准确率的平衡这套题还有一个特色模块逻辑判断题和工程常识题。比如给一段代码片段让你判断它的时间复杂度和边界条件是否存在bug或者给一个业务场景让你选择最优的算法方案。有一道题让我印象很深刻它给了一个“从海量数据中找出top K个高频词”的场景选项里有哈希统计小顶堆、Trie树排序、位图法等。这道题本身不难正确答案是哈希统计小顶堆但它考的是你对“海量数据”这个前提的敏感度。如果数据量真的很大比如PB级别单机哈希统计可能内存爆掉需要加外部排序或者分治。但客观题为了控制复杂度通常假设数据可以放入内存。你要做的是根据题目给的约束条件判断最合适的方案而不是自己脑补更复杂的分布式场景。注意做这类题时严格以题干信息为准。题干说“内存足够”就不要再纠结内存不够怎么办。6. 从做题到复盘这套题给我留下的备考建议6.1 建立“题目-知识点-易错点”三层索引很多人刷题只关注“这道题我有没有做对”忽略了更深层次的复盘。我做完360这套客观题后把每一道题在生产环境中的意图和考察核心在文档里做了分类整理。复盘的逻辑不是重做一遍而是问自己三个问题这道题考察的知识点属于哪个模块我的错误是概念不清、计算失误、还是题干理解偏差这个知识点还能衍生出哪些变式考法如果每次模拟考试都能做到这种程度的复盘知识体系的漏洞会快速暴露复习效率也会大幅提升。6.2 注重推导不要只记结论360这套题释放了一个明确信号它考察的是你对知识的“内化程度”而非“见过与否”。如果你只是背过“softmax配cross-entropy”而不知道为什么不理解它等价于一个对数似然最大化问题不理解多标签分类要换成sigmoid那你面对变式题就只能靠猜。我建议在备考期养成一个习惯每学一个模型或算法至少完成三件事——手推损失函数对参数的梯度用代码实现一个最小可运行版本用一句话解释它解决了什么实际问题。这三个步骤做完你对知识的理解深度会明显超过大多数人。尤其是手推梯度这一步很多同学嫌麻烦跳过但它在面试和笔试里都是最能体现功底的地方。6.3 时间分配给“概率题”留足余量我做这套题的整体时间感受是数据结构与算法部分约40%时间机器学习与深度学习各占20%概率统计和逻辑题占20%。但概率统计题的思考密度最大单题耗时经常超过预期很容易挤占后面的做题时间。所以我的时间策略是先快速过一遍所有题目把一眼能看出答案的题标记完成把需要计算的题标记为“待计算”把完全没思路的题放在最后。这样能保证基础分稳固到手再集中火力啃硬骨头。笔试题有一个残酷的现实多选部分少选不得分且错误会倒扣分如果有倒扣规则不同公司不一样。在这种情况下确定答案优先于蒙答案凡是拿不准的题宁可少选也不要去猜除非你能排除掉绝对错误的选项。6.4 这套题对面试的隐性暗示客观题只是算法岗招聘流程的第一关但它往往决定了你能不能进到面试环节。更重要的是360这类大厂的客观题风格往往与后续面试的考察方向高度一致——它们更关心你的基本功是否扎实能否从第一性原理出发推导问题。如果你在笔试阶段就暴露了概念不清的问题面试官大概率也会在技术面针对这些薄弱点连续追问。所以客观题本质上就是第一轮技术面不能只当成“刷过去就行”的任务。我在复盘这套题时最深的一个体会是笔试不拼智商拼的是你有没有建立系统的知识框架。哪怕你是临时抱佛脚冲进来的只要能把数据结构、机器学习、深度学习这三条主线梳理清楚概率统计的基本题型练到位客观题拿高分是可以做到的。现在回想起来360这套客观题并没有出什么“惊天地泣鬼神”的偏题怪题它的难度更在于让你在有限时间内暴露知识体系里的盲区。与其说它是一场考试不如说它是一次系统性的自测。如果你能在这种压力场景下稳定输出说明你的基础是真的能扛事的。
返回列表