尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

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

反作弊工程师笔试全解析:从算法到业务场景的实战指南

反作弊工程师笔试全解析:从算法到业务场景的实战指南 2018年那会儿我去参加滴滴出行校园招聘的内推笔试报的岗位是反作弊工程师后来也在这条线上做了几年。说实话当时很多人对这个岗位的理解都停留在写规则、封账号的层面甚至有人问过我反作弊和传统安全岗有什么区别。等真正走完笔试、面试再在业务安全团队里扎了一段时间后我才意识到这个岗位的考察逻辑和日常打法跟外面想象的很不一样。这篇东西不聊具体的故事情节就认认真真拆一下反作弊工程师笔试到底考什么、为什么考这些、以及从笔试延伸出去这个岗位实际要解决什么问题。不管你是在准备类似岗位的校招、社招还是对业务安全这个方向感兴趣这篇都应该能给你一些参考。1. 先搞明白反作弊工程师在跟谁打仗不理解对手就没法理解考题。反作弊这个岗位的笔试题目看起来是考算法、考统计、考代码但根子上考的是你有没有能力识别并压制一群有组织、有工具、有反馈闭环的黑产对手。1.1 所谓作弊在出行平台里到底长什么样出行行业的核心资产是运力和乘客体验作弊行为几乎都围绕这两点展开。我按业务链路大致分了几类司机端刷单司机虚构行程、伙同乘客配合刷单、利用小号自刷骗取平台补贴或完成任务奖励。乘客端薅羊毛注册新用户领红包、批量养号、拆分订单凑优惠核心是让平台多花不该花的钱。账户与交易安全盗号、代叫车、恶意投诉、私下交易绕过平台。运力侧扰乱刷排队、抢占热区、虚假定位、制造虚假供需来影响调度。你去看笔试的场景题几乎都是从这些真实作弊行为里抽象出来的。平台不会闲到考你一个纯数学题它给你一串订单、轨迹、设备信息背后一定是某类真实风险。1.2 反作弊工程师和传统安全工程师的差异传统安全关注的是漏洞、攻击、防御边界相对清晰反作弊面对的是业务逻辑层面的人为对抗攻击者和你在同一个业务规则空间里博弈。他不用攻破你的系统只需要找到业务规则里的漏洞就能获利。这个差异直接决定了笔试的出题风格。它不考你渗透测试、不考你逆向分析而是考你从数据里发现异常模式的能力。你要会写代码处理海量日志要懂统计和概率去判断什么叫做异常要理解业务逻辑去解释为什么这个异常是作弊。对照这三个能力笔试的题型也就有了大概轮廓。1.3 一个容易被低估的能力业务敏感度很多人把注意力放在刷题上却忽略了业务理解。反作弊笔试的压轴题往往不是写代码而是给一个业务场景让你设计方案。我记得很清楚当时的题目类似网约车平台发现部分订单的乘客和司机在短时间内相互好评率异常偏高且集中在深夜和偏僻区域请给出你的分析思路。这种题没有标准答案但有没有业务敏感度一眼就能看出来。没有经验的人会直接说用随机森林分类有经验的人会先问深夜和偏僻区域是真实需求还是刷单掩护异常偏高是相对谁高样本怎么标注笔试想筛选的就是这种会先定义问题、再选工具的人。2. 笔试中反复出现的四类题型刷题方向得对我后来和不少参加过同场笔试、以及前后几年校招进来的同事交流过大家拼出来一个共识反作弊工程师的笔试题目万变不离四类。2.1 编程与数据结构题现场处理日志的硬功夫反作弊岗位日常要处理海量行为日志代码能力是第一道门槛。笔试里常见的编程题包括解析多格式日志提取关键字段并做聚合统计。滑动窗口类问题比如过去5分钟内的订单密度、实时频控限流。Top K问题比如找出一天内打车次数最多的用户。合并区间、集合去重这类基础题用于处理GPS轨迹、时间区间重叠。这类题占笔试的30%-40%刷过LeetCode中等难度的题基本能覆盖。但要注意笔试中的题目往往带了一堆业务字段比如订单ID、司机ID、经纬度、时间戳、手机型号你要能在处理真实数据的视角下写代码而不是只会在LeetCode的纯净输入输出里做算法。我当时遇到的就是一个类似给定一批订单记录筛出多次在短时间取消订单的用户ID的题本质上就是分组加排序加阈值判断但如果对数据清洗不熟很容易在字段解析上翻车。2.2 概率统计题一切异常判断的理论根什么叫做异常——这个问题的底层答案全在概率统计里。笔试经常出现给定某个指标的分布让你判断哪些点属于异常点并说明为什么用3-sigma、IQR或百分位法。假设检验问题比如促销活动后订单量上升如何判断是活动带来的还是自然波动。贝叶斯公式的应用比如已知黑产账号占比1%模型报警准确率99%报警后真的黑产的概率是多少。极大似然估计比如估计某个用户群体的下单时间间隔分布参数。说句实话概率统计题才是反作弊笔试的灵魂。因为反作弊不是一个纯分类问题很多场景下你面对的是极度不平衡的样本没有标注的样本你需要用统计思维去建立异常基线。我记得当时有一道题是给出一辆车的每日订单量序列问哪几天异常、用什么方法背后考察的就是对时序数据和统计分布的理解。2.3 机器学习基础题不考手推公式考工程判断反作弊会用到机器学习模型但笔试不会让你手推复杂的梯度公式更侧重考察样本不均衡怎么处理欠采样、过采样、代价敏感学习、异常检测单类建模、或者干脆用规则兜底。特征工程意识不是问你会不会做特征而是给你一个场景问你会提取哪些特征。比如识别司乘串通刷单会想到轨迹相似度、时段规律、设备关联。离线评估和线上验证如何防止过拟合、A/B测试怎么做、模型上线后没有实时反馈怎么办。这些内容说难不难但如果你想当然地按常规分类问题去答就容易露怯。反作弊场景里正负样本比例经常是千分之一以下而且作弊手法在变静态的模型很快会失效。能在笔试里答出模型要定期重训练规则要兜底这个层次的候选人通常会让面试官眼前一亮。2.4 业务场景设计题开放题里的逻辑闭环这是全场最拉分的题通常放在最后占分不一定高但最能体现岗位匹配度。这类题目往往是一个简短的作弊场景描述要求你给出从发现问题到落地上线的完整方案。我当时认识的几个拿到offer的同学共同特点是在场景题里能把数据获取→特征构建→策略制定→阈值调优→人工审核→效果评估→策略迭代这条链路完整串起来。不是说你要一步到位建一个复杂的模型而是要让面试官看到你有系统性解决问题的思维框架。注意这类题里最常见的失误是直接跳进算法细节比如上来就说用GCN图卷积网络识别团伙。技术很酷但你没有回答如何定义作弊数据从哪里来没有标签怎么办这些前置问题。在反作弊这个领域方案的第一步永远是定义你要打击的对象。3. 一道典型的业务场景题从接到题目到完整答题链路我拿一道和当时笔试风格非常接近的题完整演示一下一个合格的答题链路是什么样的。题目是这样的平台收到反馈部分司机存在非正常接单行为包括但不限于自行下单并取消、与乘客串通进行虚假行程等。你只有一周内所有订单的起终点、时间、金额、补贴金额、司机与乘客ID、GPS轨迹点数据以及司机操作日志。请设计一个方案识别这类作弊司机。3.1 第一步把模糊的问题拆成可执行的子问题接到题不要急着建模。先明确几件事什么是这个场景下的作弊有几种形态每种形态下我们手上有什么数据可以支撑判断没有标注样本如何建立一个相对可信的种子集合以刷单为例它通常意味着空驶时长极短、订单金额异常、乘客与司机历史交互关系单一或过度固定。自刷则往往订单来自该司机自己的小号设备或支付渠道存在关联。把这些子问题列清楚答题就有了骨架。3.2 第二步数据探查与特征构造在笔试场景下不用你真正跑数据但你必须说出你会探查什么、构造什么特征。这里面试官会看你的具体操作性。我一般会从几个维度展开基础统计维度司机每天的接单量分布、订单时长分布、取消率、补贴收入占比。轨迹维度GPS轨迹是否真实连续、订单起点与终点是否在可驾驶区域、行驶路径是否最优、是否存在绕路或空驶。行为序列维度同一司机多次接单的间隔时间、夜间活跃时段、地理位置跳变是否合理。关系维度司机与乘客之间的共同交互次数、是否互为唯一交互对象、设备ID/MAC/支付渠道是否存在关联。构造完特征之后按单特征或简单交叉规则找出离群司机比如取消率大于80%且短时接单间隔小于2分钟。这个粗糙的规则集就是后续建模的种子集。3.3 第三步规则、模型与人工审核的闭环有了种子集才算进入正题。一个合格的方案要包括用规则引擎做第一层实时拦截比如高频异常取消的司机立即触发风控审核。用有标签的种子集训练一个分类模型XGBoost、Logistic Regression都可以对全量司机打分。对模型打分高的司机进行人工审核核对轨迹、订单、设备关联确认后入库。库里的司机既用于处罚也作为新的训练样本。设置监控看板跟踪每日新增作弊司机数、误伤率、策略覆盖率。很多人在这一步就停了没有讲策略上线后怎么闭环迭代。但反作弊的核心恰恰是循环黑产会变你的规则和模型也必须跟着变。谁能把这个循环讲清楚谁就拿到了这道题的大部分分数。3.4 第四步给面试官展示你的安全边界意识最后一个有经验的反作弊工程师不会忽略的是误伤控制。比如正常司机可能因为车辆故障频繁取消订单或者乘客临时取消导致司机空驶率升高这些都会被特征捕捉到但并非作弊。答题时主动提到我会对高频取消的司机做二次校验结合乘客投诉、申诉记录来判断是否存在合理原因这件事会明显提升你的评分。因为它说明你理解风控不是追求把所有可疑对象都抓出来而是在尽力打击和用户体验之间找平衡。4. 从笔试延伸出去真正的反作弊项目是怎么做的笔试只是入场券。进入真实的反作弊工作后你会发现那道开放场景题里的思路几乎就是一个简化版的生产风控系统。我在这里把实际的反作弊体系展开讲一下也是给准备入行的同学一个全景图。4.1 实时风控系统的层次结构一个成熟的反作弊系统通常分为五层名单库是最基础的一层包含设备ID、手机号、身份证号、支付账号的黑名单/灰名单。它的特点是速度快但覆盖有限因为黑产会不断换新号、换设备。规则引擎是第二层基于明确的行为阈值做实时判断。比如同一设备在10分钟内注册超过3个账号直接触发惩罚。规则的好处是解释性强、上线快、方便业务理解缺点是容易被黑产探测并绕过。特征平台是第三层从海量原始数据里加工出用户的行为特征、关系特征、设备特征为规则和模型提供输入。这一层考验的是数据工程能力很多刚入行的人低估了它的重要性实际上反作弊策略的大部分效果都取决于特征的质量。模型层是第四层用机器学习模型对风险进行打分。常用的有Isolation Forest做无监督异常检测、XGBoost做有监督分类、Graph Embedding做团伙识别序列模型用于识别行为轨迹异常。图谱关系层是第五层也是近几年最被重视的。黑产往往以团伙形式行动单看一个账号可能没有明显异常但多账号共享设备、共用IP、相互交易在图结构里就会有明显的聚集特征。通过构建「设备-账号-订单-支付」的异构图再配合社区发现算法能够把一个个孤立的作弊账号串成团伙。4.2 样本标注和冷启动真实项目里最头疼的问题笔试里的题目通常假设你已有标注好的训练集但真实业务里最常见的困局是没有标签或者标签严重滞后。比如刷单司机——你发现一批可疑对象但只有等人工审核完才能确认是不是。人工审核一天能过几百单已经不错了而黑产一天可能新产生几千个作弊账号。这个矛盾怎么解决一个务实的做法是规则种子半监督迭代先用高置信度的规则如设备关联超过5个账号、订单轨迹重叠率超过99%圈定一批准正样本。用这些准正样本训练一个初步模型在全量数据上打分。人工审核模型打分Top区间的对象确认后并入训练集。重复训练逐步扩大覆盖。这个流程听起来简单但实际操作中有很多坑规则种子太紧样本量不够模型学不到东西规则种子太松混入假阳性模型就学歪了。这些细节是笔试不会考、但日常工作中每天都要面对的问题。4.3 黑产的对抗升级与反制反作弊是一场持续的军备竞赛。今天你觉得这个策略真有效抓了一大批明天黑产就会调整行为模式绕过你的特征。最常见的对抗模式是你发现新注册手机号在2分钟内下单是异常黑产就改成注册后等待2小时再下单。你发现同一设备登录超过3个账号是异常黑产就使用设备农场或模拟器每个设备只登录一个小号。你发现GPS轨迹异常是异常黑产就研发模拟定位工具把路径伪造得极其逼真。所以真实项目里的反作弊工程师一半时间在写代码和调模型另一半时间在破解黑产的新手法。你需要看攻击样本、分析行为日志、找到新的特征。这个过程没有终点但也正因如此这个岗位非常锻炼人的系统思考能力。5. 给想进反作弊方向的同学的几点实在建议笔试是一个入口但我觉得比应试更重要的是想清楚自己是否适合这个方向。如果看完前面这些内容你还是觉得有意思、想试试那下面几条建议应该对你有用。5.1 笔试前把这几块基础打牢从应试角度优先级排序是概率统计 数据处理能力 机器学习基础 场景方案设计。概率统计要重点刷假设检验、贝叶斯、异常检测的常用方法不要只背公式要能解释它们各自适用什么场景。数据处理能力指的是用Python/Pandas/Spark处理日志类数据笔试里很多编程题包装成业务题本质是考你能不能高效地处理结构化数据。机器学习不需要追求最新的大模型你只要能讲清楚XGBoost、逻辑回归、孤立森林的原理和适用场景就够了。场景方案设计是拉开差距的地方。我建议你至少提前准备几个常见反作弊场景的方案框架比如识别刷单、识别恶意注册、识别套现。练的时候不要记答案而是把定义问题→数据探查→特征构造→规则/模型→人工审核→效果评估→迭代闭环这个框架内化任何场景都能往里套。5.2 项目经历要体现闭环思维如果是校招简历上写项目经历时不要只写我用了XGBoost准确率90%。反作弊方向的面试官更关心你是如何定义问题、数据从哪里来、效果怎么评估、策略上线后怎么迭代。比如你做过一个识别虚假评论的项目可以这样组织描述从用户行为日志中提取评论时间分布、设备指纹、IP关联等特征。通过规则构造高置信度种子集再用半监督方法扩展标注。采用XGBoost分类和社区发现两种方法交叉验证。最终把策略封装成实时接口对线上评论进行拦截。建立人工复核反馈回路每周更新训练集。这样一个描述下来面试官能直观感受到你具备生产的思维而不只是会调参。5.3 这个岗位并不是纯技术岗最后说点大实话。反作弊工程师的日常工作技术占比可能只有六成剩下的时间在和业务方沟通、在写策略文档、在分析黑产最新攻击样本。你需要理解业务是怎么运作的比如司机为什么要刷单、补贴规则哪里有漏洞、用户投诉背后是正常问题还是恶意行为。这些业务理解会在笔试的场景题里加分更会在实际工作中决定你的产出质量。我见过技术能力很强但业务感知弱的同学写出来的模型在离线指标上很好看上线后被投诉误伤搞得灰头土脸也见过不怎么会调模型但业务门儿清的同事靠几条精准的规则就解决了大问题。所以如果你决定入行建议有意识地去培养自己用业务语言解释技术问题的能力。5.4 笔试只是起点保持对抗思维才是关键如果你问我反作弊工程师和其他技术岗位最不一样的地方是什么我的答案是对抗思维。做推荐、做搜索你的对手是如何更好地理解用户做反作弊你的对手是如何更早地识破伪装。这意味着你永远不能停留在我已经做完了的状态因为对手在变、业务在变、数据在变。笔试里那道让你设计方案的题其实就是在看你有没有这种对抗思维你能不能站在黑产的立场去想如果我想骗过这个策略我会怎么做然后再回到自己的立场去设计更鲁棒的防线。我当时答完那道场景题其实没有用什么高深的算法就是把规则初筛-特征提取-离群检测-人工闭环的路子讲清楚了。后来入职后回头看笔试考的恰恰是这个岗位核心的方法论而不是某个具体的模型。希望这篇内容也能帮你把思路理清少走一点弯路。
返回列表