Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >AI写作

c#题例-2025-07-26 09:25:01

当然可以!以下是一道**专家级别**的 **C# 程序员逻辑面试题**,它结合了 C# 的高级特性(如委托、表达式树、反射、泛型、LINQ 和异步编程)以及对程序结构设计的理解:

---

### 🧠 面试题:设计一个可扩展的“条件规则引擎”

#### 📌 题目描述:

你被要求设计一个**条件规则引擎**,用于判断某个对象是否满足一组预定义的规则。规则可以动态添加,并支持以下功能:

1. 支持为任意类型的对象(如 `Person`, `Order`, 等)定义规则;
2. 每个规则是一个表达式,例如:`person => person.Age > 25`;
3. 支持组合多个规则(如 AND / OR / NOT);
4. 支持异步规则判断(例如需要调用外部 API);
5. 支持序列化/反序列化规则以便存储或传输;
6. 提供一个统一接口来执行规则,并返回匹配结果。

---

### ✅ 要求实现:

请设计一个可扩展的规则引擎框架,满足以下接口:

```csharp
public interface IRule
{
Expression> RuleExpression { get; }
bool Evaluate(T obj);
Task EvaluateAsync(T obj, CancellationToken ct = default);
}
```

并提供一个规则执行器:

```csharp
public interface IRuleEngine
{
void AddRule(IRule rule);
IEnumerable Filter(IEnumerable items);
Task> FilterAsync(IEnumerable items, CancellationToken ct = default);
}
```

---

### 💡 进阶问题(可选):

1. 如何支持将规则从数据库或配置中加载为表达式?
2. 如何支持将规则通过 JSON 或 XML 序列化?
3. 如何实现规则的优先级与分组?
4. 如何支持规则热更新(即运行时动态添加/修改规则)?

---

### 🔍 考察点:

- 对 **Expression Trees** 的理解与应用;
- 对 **委托与Func的使用** 的掌握;
- 对 **泛型接口与多态设计** 的理解;
- 对 **异步编程模型** 的熟悉;
- 对 **可扩展性架构设计** 的能力;
- 是否能结合实际业务场景进行抽象建模。

---

### ✅ 示例使用方式:

```csharp
var engine = new RuleEngine();

engine.AddRule(new ExpressionRule(p => p.Age > 25));
engine.AddRule(new AsyncRule(async p =>
{
var result = await ExternalService.Check(p.Id);
return result.IsApproved;
}));

var people = new List { /* ... */ };
var filtered = await engine.FilterAsync(people);
```

---

如果你需要我提供参考实现或进一步解释某个部分,请告诉我!

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: c#题例-2025-07-26 14:58:35

下一篇: c#题例-2025-07-26 03:51:46

精华推荐