拓冰建站拓冰建站
首页 / 资讯中心 / 正文

云从科技2020算法岗校招笔试复盘:考点分析与备考策略

2020年云从科技校招算法岗的笔试我前前后后准备了大概三周最后拿到Offer之后回头复盘发现这套题其实很有代表性。它不是单纯考你会不会写代码而是把代码功底、机器学习深度、数学直觉、还有对CV业务场景的理解揉在一起考覆盖面相当广。如果你正在准备AI公司的算法岗校招尤其是计算机视觉方向的这份笔试题复盘应该能帮你少走不少弯路。先说下云从这家公司。它是做计算机视觉起家的人脸识别、安防、智慧城市、智慧金融这类业务是它的基本盘。所以算法岗笔试自然就带着强烈的CV色彩同时也保留了中大型算法岗通用的考察框架:数据结构与算法、机器学习/深度学习理论、数学基础、代码题。我当年考的时候整体感受是:选择题和简答题考得非常细编程题难度中等偏上但区分度很大真正能把代码题完全AC的人不多。下面我就按笔试的实际结构把每个模块的考点、出题思路、以及我踩过的坑一一拆开讲。这篇文章不是单纯对答案更多是想跟你聊清楚“为什么这么考”和“怎么准备才有效”。1. 先搞清楚云从算法岗到底考什么1.1 企业定位决定出题方向先别急着刷题你得先理解出题人的逻辑。云从的核心业务集中在对图像、视频数据的实时分析和结构化理解上这就决定了它招算法工程师时最看重三件事第一代码基本功。不管是做人脸检测、活体识别还是姿态估计最终都要落地成工程代码。笔试里的编程题就是筛掉“只会调库”的候选人的第一道关卡。第二机器学习与深度学习原理的扎实程度。CV方向虽然以深度学习为主但练手和笔试时经常出现的SVM、决策树、聚类这类经典算法依然会考因为面试官想知道你的“内功”是否到位。第三对图像处理底层算法的熟悉度。这一点是很多学校刚毕业的同学容易忽略的。云从这类视觉公司笔试里经常出现Sobel算子、拉普拉斯锐化、高斯滤波这类图像处理基础而不是纯深度学习那些网络结构。所以你的备考重心不能偏。如果你只刷LeetCode不补机器学习和图像处理基础大概率会在选择题和简答题上翻车。反过来如果你只背深度学习概念代码题又过不了关。笔试考的是综合能力必须三条腿走路。1.2 真题结构复盘与时间分配策略我当年参加的是2020届校招的统一在线笔试整体时间在90到120分钟之间不同批次可能略有差异题型大致可以分成四类单选题/多选题约10-15道覆盖数据结构、概率统计、机器学习基础、深度学习基础。简答题/推导题约2-3道比如SVM对偶推导、KMP的next数组计算、贝叶斯公式应用。编程题约2-3道以数组、字符串、动态规划、图论为主有时会和业务场景结合。综合场景题0-2道给一个现实业务问题让你谈算法方案设计。我的实际策略是拿到卷子先花5分钟通读一遍把每道题按“会做/不确定/完全不会”分级。然后立刻做编程题因为编程题一般耗时最长且分值最高必须保证有充足时间。做完代码题再回头做选择题和简答题。如果时间不够选择题蒙一个比空着强但代码题空着就是直接丢大分。这里有个经验之谈千万不要在单选题上纠结太久。一道题2分你花10分钟抠它不如把这10分钟留给分值更高的编程题。我见过太多人选择题纠结半天最后代码题没时间写这才是真正的“得不偿失”。2. 数据结构与基础算法笔试的基本盘2.1 KMP算法与next数组计算很多同学一看到KMP就头疼但云从这个级别的公司笔试KMP出现的概率真的不低尤其是“手算next数组”这种题型考的是你对匹配机制的理解是否透彻。先回顾一下next数组的定义对于模式串pnext[i]表示当p[i]与主串匹配失败时模式串应该回退到的位置。在考研和校招里常见有两种定义方式一种是next[i]存的是“最长相等前后缀长度”另一种是存“最长相等前后缀长度-1”。云从的题一般会明确告诉你采用哪种定义你计算时要仔细看题目说明别拿着一种定义硬套。以模式串pabacaba为例我用最长相等前后缀长度的方式手算一遍next[0]通常规定为-1或者0看题目定义。next[1]子串a最长相等前后缀长度为0。next[2]子串ab前缀{a}后缀{b}没有相等长度为0。next[3]子串aba前缀{a, ab}后缀{a, ba}最长相等前后缀是a长度为1。next[4]子串abac前缀{a, ab, aba}后缀{c, ac, bac}没有相等长度为0。next[5]子串abaca前缀{a, ab, aba, abac}后缀{a, ca, aca, baca}最长相等前后缀是a长度为1。next[6]子串abacab前缀{a, ab, aba, abac, abaca}后缀{b, ab, cab, acab, bacab}最长相等前后缀是ab长度为2。next[7]子串abacaba前缀{a, ab, aba, abac, abaca, abacab}后缀{a, ba, aba, caba, acaba, bacaba}最长相等前后缀是aba长度为3。所以最终next数组以最长相等前后缀长度定义是[-1, 0, 0, 1, 0, 1, 2, 3]。你可能会问这东西实际写代码时不是直接调库吗为什么笔试非要手算或者手写KMP因为KMP的next数组是“动态规划思想”的典型缩影面试官通过它考察的是你是否理解状态转移、是否理解如何利用历史信息避免重复计算。这种能力在深度学习的反向传播、特征金字塔等复杂场景中同样重要。实操建议备考时不要背代码而是自己把“为什么要回退到next[i]”画图理解一遍。能画出匹配过程的人写KMP基本一遍过背代码的人换一个变形题就懵。2.2 排序算法与其他高频基础题排序算法是笔试选择题的常客云从的题喜欢让你对比不同排序算法的稳定性、时间复杂度和空间复杂度。这里我列一个高频考点表你可别只背结论要能说清为什么快排虽然是平均O(n log n)但最坏会退化到O(n^2)所以工程上常用三数取中或随机选pivot来规避。归并排序是稳定排序空间复杂度O(n)常用在外部排序上。堆排序建堆是O(n)但很多人不知道——你以为是O(n log n)实际建堆只需要从最后一个非叶子节点往前下沉数学推导是O(n)。插入排序在近乎有序的数组上表现极好复杂度接近O(n)所以很多高级排序比如TimSort会用它做小数组或接近有序数组的排序。除了排序Dijkstra、并查集、快速幂也是笔试高频考点。特别是快速幂看似是“求a的b次幂”这种简单题但用在矩阵快速幂上就能解决斐波那契数列求第n项之类的问题。云从的编程题如果考到这类题通常不会直接说“你来写个快速幂”而是包装成一个“计算某个递推式的第n项”的问题你得能识别出来。我当时的教训是在这些基础题上不要追求“能做到”要追求“能秒杀”。因为这些题目是你最确定的分如果你在选择题上还要现场推复杂度说明准备不到位后面的难代码题基本上没时间做。3. 机器学习与深度学习AI算法岗的核心考点3.1 经典机器学习考点从LR到XGBoost云从笔试里机器学习的考察比例不低而且出题风格偏“原理验证”爱在简答题里让你“写出公式并说明原因”。先说说逻辑回归LR看起来简单但考点密集。你要能写出sigmoid函数的表达式解释为什么用交叉熵而不是均方误差因为MSE配合sigmoid会导致非凸优化容易陷入局部最优还要能推导出梯度下降的更新公式。更深一层L1正则化和L2正则化的区别也要门儿清L1能得到稀疏解L2只能让参数变小原因是L1在零点不可导优化时更容易把参数压到0。SVM是另一个经典考点。云从的简答题曾经出现过“简述SVM的对偶问题推导和核函数的作用”。这个题你光背概念肯定不行得能写出拉格朗日函数、求偏导等于0、反代回去得到对偶形式这套流程。核函数的作用我可以一句话讲透把低维线性不可分的数据映射到高维空间去找超平面而核技巧让你不需要显式计算这个映射只需要算内积。决策树和集成学习也经常考。XGBoost在热搜词里出现频率很高这是因为它面试出现率太高了。笔试里关于XGBoost常考的有这几个点它是一种boosting方法每一棵树拟合的是前一棵树的负梯度其实是残差的近似它加入了正则项控制模型复杂度它对特征支持列采样所以比传统GBDT抗过拟合。你把这个逻辑链条写清楚简答题基本上就能拿高分。聚类算法也是一个容易踩坑的点。K-Means是最基本的但笔试爱考它的缺点需要预设K值、对初始中心敏感、只能处理凸形簇。所以延伸出来的DBSCAN基于密度聚类就能处理任意形状还能识别噪声点。云从这类CV公司的选择题如果考到聚类答案往往落在这几个对比点上。3.2 深度学习基础与CV方向必背清单深度学习部分的笔试难度比面试要浅一些但覆盖面很广。我自己总结了一个“必背清单”你按照这个清单去查漏补缺基本不会出大问题卷积操作输入特征图尺寸、卷积核大小、stride、padding之间的计算公式。这个几乎必考务必做到随手算出输出尺寸。池化层的作用降维、增大感受野、提供平移不变性。但要注意全局平均池化比全连接层更抗过拟合所以很多分类网络拿它收尾。Batch Normalization为什么能加速训练因为它在每个batch内做归一化缓解了内部协变量偏移问题。推理时用的是训练阶段累积的全局均值和方差不是当前batch的。感受野计算从输出往回推每个卷积层、池化层会改变多少感受野这个公式要能手推。损失函数分类用交叉熵回归用MSE或L1 Loss目标检测里还会看到Smooth L1 LossFaster R-CNN和CIoU LossYOLO系列。常用网络结构ResNet的残差结构为什么有效解决深层网络退化问题、MobileNet的深度可分离卷积为什么快把普通卷积拆成逐通道卷积和1x1点卷积参数量大幅下降、EVA-02这类视觉Transformer模型的基本思想把图像分割成patch然后做自注意力建模。除此之外云从笔试里出现过一个让我十分意外的考点——图像锐化的拉普拉斯算法。考法不复杂就是给你一个3x3的拉普拉斯卷积核让你写出它对图像的作用原理拉普拉斯算子是二阶微分算子可以突出图像中灰度突变的位置所以输出图边缘更“亮”非边缘区域趋近于0与原始图像叠加后即可实现锐化。Sobel算子则是基于一阶梯度的它有两个核分别检测水平和垂直边缘梯度幅值就是边缘强度。这类题目对搞深度学习的人来说有点“超纲”因为在YOLO、ResNet的训练流程里一般不会手动写Sobel但CV公司确实在工程里会用到传统算子做预处理或后处理所以他们会拿来考。这个提醒你一定要留意准备AI算法岗笔试不能只盯“端到端深度学习”传统图像处理一定得复习一遍。4. 数学基础与行业场景应用题4.1 概率统计、线代与最优化那些“送命题”算法岗的数学题出题人默认你是“学过的”考察点通常不是死记公式而是“给一个实际问题你能不能想起来用哪个公式”。概率统计里贝叶斯公式是绝对高频。典型考法已知某种疾病的检出率为99%误检率为1%人群发病率为1%问某人检测阳性时实际患病的概率。这个题看似简单但很多人会忽略“先验概率”直接把99%当答案。正确的做法是利用贝叶斯公式P(患病|阳性) 0.99 * 0.01 / (0.99 * 0.01 0.01 * 0.99) 0.5也就是说即使检测很准因为发病率很低阳性结果里也只有一半是真患病这是典型的“基率谬误”。极大似然估计也是高频简答题。我建议你至少能手推“一组服从正态分布的数据它的极大似然估计均值等于样本均值方差等于样本方差”这一步因为这是很多选择题和简答题的基础。线性代数考得最多的是矩阵特征值分解和SVD。SVD在PCA降维、图像压缩里都会用到。你要理解对一个矩阵做SVD后得到的奇异值大小代表该方向上的“能量”大小所以PCA就是取前k个最大奇异值对应的特征向量做投影。KL散度也就是热搜词里的KL ELBO算法原理也出现频率不低它衡量两个分布的差异常用在VAE的变分推断里这个知识点你要能把公式写出来并解释它为什么大于等于0基于Jensen不等式。最优化部分梯度下降的几个变体——SGD、Momentum、RMSProp、Adam——要能写下各自的更新公式并说明Adam为什么综合了Momentum和RMSProp的思路。笔试选择题爱考“哪个优化器适合稀疏梯度”这类细节题答案是Adam。4.2 CV业务场景中的算法延伸云从的笔试还有一个特色模块就是把一些非深度学习的经典控制/优化算法和CV业务结合起来出题。比如目标跟踪场景里经常用到卡尔曼滤波笔试可能会给一个简单的线性运动模型让你理解预测和更新两个阶段的核心公式。虽然不要求你手推复杂的协方差矩阵更新但至少要明白卡尔曼滤波是在“预测”和“观测”之间做一个带权重的融合权重就是卡尔曼增益。再比如智能摄像头里的云台控制经典控制用PID算法。PID公式写出来并不难难的是理解P、I、D三个项各自的作用和“积分饱和”这类工程问题。笔试题如果涉及大概率是选择题或者简答题让你描述“P项减小稳态误差但可能增加超调I项消除稳态误差但可能导致振荡D项抑制超调但会放大噪声”。粒子群算法PSO这类群体智能优化算法在云从的笔试题里也出现过。它模拟鸟群觅食每个粒子有自己的位置和速度每次迭代更新时同时考虑个体最优和全局最优。你不需要会手写完整代码但要知道它的核心更新公式并且明白它和梯度下降是两套完全不同的优化思路PSO是群体搜索、不依赖梯度梯度下降是局部搜索、依赖梯度。这类题的出现说明一个趋势算法工程师不能只会在Python里调包得理解底层算法在真实业务中扮演的角色。所以我给你的建议是复习的时候多问自己一个问题“这个算法如果部署到我的嵌入式摄像头或服务器上会遇到什么问题”想通了这一点笔试答这类场景题会轻松很多。5. 编程题实战与答题技巧5.1 高频代码题型与解题模板云从笔试的编程题我整理了一下出现频率比较高的几类每个类型都有固定的解题套路字符串处理类回文串判断、最长无重复子串、字符串匹配KMP。这类题的核心是“双指针哈希表”的思路。动态规划类最长公共子序列、最长上升子序列、背包问题。动态规划的难点是定义状态和转移方程我建议你刷题时把“状态定义、初始化、转移方程、边界条件”四步写清楚再动手。图论类Dijkstra求最短路、并查集判断连通性、拓扑排序判断是否有环。这类题代码模板相对固定提前背熟模板能省大量时间。数组类最大子数组和、三数之和、旋转数组。核心技巧是排序、双指针、前缀和。以“最长上升子序列”为例我给你们一个可以直接套的模板思路状态定义dp[i]表示以nums[i]结尾的最长上升子序列长度。初始化所有dp[i]1因为每个元素自身是一个长度为1的子序列。转移方程dp[i] max(dp[j] 1)其中0 j i且nums[j] nums[i]。边界条件如果前面的所有元素都不小于nums[i]那么dp[i]保持为1。最终答案max(dp)不是dp[n-1]。这个题还有一个O(n log n)的贪心二分优化版本用维护一个“最小末尾数组”的思路刷题时最好两种都会写因为面试官可能会追问“你能不能再优化一下”。5.2 笔试过程中的代码书写规范与技巧在线笔试和平时在IDE里写代码有很大区别这里有几个实操层面的经验第一注意输入输出格式。云从用的在线笔试系统一般要求自己处理标准输入输出所以在本地调试好的代码进在线系统之前一定要把Scanner或input()函数写好。第二先写注释理清思路。笔试题是人工改卷即使代码有问题思路清晰的注释能帮你拿一部分步骤分。我有个习惯是写代码前先把核心思路用注释写出来比如“// dp[i]表示以nums[i]为结尾的最长上升子序列长度下面开始动态规划三要素”。这不仅是对改卷人友善更是防止自己写着写着思路断掉。第三命名规范。别用a、b、c这种毫无意义的变量名。好的命名不只是给面试官看的更是给自己看的在80分钟的紧张环境里当你回过去调试代码时一个叫maxProfit的变量绝对比一个叫x的变量更容易定位问题。第四边界条件的自查。写完代码后我习惯用三组测试用例自我验证空输入、只有一个元素、正常情况。这个习惯帮我避免至少三成的边界错误。6. 高频失分点与备考避坑指南6.1 笔试中常见的“隐形坑”我总结了一个云从笔试题里最容易失分的几个坑这些不是题目本身难而是你容易在答题过程中忽视考点类型常见失分点避坑建议概率题忘记乘先验概率看到“已知、发病率、检出率”字样先写贝叶斯公式再代入图像算子搞混拉普拉斯和Sobel记住拉普拉斯是二阶导、各向同性Sobel是一阶导、分方向KMP用错next数组定义看清题目是“最长相等前后缀长度”还是“长度-1”整道题统一口径深度学习漏掉输入输出通道数限制手推卷积输出尺寸时先判输入尺寸是否合法不算负数编程题不检查int溢出涉及最大值累加时直接用long long或大整数处理优化器混淆SGD和Adam的更新公式动手默写两边不要光看6.2 考前一周怎么复习最有效说句实在话数据结构和算法靠应届生考前一周突击是不现实的这部分必须长期积累。但云从这个笔试题的特点是“经典题型占比高”所以考前一周你可以做三件性价比极高的事第一把机器学习/深度学习基础全部过一遍尤其是各算法的适用条件和限制。选择题很多都是“以下哪个说法正确”答案常藏在细微的边界条件里。第二编程题只刷高频题型的模板题不再做新题难题。每天抽两小时把动态规划、双指针、并查集、Dijkstra、快速幂这五类题的模板各写一遍保证敲代码的手感。第三找一套往年真题或者市场上口碑好的模拟题严格按照考试时间做一次全真模拟。模拟时要开摄像头就当自己在真实考试这样能提前适应“有人监控”带来的紧张感。我当年就是没做这一步结果拿到正式卷子手抖了半天浪费了不少时间。我个人的体会是云从2020校招算法笔试题整体难度在同类AI公司里属于“中坚”水平远没有到劝退的程度但前提是你准备的方向对。它的出题风格很务实数学必考、CV必考、代码必考三样一个都躲不掉。与其广撒网式地背题不如把上面这些高频考点吃透。最后再分享一个小技巧也是我后来跟云从的算法工程师聊天时确认过的笔试里一旦出现“方案设计题”记住一个答题公式——“数据特点 预处理 模型选择 损失函数设计 优化策略 上线评估指标”。把这几步写全分数一般不会低。因为出题人最终想考察的是你的工程思维而工程思维就是“在约束条件下做出合理选择”的能力。祝准备投云从校招的你笔试顺利。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门