c#题例-2025-07-01 23:51:47
日期: 2025-07-01 分类: AI写作 3次阅读
当然可以!下面是一道**专家级别**的 C# 程序员逻辑面试题,它考察了 **泛型、委托、闭包、递归、线程安全设计、以及函数式编程思想** 的综合理解。
---
### 🧠 面试题:实现一个线程安全的缓存装饰器(Cache Decorator)
#### 📌 背景说明:
你正在开发一个高性能服务,其中有一些高频率调用但计算代价高的方法。为了提升性能,你需要为这些方法构建一个通用的缓存机制。要求如下:
- 编写一个泛型 `CachedFunction
- 缓存应支持任意类型 `TArg` 和 `TResult`。
- 使用 `ConcurrentDictionary` 实现线程安全。
- 支持自定义键转换器(例如对复杂对象生成唯一键)。
- 提供缓存清除功能。
- 可选加分项:支持基于时间的过期策略。
---
### ✍️ 任务要求:
1. 实现 `CachedFunction
- `func`: 要被缓存的方法 `Func
- `keySelector`: 可选的键提取函数,默认使用 `x => x`,如果是引用类型建议重写 `.GetHashCode()` 和 `.Equals()`
2. 实现 `TResult Invoke(TArg arg)` 方法,该方法返回缓存结果或调用原始函数并缓存结果。
3. 实现 `Clear()` 方法清空当前缓存。
4. 确保整个类是线程安全的。
5. 可以考虑懒加载缓存值,避免并发重复计算。
---
### 💡 示例代码框架:
```csharp
public class CachedFunction
{
private readonly Func
private readonly Func
private readonly ConcurrentDictionary
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:AI写作
精华推荐