在 Stripe 的一道真实技术面试题中,候选人需要实现一个简化版的反欺诈规则引擎(Fraud Rule Engine)。
题目分为两个部分,从最基础的字符串条件匹配,逐步扩展到布尔变量以及 AND、OR 逻辑组合。整体代码量不一定很大,但对规则优先级、逻辑判断和代码扩展性都有一定要求。
面试题目(英文原题)
Part 1 — String equality rules
Implement should_accept_transaction(transaction, rules) for a fraud-rule engine.
Each transaction has string fields, such as merchant_name and card_brand.
Each ordered rule is either ACCEPT or BLOCK.
A rule has one equality condition, such as:
(:merchant_name: = "Not A Fraudster")
Apply rules in order; the first matching rule decides the result.
If no rule matches, accept the transaction by default.
Part 2 — Boolean, AND, and OR rules
Extend the same fraud-rule engine to support Boolean transaction fields.
A rule condition may be one Boolean variable, such as:
(:known_stolen_card:)
It may combine two Boolean variables with AND or OR, such as:
(:large_amount: AND :from_different_country:)
Keep all Part 1 string-equality behavior working.
Rules are still evaluated in order, and no matching rule means accept.
题目中文说明
本题要求实现一个函数 should_accept_transaction(transaction, rules),根据交易信息和预先定义的规则,决定是否接受一笔交易。
第一部分:字符串匹配
每笔交易包含商户名称、银行卡品牌等字符串字段。系统接收一组有顺序的规则,每条规则都包含一个匹配条件,以及 ACCEPT(接受)或 BLOCK(拦截)操作。
例如,当商户名称等于 "Not A Fraudster" 时,执行对应的 ACCEPT 或 BLOCK 操作。
规则必须按照顺序执行,第一条匹配成功的规则直接决定最终结果。如果没有任何规则匹配,则默认接受交易。
第二部分:布尔逻辑扩展
在第一部分的基础上,进一步支持布尔字段,例如:
known_stolen_card:是否为已知盗刷卡。large_amount:是否为大额交易。from_different_country:是否来自其他国家。
除了判断单个布尔字段,还需要支持 AND 和 OR 条件。
例如,交易金额较大,并且来自其他国家时,可以触发一条拦截规则。
扩展过程中,原有的字符串匹配规则必须继续正常工作。
解题思路与面试关注点
这道题看起来像一个简单的条件判断问题,但关键并不在于写多少个 if,而在于如何组织规则的解析与执行。
第一部分可以直接遍历规则,判断指定字段是否等于目标字符串,匹配后立即返回该规则对应的结果。
第二部分需要增加对条件类型的识别。字符串相等、单个布尔变量以及 AND、OR 表达式虽然判断方式不同,但都可以统一抽象成返回 true 或 false 的条件求值过程。
这样主流程不需要随着规则类型增加而不断修改,只需要负责按顺序执行规则。
这里有几个值得关注的细节:
首先是规则顺序。 即使后面还有其他规则能够匹配,也不能覆盖第一条匹配规则的结果。
其次是默认行为。 没有匹配规则时,系统应该返回 ACCEPT,而不是 BLOCK。
最后是向后兼容。 第二部分增加布尔逻辑后,第一部分的字符串相等判断仍然必须正确执行。
需要注意的是,题目只要求支持给定的单个布尔变量以及两个布尔变量之间的 AND、OR,并没有明确要求实现任意嵌套表达式,因此不必一开始就设计完整的表达式解析器。
总结
Stripe 这道题的特点是从简单功能开始,逐步增加新的规则类型,考察候选人能否在保留已有功能的基础上扩展程序。
对于熟悉 Java 或 Python 的候选人来说,实现基础判断并不复杂。更值得准备的是如何让规则匹配、条件计算和最终决策保持清晰的职责划分。
类似的渐进式题目也很适合通过 Mock Interview 练习。csoahelp 提供北美技术面试 Mock 及实时文本辅助服务,帮助候选人熟悉真实面试中的题目扩展、思路表达和现场编码节奏。
我们也有代面试,面试辅助,OA代写等服务助您早日上岸~

