ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

蔚来算法岗笔试复盘:从KMP到卡尔曼滤波的秋招通关指南

蔚来算法岗笔试复盘:从KMP到卡尔曼滤波的秋招通关指南 1. 笔试整体画像与题型结构各位准备秋招的学弟学妹们蔚来算法岗的笔试我今年刚经历过一轮趁着记忆还热乎来写一篇完整复盘。先说结论蔚来算法岗笔试的难度在整车厂里属于第一梯队不亚于互联网大厂的核心算法岗。其题目设置既考察算法基础功底也考察对机器学习、深度学习理论的深度理解还会结合汽车行业的实际业务场景比如智驾感知、电池状态估计、充换电调度等出一些交叉应用题目。整体体量偏大时间紧张考前不做针对性准备很容易翻车。从题型分布来看蔚来算法岗笔试题型主要包含三个模块模块题量时间占比考察重点单选题15题左右25%机器学习基础、深度学习概念、概率统计、数据结构选型多选题10题左右20%算法适用场景、模型优缺点对比、工程实现细节编程题2-3题55%数据结构与算法实现、动态规划、字符串处理、图论我这次遇到的编程题是两道一道是经典的字符串模式匹配变形题另一道是带状态约束的最短路径问题整体偏工程应用方向和蔚来自动驾驶业务关联度很高。需要特别提醒的是整套试卷是全程监控的在线笔试不可切屏建议提前用牛客网的模拟环境适应一下否则切屏记录多了直接判作弊得不偿失。2. 机器学习与深度学习核心考点拆解2.1 基础模型与算法原理高频考察点笔试选择题里出现频率最高的几类考点分别是过拟合处理手段、损失函数选择依据、优化器原理、特征工程与模型评估指标。这些内容在面经里常被归为“八股文”但蔚来出题方式往往不是直接背答案而是给你一个业务场景让你选出最合适的方案。举个例子我印象里有一道多选题是这样出的在一个多分类任务中训练集出现类别严重不平衡以下哪些方法可以有效缓解选项包括A. 对多数类样本进行下采样B. 对少数类样本进行上采样C. 在损失函数中为少数类赋予更高权重D. 使用准确率Accuracy作为评估指标。正确答案是A/B/CD是陷阱——准确率在类别不平衡场景下会失真应使用F1-score、AUC等指标。这类题目考察的不仅是模型知识更是模型评估的工程直觉。另一个高频考点是聚类算法。蔚来在用户画像、电池分组、充电桩选址等场景大量使用聚类因此笔试出现K-Means、DBSCAN、层次聚类的对比题非常正常。你需要掌握聚类算法的优缺点、适用场景、时间复杂度以及K-Means中K值选择方法肘部法则、轮廓系数。热词里出现的粒子群算法、模拟退火算法通常也会以“如何优化K-Means初始中心点”的形式出现这其实是组合优化思想在聚类中的应用。2.2 深度学习与神经网络必考清单深度学习的考察集中在卷积神经网络、循环神经网络、注意力机制、损失函数与激活函数四个方向。我看到的热词里有“深度学习算法”“图像分类算法”“EVA-02分类算法”说明蔚来对视觉方向的基础考察不会缺席。图像分类相关题目几乎是标配因为蔚来的智驾感知模块依赖大量视觉算法。备考时以下知识点必须吃透卷积计算输出特征图尺寸公式含padding、stride参数的含义池化层的作用与反向传播方式BatchNorm在训练和推理阶段的差异1×1卷积的作用通道变换、降维、增加非线性ResNet残差连接解决了什么问题梯度消失、网络退化注意力机制和Transformer是近两年必考。你需要理解Self-Attention的Q/K/V矩阵计算过程、多头注意力的意义、位置编码的作用尤其是为什么需要位置编码——Transformer本身不具备序列顺序信息。多选题目中可能会出现“以下关于Transformer的描述正确的是”这类综合考察选项中会混杂RNN的优缺点对比。激活函数方面Sigmoid、Tanh、ReLU、Leaky ReLU、GELU的公式和适用场景需要熟记。Sigmoid存在的梯度消失问题、ReLU的Dead ReLU问题以及GELU在Transformer中的广泛应用都是高频考点。2.3 强化学习与优化算法的汽车行业应用汽车算法岗对强化学习的考察力度比互联网大厂更大原因是规控领域规划与控制重度依赖强化学习和经典控制理论。热词里出现的“强化学习算法”“PID算法在CRPS PSU Power的作用”“MPPT算法”“FOC算法”都指向这个方向。蔚来作为整车企业笔试中可能直接问在车辆纵向控制中PID控制器的三个参数各自的作用是什么P比例负责快速响应偏差I积分消除稳态误差D微分抑制超调。更进一步问如果车辆在坡道上行驶出现稳态误差应调整哪个参数答案是I参数。卡尔曼滤波算法也是出题高概率方向。在电池SOC估算、车速估计、传感器融合场景中卡尔曼滤波是核心算法。你需要掌握状态预测方程状态转移、协方差预测状态更新方程卡尔曼增益计算、状态修正、协方差更新卡尔曼增益K的物理含义传感器噪声与过程噪声的权衡扩展卡尔曼滤波EKF和无迹卡尔曼滤波UKF的适用场景差异热词里还有“KL ELBO算法原理详解”这说明变分推断相关题目也可能出现对于申请感知或规控方向的同学这部分需要额外关注。不过这类题一般出现在选择题中不需要手推完整推导掌握ELBO的分解形式“证据下界重建损失KL散度”即可应对大多数题目。3. 数据结构与经典算法实战解析3.1 字符串算法专题KMP与其变种热词里反复出现KMP算法“在KMP算法中对于模式串p‘abacaba’其next数组…”今年蔚来笔试对字符串算法的考察确实很密集。KMP作为经典的单模式匹配算法核心思想是利用已匹配的信息避免主串指针回退从而将时间复杂度从朴素匹配的O(m×n)降到O(mn)。先说next数组的手算规则。对于模式串pabacabanext[i]定义为模式串前i个字符的最长相同前后缀长度不同教材对next数组的定义有细节差异有的从0开始有的从1开始还会区分next和nextval。我用的计算规则是next[i]表示p[0...i-1]的最长公共前后缀长度。按照这个定义next[0] -1约定next[1] 0单个字符无真前后缀next[2] 0ab无公共前后缀next[3] 1aba中前缀a后缀anext[4] 2abac之前是aba即ab后缀abnext[5] 3前缀aba后缀abanext[6] 4前缀abac之前的abab中等实际是ab重复... 等等这里要仔细算等一下我重新用手算验证一遍模式串p a b a c a b a长度7。next数组定义next[i]为p[0..i-1]的最长相同前后缀。我们从i0开始i0: next[0]-1约定值i1: 子串a无真前后缀next[1]0i2: 子串ab无公共前后缀next[2]0i3: 子串aba前缀a后缀a长度为1next[3]1i4: 子串abac公共前后缀前缀依次为a、ab、aba后缀依次为c、ac、bac无匹配next[4]0i5: 子串abaca前缀a、ab、aba、abac后缀a、ca、aca、baca只有前缀a后缀anext[5]1i6: 子串abacab前缀a、ab、aba、abac、abaca后缀b、ab、cab、acab、bacab前缀ab后缀ab长度为2next[6]2i7: 子串abacaba前缀a、ab、aba、abac、abaca、abacab后缀a、ba、aba、caba、acaba、bacaba前缀aba后缀aba长度为3next[7]3所以next数组为[-1, 0, 0, 1, 0, 1, 2, 3]。这个手算过程笔试中可能直接出题务必亲手多练几个模式串比如aaaaab、abcabcabc、abababa这类边界情况。笔试编程题里如果出现KMP变形往往不是直接考模板而是结合具体场景比如“在字符串s中查找模式串p的所有匹配位置”“输出每个位置失配后的跳转位置”。处理这类题时我的经验是先写出next数组的生成函数再写匹配主流程确保核心逻辑清晰后再做边界处理。编程题评分通常看测试用例通过率核心函数正确就能拿到大部分分数。3.2 排序算法、堆与贪心的现场推演排序算法是选择题常客尤其是稳定性对比和时间复杂度对比。你需要默写以下表格排序算法平均时间复杂度最坏时间复杂度空间复杂度稳定性冒泡排序O(n²)O(n²)O(1)稳定快速排序O(n log n)O(n²)O(log n)不稳定归并排序O(n log n)O(n log n)O(n)稳定堆排序O(n log n)O(n log n)O(1)不稳定插入排序O(n²)O(n²)O(1)稳定希尔排序约O(n^1.3)O(n²)O(1)不稳定选择排序O(n²)O(n²)O(1)不稳定计数排序O(nk)O(nk)O(k)稳定快速排序的最坏情况是每次选择的基准都是最大值或最小值可通过随机化基准或三数取中法规避。堆排序核心在“上浮”和“下沉”操作笔试偶尔会让你推算给定数组建堆后的序列。“堆排序算法”“快速幂算法C”“Dijkstra算法”“二分图HK算法”这些热词说明图论和分治算法也被重点覆盖。蔚来笔试编程题的难度分布通常是第一题偏简单字符串或模拟题第二题中等偏难动态规划或图论第三题可能涉及高级算法。我当时遇到的编程题之一是带约束的最短路变形大致题意是在一个有向带权图中每个节点有一个状态值限制条件为路径上状态值不能连续超过某个阈值求满足约束下从起点到终点的最短距离。这类题的解法是在Dijkstra基础上对状态数组扩维将“当前节点当前连续状态计数”作为一个新的状态节点来处理本质是状态机上的最短路问题。如果你对Dijkstra只停留在模板层面遇到这种题就会卡住。所以备考时一定要练习“Dijkstra 状态压缩”的组合套路。更多细节见下方第四章。3.3 算法流程图的阅读理解能力热词里有“算法流程图”这个方向在笔试中容易被忽视但实际考察概率不低。在选择题或简答题里蔚来可能给你一个简单的流程图比如粒子群算法的迭代流程、冒泡排序的执行过程让你判断某个步骤的输出结果。以**粒子群算法PSO**为例其核心流程是初始化粒子群每个粒子包含位置向量和速度向量计算每个粒子的适应度值更新个体历史最优pbest和全局历史最优gbest更新速度和位置v wv c1r1*(pbest - x) c2r2(gbest - x)x x v判断是否达到终止条件迭代次数或精度在流程图中惯性权重w是重点变量w越大全局搜索能力越强w越小局部搜索能力越强。笔试若给出三个不同w值的迭代收敛曲线问你哪个是w较小的情况你需要知道答案是“收敛更慢且可能陷入局部最优”的那个。模拟退火算法在流程题中同样高频出现关键在于理解Metropolis准则当新解更优时无条件接受当新解更差时以概率exp(-ΔE/T)接受。温度T越高接受差解的概率越大越有利于跳出局部最优。这类算法属于“元启发式算法”在路径规划、参数优化题目中常有体现。4. 编程题完整实战从读题到AC的全过程还原4.1 经典变形题状态约束下的最短路径编程题我抽到的那道状态约束最短路题目题意是这样给定一个n个节点、m条边的有向图每条边有一个行驶时间权重。每个节点有一个风险等级R0或1。规定连续经过风险等级为1的节点数量不能超过2个起始节点算第一个。求从节点1到节点n的最少行驶时间若不可达则输出-1。乍一看这就是加了约束的Dijkstra。怎么破我的做题思路分三步第一步状态定义。Dijkstra朴素的dist数组只记录“到达某节点的最短时间”但这里从不同风险路径到达同一节点后续可走的路线不同。比如从低风险路径到达节点5再走风险节点没问题但若已达2个连续风险节点再走风险节点就必须“清零”重新计数。因此状态需要记录两个维度当前所在节点 当前已连续经过的风险节点数0、1或2。第二步扩维建图。将每个原节点v拆成三个虚拟节点(v,0)、(v,1)、(v,2)分别表示到达v时已有0/1/2个连续风险节点。转移时看下一个节点u的风险值若u的风险为0从任何状态(v, k)转移到(u, 0)权重为边权若u的风险为1从(v, 0)转移到(u, 1)从(v, 1)转移到(u, 2)但不可以从(v, 2)转移到(u, 2)因为连续风险数量会超过2第三步在扩维图上跑标准Dijkstra。起点状态为(1, R1)其中R1为节点1的风险等级。终点取min(dist[(n,0)], dist[(n,1)], dist[(n,2)])。若均不可达输出-1。关键代码如下#include bits/stdc.h using namespace std; struct State { int node; int riskCnt; // 0, 1, 2 long long dist; bool operator(const State other) const { return dist other.dist; } }; int main() { int n, m; cin n m; vectorint risk(n 1); for (int i 1; i n; i) cin risk[i]; vectorvectorpairint, int graph(n 1); for (int i 0; i m; i) { int u, v, w; cin u v w; graph[u].push_back({v, w}); } const long long INF 1e18; vectorvectorlong long dist(n 1, vectorlong long(3, INF)); priority_queueState, vectorState, greaterState pq; dist[1][risk[1]] 0; pq.push({1, risk[1], 0}); while (!pq.empty()) { auto [u, cnt, d] pq.top(); pq.pop(); if (d dist[u][cnt]) continue; for (auto [v, w] : graph[u]) { if (risk[v] 0) { // 风险为0连续计数清零 if (dist[v][0] d w) { dist[v][0] d w; pq.push({v, 0, dist[v][0]}); } } else { // 风险为1只有当前计数小于2时才可转移 if (cnt 2 dist[v][cnt 1] d w) { dist[v][cnt 1] d w; pq.push({v, cnt 1, dist[v][cnt 1]}); } } } } long long ans min({dist[n][0], dist[n][1], dist[n][2]}); cout (ans INF ? -1 : ans) endl; return 0; }这道题的核心难点不是Dijkstra本身而是能否想到状态压缩与扩维。如果你在别的OJ上练过“K次免费机票的最短路”“经过红绿灯约束的最短路”这类题就很容易迁移。4.2 字符串处理题KMP的next数组应用编程题如果出KMP相关常见的坑在于next数组下标从1开始还是从0开始不同题目定义不同读题时务必确认模式串可能包含重复前缀next数组计算容易出错先在草稿纸上手算一遍再写代码如果要求输出所有匹配位置注意主串遍历完后的收尾处理我简单给出一份KMP模板next数组下标从0开始vectorint buildNext(const string p) { int m p.size(); vectorint next(m, 0); for (int i 1, j 0; i m; i) { while (j 0 p[i] ! p[j]) j next[j - 1]; if (p[i] p[j]) j; next[i] j; } return next; } vectorint kmpSearch(const string s, const string p) { vectorint next buildNext(p); vectorint res; int n s.size(), m p.size(); for (int i 0, j 0; i n; i) { while (j 0 s[i] ! p[j]) j next[j - 1]; if (s[i] p[j]) j; if (j m) { res.push_back(i - m 1); j next[j - 1]; } } return res; }秋招笔试的KMP题一般不会要求手写nextval优化能用标准KMPAC即可。但你必须理解为什么失配时j跳转到next[j-1]而不是直接清零这样即使题目换个马甲比如“最长重复子串”“滚动哈希替代方案”你也能举一反三。4.3 快速幂与贪心算法实战“快速幂算法C”在热词里出现频率很高这在笔试中往往不是独立考点而是作为大题的子步骤出现。比如在计算组合数取模、图论中的矩阵快速幂、概率DP的状态转移中快速幂都能大幅降低复杂度。快速幂的关键在于将指数拆成二进制long long fastPow(long long base, long long exp, long long mod) { long long res 1; base % mod; while (exp 0) { if (exp 1) res (res * base) % mod; base (base * base) % mod; exp 1; } return res; }贪心算法则更常出现在“最优装载”“区间调度”“加油站问题”等场景中。蔚来笔试里的贪心题背景可能和充换电相关比如“给定N个充电桩的位置和每辆车的充电需求选择最少充电桩覆盖所有车辆”。这类题的本质是区间覆盖问题按右端点排序后贪心选择即可。5. 汽车行业特色算法与场景化考点5.1 感知与控制算法从卡尔曼滤波到PID控制不同于纯互联网公司蔚来的算法岗笔试会穿插整车相关的基础题。如果你是投递自动驾驶感知岗视觉几何、传感器标定、目标检测、多传感器融合是重点如果投递智能座舱或能源算法岗那么信号处理、状态估计、优化调度相关算法占比更高。我这次在选择题中遇到了卡尔曼滤波的题目核心考点是卡尔曼滤波的五个核心方程分别是什么每个变量的物理含义是什么例如“状态协方差矩阵P”表征的是系统状态估计的不确定性“观测噪声协方差矩阵R”表征传感器测量误差“过程噪声协方差矩阵Q”表征模型误差。如果Q过大滤波器会更信任测量值如果R过大滤波器会更信任预测值。理解这个权衡关系比记住公式更重要因为选择题会以场景描述的方式来考。PID控制的考题更偏向原理理解。比如系统输出与目标值存在持续偏差且系统存在惯性应如何整定PID参数增大Kp会导致系统超调增大增大Kd可以抑制超调但过大的Kd会放大噪声。积分饱和Integral Windup现象是什么如何解决答案是限制积分项最大值或使用条件积分。5.2 强化学习在决策规划中的应用场景题蔚来算法岗对于规控方向的考察强化学习权重很高。考法通常不是RL算法的严格证明而是给出一个场景博弈、变道决策、轨迹规划让你选择或判断合适的算法。热词中的“KL ELBO算法原理详解”提示你变分推断和策略梯度是可能出现的。我备考时重点复习了PPOProximal Policy Optimization和DQNDeep Q-Network的核心思想。你需要知道策略梯度中log π(a|s)的梯度乘以优势函数A的意义PPO的clip操作解决什么问题防止策略更新过大导致性能崩溃DQN中经验回放Experience Replay和目标网络Target Network各自的作用这些概念不需要推导整个数学公式但要能准确说出“为什么这么做”的理由。笔试多选题非常喜欢在“论文技巧的作用”上做文章四个选项中混入一两个错误说法比如“DQN目标网络的作用是减少样本相关性”这就是错误表述目标网络的作用是稳定训练目标减少样本相关性是经验回放的功能。5.3 推荐系统与用户画像算法蔚来还有一个热门的算法方向是用户运营和推荐比如NIO App的内容推荐、换电站选址、用户购车意向预测。这类岗位笔试会出现协同过滤、CTR预估、A/B测试、冷启动等考点。热词中的“BM25算法”也有可能出现它本质上是信息检索领域的相关性打分算法在知识库问答场景比如NOMI车载助手中很常用。BM25的核心思想是词频越高、文档越短、包含该词的文档越少时相关性得分越高。公式中包含IDF逆文档频率项和文档长度归一化项需要理解每个参数的作用。如果你投递的方向偏搜索/推荐建议专门复习一下BM25、TF-IDF的公式以及如何与向量检索结合做混合召回。6. 备考策略与时间规划6.1 三轮复习法从基础到专项根据我的实战经验蔚来算法岗笔试的备考大致需要三轮。第一轮基础夯实花2-3周把数据结构与算法、机器学习基础、深度学习基础过一遍。数据结构重点看数组、链表、栈、队列、哈希表、树、图、堆机器学习重点看监督学习线性回归、逻辑回归、SVM、决策树、KNN、无监督学习K-Means、DBSCAN、层次聚类、集成学习随机森林、GBDT、XGBoost。这个阶段不求快但求准每个算法的推导和适用场景都要能说出来。第二轮题目强化用2周时间刷LeetCode热门100题和剑指Offer全题重点练习动态规划背包、爬楼梯、最长公共子序列、字符串KMP、滑动窗口、回文串、图和树Dijkstra、DFS/BFS、二叉树遍历、排序和二分查找。同时开始刷牛客网的选择题题库重点关注机器学习理论和概率统计题。第三轮场景模拟考前1周做2-3套蔚来历年笔试模拟题掐时间完成。同时针对性地复习汽车行业算法知识卡尔曼滤波、PID控制、强化学习基础、FOC电机控制算法、MPPT最大功率点追踪等。强烈建议整理一份错题集把容易混淆的概念放在一起对比记忆比如“过拟合处理方法”和“集成学习基学习器差异度”等。6.2 选择题与编程题的时间分配技巧蔚来笔试总时长通常在90-120分钟编程题往往占据过半时间。我的建议是选择题控制在40分钟内完成剩余时间全部给编程题。选择题遇到不会的不要死磕先标记跳过因为后面的多选题和编程题分值更大。遇到多选题时拿不准的选项宁可不选也不要乱选——多选漏选得部分分错选不得分甚至倒扣分。如果题目明确说明“少选得部分分”那就选你最有把握的选项保守得分。编程题的调试时间也要控制。第一道简单题必须在20-30分钟内AC第二道中难题可以花40-50分钟思考并实现。如果第二道题20分钟还没有完整思路我的建议是先写暴力解法拿部分分再考虑优化。蔚来笔试的评分通常是按测试用例通过比例给分的暴力解法通过30%用例也比交白卷强。6.3 代码风格与调试技巧由于笔试系统用的是牛客网或赛码网编译器版本往往是C11/14或Python 3.8你需要避免使用C17之后的语法特性比如std::filesystem、结构化绑定在某些旧编译器上可能不支持。我习惯在代码开头加上#include bits/stdc.h using namespace std;这个万能头文件在牛客和赛码的评测环境中都支持能节省不少时间。调试方面本地IDE建议提前配置好与在线系统一致的C编译选项避免本地能跑、提交就编译错误的尴尬。另外注意输入输出格式尤其是多组测试用例的情况不要在主循环里漏掉输入读取。7. 常见失分点与实例排查7.1 读题不清导致的白白丢分我秋招时在另一家公司的笔试中吃过这样的亏题目说“求最小字典序结果”我按“求最小数值”做了结果AC 0%。蔚来的笔试题同样有“读题陷阱”比如编程题会明确写“若无法满足约束条件请输出-1”或“结果对10^97取模”这些关键信息必须在草稿纸上单独列出来。一个典型的例子字符串题中要求“保证输入字符串只包含小写字母长度不超过10^5”那么复杂度必须控制在O(n log n)以内如果写着“可以假设测试用例不超过100组”那么O(n²)的暴力法在多数情况下也能通过。根据数据范围反推算法复杂度是编程题快速定位解法的基本功。7.2 数组越界与极端边界条件的处理算法笔试最经典的失分原因是边界条件处理不到位。例如KMP搜索时空字符串、Dijkstra中起点与终点相同、链表翻转时空链表、二分查找中目标值小于数组最小值等。以KMP为例笔试中可能要求查找模式串p在文本串s中出现的起始下标但如果p为空串按《算法导论》的定义应当返回0但有些试卷的标准答案是空串匹配所有位置。这种歧义在笔试中很少出现但一旦出现你需要读题后判断输入约束是否排除了空串情况再决定写法。我在调试KMP时习惯打印next数组验证for (int i 0; i m; i) { cout next[i] ; }这一步能直观发现模式串下标定义是否出错避免在匹配阶段拿到一个错误的跳转位置。7.3 多线程与并发算法题如何分配时间蔚来部分算法岗偏系统方向可能涉及多线程或并发编程的题目但笔试多以选择题为主比如“以下哪个锁是可重入的”“synchronized和ReentrantLock的区别”。如果你求职的是纯算法岗而不是工程岗这类题目占比很小不必花太多时间准备。真正的风险是时间分配失误。我见过太多同学在选择题上磨蹭了50分钟导致编程题只剩20分钟做完第一题第二题连题都来不及读。所以再次强调选择题卡住就跳过先把会做的编程题拿下再回头处理没把握的选择题。7.4 输入输出格式的细节陷阱牛客和赛码的输入输出与力扣不同需要自己处理标准输入。常见的坑包括输入包含多组测试用例用while(cin n)循环读取输出要求每行一个结果行尾不能有多余空格浮点数输出需要精确到小数点后几位使用printf(%.2f)而不是cout我建议笔试前把常用IO模板准备好// 多组输入模板 int n; while (cin n) { // process } // 格式化输出 printf(%.2f\n, ans);Python选手则要注意import sys for line in sys.stdin: data list(map(int, line.split()))这一套模板几乎能应对所有在线笔试系统的输入输出要求。8. 加分项向面试官展示算法工程化的思维笔试虽然只以分数论英雄但在主观题如果有或代码注释中展示工程思维会给你后续面试带来隐性加分。蔚来非常看重“算法落地的能力”你可以通过代码注释和代码结构来体现封装函数而不是把全部逻辑堆在main里关键变量命名有意义比如riskCnt表示连续风险计数nextPos表示失配跳转位置复杂度分析写在注释里比如时间复杂度O((n3)log(n3))空间复杂度O(n*3)我在写状态约束Dijkstra时就在注释里写了“扩维成3×n个状态节点本质上把约束条件转化为图结构”面试时我主动提了一句面试官很感兴趣后面聊了十几分钟状态机与图搜索的结合。这说明笔试中展现出的思维深度往往比单纯AC更有价值。另外如果你对某道题有更优解法比如A*搜索替代Dijkstra可以在代码注释中简单提一句“可用启发式搜索优化”这既不耽误时间也能让阅卷官看到你的知识广度。9. 笔试之后的准备建议如何衔接面试笔试只是秋招第一关通过后通常1-2周内会收到面试邀约。利用笔试后的等待期把笔试中不会的题逐一复盘尤其是编程题重新写一遍AC代码理解最优解法的每一步。面试官在技术面时可能直接拿出你笔试中的原题追问“你觉得哪里可以优化”“为什么要用这个数据结构”如果你当时只是凑巧AC很难顶住追问。我拿到蔚来面试后遇到的第一个算法题就是笔试中那道状态约束最短路的一个变体。面试官让我在白板上重新手写一遍Dijkstra并解释为什么状态约束可以用扩维解决。因为我在笔试复盘时认真思考过所以回答得比较流畅最终顺利推进到了后面的机器学习基础问题。所以请记住笔试不是终点而是面试的预演。每道错题都是你和面试官的潜在对话素材把这个素材吃透了你的竞争力就会比别人高出一截。10. 写在最后的个人经验碎碎念算法岗秋招这条路说实话不好走每年的竞争都在升级热词里出现的“粒子群算法原理”“KMP算法next数组”“PID算法”“卡尔曼滤波算法”“强化学习算法”等等放在五年前可能只是少数人关注的核心知识点现在几乎成了整车厂算法岗笔试的标配考纲。我个人的体会是蔚来笔试并不是在筛选“刷题机器”而是在筛选“能落地的算法工程师”。它不会让你默写一个冷门算法的完整实现而是把算法嵌入到实际的业务场景中看你能不能识别、迁移、应用。这种考察方式更考验基本功也更能区分“背题型选手”和“理解型选手”。如果你正在准备秋招我的建议很简单把数据结构和算法的基础打扎实把机器学习、深度学习的理论吃透再把汽车行业的特色算法卡尔曼滤波、PID、强化学习在规控中的应用过一遍你就能超过大部分候选人。最后分享一个我踩过的坑笔试前千万不要只刷力扣热门题而忽略行业特色算法的复习。我一个同学在蔚来笔试前刷了三百道LeetCode结果选择题里出现“卡尔曼滤波中Q矩阵和R矩阵哪个增大滤波器更信任测量值”他直接懵了最终总分差一点过线。这个教训很深刻希望大家不要重蹈覆辙。
返回列表