2022-01-21 21:54:30
北京黑镜科技2026届.NET实习生C#面试核心问题及解答要点如下:
1. 数据库相关问题作用:加速数据检索,通过B+树结构减少磁盘I/O。
注意事项:避免过度索引(影响写入性能)、选择高区分度字段、复合索引需遵循最左前缀原则。
事务:ACID特性(原子性、一致性、隔离性、持久性),通过BEGIN TRANSACTION和COMMIT/ROLLBACK实现。
锁:共享锁(读锁)、排他锁(写锁),需注意死锁问题(可通过超时或顺序访问避免)。
Header:包含算法类型(如HS256)和Token类型。
Payload:存储用户信息(如ID、角色)和元数据(如过期时间)。伍带银
Signature:通过Header和Payload的哈希值生成,防止篡改。
优势:减少线程创建/销毁开销,通过ThreadPool.QueueUserWorkItem或Task.Run使用。
配置:可设置最小/最大线程数(SetMinThreads/SetMaxThreads)。
领域模型:包括实体、值对象、聚合根(如订单聚合根包含订单项)。
限界上下文:定义领域模型的边界,避免概念混淆(如“用户”在订单上下文和支付上下文中可能有不同含义)。
Transient:每次请求创建新实例。
Scoped:每个HTTP请求范围内共享实例。
Singleton:整个应用生命周期内共享实例。
缓存穿透:对空值缓存或使用布隆过滤器。
缓存雪崩:设置随机过期时间或多级缓存。
数据一致性:通过双写或消息队列同步MySQL与Redis。
需求澄清:与客户沟通明确核心目标(如“用户需要快速完成订单”而非具体功能)。
分阶段设计:先实现MVP(最小可行产品),再逐步迭代。
领域建模:行皮通过用户旅程图或事件风暴会议识别关键业务实体和流程。
技术选型:根据非功能需求(如性能、扩展性)选择合适架构(如单体或微服务)。