news 2026/8/29 2:32:52

网易2018校招机器学习算法工程师笔试题全面拆解与备考指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网易2018校招机器学习算法工程师笔试题全面拆解与备考指南

网易2018校园招聘机器学习算法工程师笔试卷,这个标题在当年牛客网和各大技术社区里流传很广。我印象很深,那一年算法岗的竞争已经明显升温,机器学习、算法这两大关键词几乎成了筛选简历的硬门槛。这张卷子之所以被反复讨论,是因为它的题型结构很典型:客观题覆盖机器学习理论、数据结构与算法基础,编程题考察工程实现能力,整体难度对校招生来说不算友善,但也没有离谱到劝退。这篇文章我想以亲历者的视角,把这张卷子背后的命题逻辑、核心考点和备考思路完整拆一遍,顺便把一些常见误区讲清楚。适合正在准备校招的应届生、打算跳槽算法岗的工程师,以及想提前了解大厂笔试题型的学生参考。看懂这张卷子想考察什么,比盲目刷题重要得多。

1. 这张卷子到底在考什么:整体设计与考察思路

1.1 从2018年网易校招说起:机器学习算法岗笔试题型的整体面貌

2018年的校招时间线拉得很长,内推批通常在7月就启动,正式批在8月底到9月集中笔试,网易属于动作比较快的那一批。机器学习算法工程师的笔试,和纯后端开发、数据挖掘的笔试题型有明显区别。后端岗喜欢考操作系统、网络、数据库,数据挖掘岗会掺入一些SQL和特征工程,而机器学习算法岗的卷子几乎完全围绕机器学习理论、算法与数据结构展开,偶尔会放一两道概率统计的题目。

网易这份卷子的大致结构,我记得是客观题加编程题。客观题包括单选题和多选题,覆盖的范围很大:从线性回归、逻辑回归、SVM、决策树这些经典模型,到聚类、降维、模型评估、过拟合处理,再到几个关键算法的推导细节。编程题一般是两道三道,难度梯度拉开,第一道通常是基础题,后面会有需要优化复杂度的题,比如用动态规划、贪心或者二分去解。整体给人的感觉是:它不要求你掌握某个前沿模型,而是考察基础是否扎实、思维是否敏锐。

有一个容易被忽略的点:网易的算法岗笔试卷里,机器学习理论题目的比重通常比纯算法题更高。比如特征工程、正则化、偏差方差权衡这类问题,基本年年出现。这说明出题人更关注候选人对机器学习本质的理解,而不是单纯会调包。

1.2 考点结构拆解:客观题、编程题与综合题的比例和意图

我梳理了2018年前后几家大厂算法岗笔试题的考点分布,网易的特点在于“广度优先、深度跟进”。它不会像某些公司那样直接上特别偏门的模型细节,而是先铺开问一堆基础题,把知识点覆盖面拉满,再用编程题去卡区分度。

从比例上看,客观题大约能占到整张卷子分值的50%到60%,剩下的是编程题。客观题里可以粗略分成三类。第一类是“概念判断题”,比如“关于SVM的核函数,下列说法正确的是”“L1正则化为什么会产生稀疏解”,这类题考察你是否真正理解原理。第二类是“公式推导与计算题”,比如给定一个逻辑回归的损失函数,要求推导梯度或判断某步更新是否正确。第三类是“场景应用题”,比如“在类别不平衡时,以下哪种评估指标更合适”,这类题考察你在真实数据环境下的判断力。

编程题则更直接,基本就是算法题。常见的是数组、字符串、链表、树、动态规划、贪心、搜索这些类别。网易相对重视分治和动态规划,因为这两类算法和机器学习里的许多优化思想是相通的。比如很多递归模型参数的求解,底层就是动态规划思想。

1.3 为什么这些考点决定你能否进面试

笔试的作用不是选出代码写得好的人,而是筛掉基础不牢、思维不清晰的人。面试官没有时间在面试里逐项确认你是否了解SVM的对偶问题,所以笔试题承担了这个工作。机器学习算法工程师的日常工作,比如特征处理、模型调优、分布式训练,表面上看和笔试内容没有直接关系,但底层能力是完全相同的。

举个例子,你在调XGBoost的时候,如果理解CART树如何做分裂、信息增益如何计算,就知道max_depth和min_child_weight应该怎么调,而不是靠网格搜索瞎试。再比如,当你需要手写一个简单的推荐召回算法时,K-Means的收敛性和初始化敏感性如果理解不到位,线上效果就会很差。笔试考这些内容,本质上是考察你有没有构建起完整的知识体系。网易在这方面的筛选意图非常明显:他们想招的不是会跑实验的人,而是能从第一性原理出发解决问题的人。

2. 算法与数据结构考点深度拆解:从KMP到排序家族

2.1 KMP算法与next数组:一道真题的完整推导

KMP算法几乎每年都会出现在大厂笔试中。网易2018年这道题就是在KMP的next数组上做文章,题目形式一般是这样:给定模式串P="abacaba",求其next数组。别看题目简单,出错率极高,因为很多同学对next数组的定义和计算方式记忆是模糊的。

先说next数组是什么。KMP算法的核心思想是:当主串和模式串在某一位失配时,模式串不一定要回到开头重新匹配,而是根据已经匹配的部分跳到某个位置继续,这个跳转的依据就是next数组。next[i]通常定义为:模式串P[0...i-1]这个子串中,最长相等真前后缀的长度。注意是“真前后缀”,也就是说,不能取整个子串本身,因为那样就没有跳转意义了。

以P="abacaba"为例,我按从0下标开始的方式算一下。next[0]约定为-1,表示第一个字符就失配时,模式串整体右移一位。当i=1时,子串是"a",最长相等真前后缀长度为0,所以next[1]=0。当i=2时,子串是"ab",前缀"a"和后缀"b"不相等,next[2]=0。当i=3时,子串是"aba",前缀"a"和后缀"a"相等,长度为1,所以next[3]=1。i=4时,子串是"abac",经过判断,没有任何相等的前后缀,next[4]=0。i=5时,子串是"abaca",前缀"a"和后缀"a"相等,next[5]=1。i=6时,子串是"abacab",前缀"ab"和后缀"ab"相等,长度为2,next[6]=2。i=7时,子串是"abacaba",最长相等真前后缀是"aba",长度为3,于是next[7]=3。

所以按这种定义,P="abacaba"的next数组就是[-1, 0, 0, 1, 0, 1, 2, 3]。

注意:不同教材对next数组的定义略有差异,有的把next[i]定义为P[0...i-1]的相等前后缀长度,有的则定义为P[0...i]的,还有的会整体加1。笔试时如果题目给了定义,一定按题目的定义来,否则很容易算错。

KMP算法在笔试里还可能延伸出另一个考点:给你主串和模式串,问匹配过程中模式串会滑动几次。这其实就是把next数组求出来后,模拟一遍匹配的过程。平时练的时候可以把求next的代码也背熟,考试时能省下很多时间。

2.2 排序算法家族:从冒泡到堆排的复杂度与稳定性对照

排序算法是笔试的常客,网易考察的点不在“会不会写冒泡排序”,而在于对排序算法家族的整体认识。常见问法包括:哪些排序是稳定的?哪些排序的时间复杂度是O(n log n)?在什么场景下应该选哪种排序?

我直接给大家一张表,这也是我当年复习时手写过的:

排序算法平均时间复杂度最坏时间复杂度空间复杂度稳定性
冒泡排序O(n²)O(n²)O(1)稳定
选择排序O(n²)O(n²)O(1)不稳定
插入排序O(n²)O(n²)O(1)稳定
希尔排序O(n^1.3)左右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)不稳定

这张表值得反复看。笔试常考的不是“快速排序平均复杂度是多少”这种送分题,而是“下列排序算法中,哪些在平均情况下时间复杂度为O(n log n)且不稳定”,这时候如果你只记住快排和归并的名字,就很容易把归并的稳定性记错,导致丢分。

堆排序在很多资料里被单独拿出来考,因为它的思想比较特殊:把数组看成完全二叉树,通过调整堆结构来获得最大或最小值。面试还喜欢追问“堆排序和快排实际用哪个”,答案取决于场景。如果你需要稳定的排序,选归并;如果你对最坏情况非常敏感,选堆排;如果平时数据较随机且追求常数小,选快排。STL里的sort就是混合了快排、插入排序和堆排序的introsort,目的就是兼顾各种情况。

2.3 贪心、动态规划与剪枝:高频题型的出题逻辑

程序员面试中有一句话:动态规划是区分劳动者和思考者的试金石。网易笔试的编程题里,动态规划和贪心几乎必考,而且常常不会出太裸的题目,而是把经典模型包装一下。

贪心和动态规划的区别,初学者经常搞混。贪心算法在每一步都做当前看起来最优的选择,并且不回头,它只能用于局部最优能推导出全局最优的问题,典型例子是活动选择问题和哈夫曼编码。动态规划则把问题拆成重叠子问题,记录中间状态,通过状态转移方程得到最终结果,典型例子是背包问题、最长公共子序列、编辑距离。

笔试中容易设陷阱的点正是在这里。比如给你一组硬币面值和目标金额,问最少需要几枚硬币凑出目标,如果你直接用贪心,在某些面值组合下会得到错误答案。题目如果设计成面值是1、5、11,目标20,贪心会得到1张11加9张1,共10枚,而正确答案是4张5,共4枚。这个例子大家一定要记牢,它是区分贪心和动态规划的经典案例。

剪枝算法则更多出现在搜索题里。搜索题的暴力写法往往超时,优化方向有两个:一是用记忆化搜索,也就是把递归过程中重复计算的中间状态存下来,本质上是动态规划的递归写法;二是剪枝,也就是在搜索过程中提前判断后续分支不可能产生更优解,直接跳过。比如在解数独或者N皇后问题时,合理剪枝能指数级减少搜索空间,这在大厂笔试的压轴题里经常用到。

2.4 图算法与进阶优化算法:Dijkstra到群体智能

图算法在机器学习算法岗笔试试卷里出现的频率,比很多人想象中要高。因为推荐系统、社交网络分析、路径规划这些业务场景都离不开图算法。网易考过的最基础也最经典的是Dijkstra算法,考察点包括:它适用于什么图(非负权值)、时间复杂度是多少(用堆优化后是O(E log V))、为什么不能用负权边。

除了Dijkstra,Floyd和Bellman-Ford也值得了解。Floyd适合全源最短路径,复杂度O(V³),实现极其简单,三重循环就完事。Bellman-Ford可以处理负权边,代价是复杂度较高。如果笔试中看到题目的边权没有负数,优先用堆优化的Dijkstra;如果节点数量很小,比如不超过200,直接Floyd写起来最省事。

热词里还出现了粒子群算法原理、模拟退火算法、PID算法、FOC算法、MPPT算法,这些属于优化算法和控制算法的范畴。虽然它们不会直接出现在网易笔试题里,但我在面试中确实被追问过粒子群和模拟退火的区别。机器学习里的超参数搜索,比如随机搜索和贝叶斯优化的思想,和粒子群算法就有相通之处。这类算法属于“面试加分项”,有余力的同学可以了解大致的流程,能说出它们和梯度下降的区别就足够了。

3. 机器学习理论核心考点:从原理推导到模型评估

3.1 监督学习三件套:线性模型、SVM与决策树

机器学习理论部分,线性模型永远是大头。线性回归的损失函数为什么选均方误差?逻辑回归为什么用交叉熵而不是均方误差?这两个问题几乎是必考题。逻辑回归用Sigmoid函数把线性输出映射到[0,1]区间,用交叉熵作为损失函数,是为了让优化目标变成凸函数,梯度下降更容易收敛。如果换成均方误差,损失函数非凸,会出现很多局部极值点,训练过程会非常痛苦。

SVM是网易笔试的大户。常考的考点包括:SVM的优化目标是什么、什么是支持向量、软间隔中的惩罚参数C起什么作用、核技巧的本质是什么。很多同学只知道SVM要找最大间隔超平面,不理解为什么引入拉格朗日对偶。简单说,对偶问题让内积运算可以通过核函数直接计算,从而把低维线性不可分的问题映射到高维变得线性可分,同时不对计算量造成指数级增长。

决策树需要掌握ID3、C4.5和CART的区别。ID3用信息增益选择特征,倾向选择取值多的特征,容易过拟合。C4.5用信息增益比来修正这个偏差。CART则用基尼指数,而且构建的树是二叉树。笔试里如果给一个简单数据集,要求手动计算信息增益并选择最优划分特征,这种题一定要会,它考察的是对信息熵公式理解的扎实程度。

3.2 无监督学习与聚类算法:K-Means与层次聚类的原理盲区

无监督学习在笔试里出题频率低于监督学习,但K-Means基本年年出现。考点包括:K-Means的步骤、如何选择K值、它对初始中心点是否敏感、如何评估聚类效果。

K-Means的步骤其实很简单:先随机选K个中心点,然后迭代两步——把每个样本分到距离最近的中心点所属的簇,然后重新计算每个簇的均值作为新的中心点,直到中心点不再变化或变化很小。笔试容易挖的坑是问“K-Means一定能收敛到全局最优吗”,答案是否定的,它只能收敛到局部最优,因此实际中常常需要多次随机初始化,取效果最好的一次。K值选择常用肘部法则,画出SSE随K变化的曲线,找拐点。

层次聚类也值得留意,它不需要预先指定簇数,而是逐步合并或分裂。笔试常考的是“凝聚式层次聚类的合并策略”,包括单连接(两个簇中最近点的距离)、全连接(最远点距离)、平均连接(平均距离)。这类细节题比较冷门,但一旦出现,区分度很高,因为大多数人复习时只关注了K-Means。

3.3 模型评估与选择:偏差方差、交叉验证与过拟合

模型评估这块,属于“看着简单、拿分不易”的部分。偏差方差分解是理论基础:偏差衡量模型预测值与真实值的差距,方差衡量模型在不同训练集上的波动程度。高偏差对应欠拟合,高方差对应过拟合。笔试里的经典题是画一个偏差方差与模型复杂度的关系图,或者问你“增大训练集样本数量会降低偏差还是方差”——答案是主要降低方差。

交叉验证也必须掌握。K折交叉验证把训练集分成K份,轮流拿其中一份做验证,其余K-1份做训练,最终结果取平均。它的优点是充分利用数据,缺点是计算开销大。笔试容易考“K折交叉验证中K应该怎么取”,一般K=5或10比较常用。如果数据集类别不平衡,还要注意分层采样,保证每一折里类别比例与整体一致。

过拟合的应对方法几乎是必考:增加训练数据、简化模型、正则化、早停、Dropout、数据增强。L1正则化和L2正则化的区别也要能说清楚:L1会让部分权重变为0,产生稀疏解,可以用作特征选择;L2让权重都趋向于小值,但不会为0,它起到的是平滑作用。正则化系数lambda太小等于没加正则,太大则会让模型偏差变大。

3.4 优化方法与深度学习入门:梯度下降、反向传播与常见网络

深度学习在这个时期的笔试题里占比还不算太高,但从2017年开始就呈现上升趋势。梯度下降的几种变体——批量梯度下降、随机梯度下降、小批量梯度下降——几乎是必考的送分题。要记住它们的区别:批量梯度下降每次用全部数据计算梯度,准确但慢;随机梯度下降每次用一个样本,快但有噪声;小批量是折中方案,深度学习里最常用。

反向传播是深度学习面试的灵魂问题。笔试可能不会要求你完整推导链式法则,但会考概念的组合,比如“权重更新时,误差对某一层的梯度是如何通过链式法则传递的”。至少要做到能画出简单的全连接网络结构,并手动算出某一层的梯度。

常见的网络结构需要了解卷积神经网络(CNN)的基本组成:卷积层、池化层、全连接层。知道卷积核的作用是提取局部特征,池化的作用是降采样和增大感受野。循环神经网络(RNN)需要了解它如何处理序列数据,以及梯度消失的原因是反向传播过程中梯度的连乘效应,而LSTM通过引入门控机制缓解了这个问题。热词里提到“机器学习奖励驱动”,这其实就是强化学习的基本思想,网易笔试偶尔会出选择题问强化学习的基本组成,即状态、动作、奖励、策略,了解即可。

4. 编程题实战:一道典型题目的完整复盘

4.1 题目描述与思路分析

网易的编程题风格偏实用,不太会出现特别偏门的算法,但会在经典题上做变形。这里我选取一道和“归并排序求逆序对”类似的题型来复盘,因为它既考察了排序算法的理解,又考察了分治和优化思维,和网易2018年的出题风格高度一致。

题目大意:给定一个长度为n的数组,求满足i小于j且a[i]大于a[j]的个数,也就是逆序对的数量。n的范围是10的5次方。如果直接用两层循环暴力求解,时间复杂度是O(n²),在n较大的情况下一定会超时。这道题的最佳解法是用归并排序的分治思想,在合并两个有序子数组的过程中统计逆序对。

思路是这样的:把数组不断二分,直到每个子数组只剩一个元素。在合并两个有序子数组时,如果右半边的某一个元素小于左半边的当前元素,说明它比左半边当前元素及其后面的所有元素都小,这些元素在原数组里都排在它前面,所以逆序对的数量要加上左半边剩余元素的个数。

4.2 代码实现与复杂度分析

C++实现如下:

#include <bits/stdc++.h> using namespace std; long long mergeSort(vector<int>& nums, vector<int>& tmp, int left, int right) { if (left >= right) return 0; int mid = left + (right - left) / 2; long long count = 0; count += mergeSort(nums, tmp, left, mid); count += mergeSort(nums, tmp, mid + 1, right); int i = left, j = mid + 1, pos = left; while (i <= mid && j <= right) { if (nums[i] <= nums[j]) { tmp[pos++] = nums[i++]; } else { tmp[pos++] = nums[j++]; count += (mid - i + 1); } } while (i <= mid) tmp[pos++] = nums[i++]; while (j <= right) tmp[pos++] = nums[j++]; for (int k = left; k <= right; k++) nums[k] = tmp[k]; return count; } int main() { int n; cin >> n; vector<int> nums(n), tmp(n); for (int i = 0; i < n; i++) cin >> nums[i]; long long result = mergeSort(nums, tmp, 0, n - 1); cout << result << endl; return 0; }

这段代码的要点在于统计部分的时机:当nums[i]大于nums[j]时,说明左半边从i到mid的所有元素都比nums[j]大,因此逆序对数量增加mid-i+1个。注意count要开long long,因为n为10的5次方时,逆序对数量最大接近n*(n-1)/2,即约5乘以10的9次方,int根本放不下。这个细节当年我就踩过坑。

时间复杂度是O(n log n),空间复杂度是O(n),完全满足题目要求。这里用了一个临时数组tmp来辅助合并,避免合并时频繁开辟新数组造成额外开销。

4.3 边界条件与测试用例

笔试做题时,边界条件的处理是拿分的关键。这道题的边界条件主要有三个。第一,数组长度为1时,递归函数应直接返回0。第二,数组已经有序时,逆序对数量为0,代码不会进入else分支。第三,数组完全逆序时,比如[5,4,3,2,1],逆序对数量是10,代码应正确统计。

我建议备考时养成一个习惯:写完代码先自己在本地跑几个测试用例。首先是题目给的样例,其次是全正序、全逆序、全部元素相同的数组,以及最小规模n=1。这样能快速暴露代码中隐藏的问题。比如你有没有在递归返回时把辅助数组的值拷贝回去?如果没有,下一次递归合并时用的就是未更新的数据,结果必然错误。

还有一个提高效率的小技巧:笔试平台一般会给出部分测试用例的运行结果。如果你的代码通过了样例但超时,首先要想到的是复杂度是否过高。如果是逆序对这道题,凡是把时间复杂度写成O(n²)的,基本不可能通过全部用例。遇到这种题,第一时间往分治、堆、树状数组方向想。

5. 常见问题与避坑指南

5.1 备考阶段的三大错误倾向

第一个错误倾向是“只刷题不看书”。很多同学准备算法岗笔试,一上来就是刷LeetCode,刷到200题就觉得够了。但机器学习理论部分如果底子不牢,客观题几乎会丢一半分。笔试不只看你会不会写代码,还看你对模型原理的理解是否深入。我当时复习时给自己定的规矩是:每天算法题量控制在4到6道,其余时间读理论笔记,重点看损失函数推导、模型评估、正则化这些高频考点。

第二个错误倾向是“只看不练”。机器学习理论光看书很容易产生“我懂了”的错觉。比如偏差方差那一节,书本上几句话就讲完了,但实际做题时你会发现,题目经常把概念绕来绕去,不亲手推导几遍根本分不清。我建议备考时准备一个笔记本,把每个模型的关键公式推导一遍,逻辑回归的梯度、SVM里拉格朗日函数的构造、决策树的信息增益计算,都手写一遍,效果会好很多。

第三个错误倾向是“考试时死磕某一道题”。笔试时间有限,编程题的分数往往不是平均分配的。如果你在某道题上卡了20分钟还没思路,赶紧跳到下一道,把能拿的分先拿到。客观题里遇到不会的,先标记出来,不要影响后面答题的节奏。

5.2 考场上的时间分配与做题策略

以大厂笔试常见的90分钟为例,我建议的时间分配是:客观题控制在35分钟以内,剩下55分钟留给两道编程题。客观题里如果有那种一眼不会的公式推导题,先跳过去,把会做的做完再回来看。很多时候,做完后面的题再回来,思路反而打开了。

编程题的做题顺序也有讲究。先读题,理解题目的数据范围,因为它决定了你能用什么复杂度的算法。如果n是10的5次方,O(n²)基本没戏,O(n log n)是及格线。如果n只有1000,O(n²)也许也能过,但不值得冒险。确认算法后先写暴力版本验证思路,再按复杂度要求优化,这是一个比较稳妥的策略。

考场里另一个容易出问题的地方是输入输出。题目要求多组输入时,不要只写单组逻辑。很多同学在本地IDE测得好好的,一提交就报错,多半是输入输出格式不对。读题时注意看题目给的示例,输入和输出之间有没有多余的空格或换行,这些细节都会影响判题结果。

5.3 笔试后的复盘清单

笔试结束不代表这件事就过去了。我强烈建议每做完一套题,都按下面的清单复盘一遍。

第一,整理错题。把所有做错的客观题对应的知识点记下来,比如“决策树C4.5和CART的区别”“SVM软间隔C参数的含义”。第二,回顾编程题的思路。如果你某道题没有AC,至少要看一下题解,理解正确的思路是什么,然后重新手写一遍,保证自己能AC。第三,记录时间节点。你在一道题上花了多久,是超出预期还是提前完成,这能帮助你在下次笔试中更合理地分配时间。

复盘的意义在于形成“错题—知识点—再练习”的闭环。很多东西第一次做错很正常,但同一类错误如果出现两次,说明你的知识体系里有断层。笔试考的就是把这些人筛出来,所以复盘越详细,你离面试就越近。

最后再分享一个小技巧。准备网易这类公司的笔试时,建议去搜一下它历年真题的命题偏好。有的公司喜欢考动态规划,有的喜欢考字符串处理,有的在机器学习理论里特别关注贝叶斯和概率图模型。有针对性地补强短板,比漫无目的地刷题高效得多。我当时就是在牛客网上把前几年的网易真题找出来,一道一道研究,才慢慢摸清了出题人的思路。

这个内容后续还可以继续扩展,比如把常考模型整理成一份速查表,或者把笔试中常见的编程题分类整理成专题。如果你正在准备校招,希望这份拆解能帮你在复习时少走一些弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 2:32:12

MATLAB实时机会约束决策及其在电力系统中的应用附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/8/29 2:32:01

C++模板编程:从泛型思维到智能指针的实战解析

1. 从“重复造轮子”到“一劳永逸”&#xff1a;为什么我们需要模板&#xff1f;如果你写过一段时间的C&#xff0c;尤其是在处理数据结构或者算法时&#xff0c;大概率会遇到一种让人抓狂的重复&#xff1a;为了给不同的数据类型&#xff08;比如int,double,string&#xff09…

作者头像 李华
网站建设 2026/8/29 2:29:56

热像仪温度矩阵如何映射到三维模型?开源项目实战解析

简介&#xff1a;红外热像仪输出的本质是一张二维温度矩阵&#xff0c;但工业检测中真正需要的是将温度精准定位到立体设备表面。从相机成像模型出发&#xff0c;通过标定热像仪内参与PnP外参解算&#xff0c;把每个像素的实测温度投影映射到三维模型网格顶点&#xff0c;即可得…

作者头像 李华
网站建设 2026/8/29 2:28:37

把网站改造成CLI接口:AI Agent节省142倍tokens的实践

这次我们来看一个很有意思的开源项目&#xff1a;把任意网站改造成 AI Agent 可以直接调用的 CLI 接口。项目标题里最抓眼球的是那个对比数字——比直接用 HTML 给 AI 当上下文&#xff0c;最多能省 142 倍的 tokens。做过 AI 编程、Agent 开发、RAG 检索的读者应该都知道&…

作者头像 李华
网站建设 2026/8/29 2:26:43

STM32F103定时器核心原理:从基本定时器到精准时钟配置实战

1. 从零开始&#xff1a;为什么STM32F103的定时器是“基本功”中的硬骨头&#xff1f; 如果你刚开始玩STM32F103&#xff0c;或者从51单片机转过来&#xff0c;第一个让你感觉“既熟悉又陌生”的外设&#xff0c;大概率就是定时器。在51上&#xff0c;你可能只用过一个或两个定…

作者头像 李华
网站建设 2026/8/29 2:21:11

LangGraph实战:用状态图掌控Agent流程与多Agent协作

LangGraph 这类工具&#xff0c;最近讨论最多的就是它能不能把复杂的 Agent 流程真正变成可控制、可复用、可调试的工程代码。我的判断是&#xff1a;如果你已经受够了拿一堆 if/else 拼 Prompt、在主流程里到处塞状态变量、多个 Agent 一协作就乱套&#xff0c;LangGraph 值得…

作者头像 李华