主题
基础试题
1. 解释面向对象编程(OOP)的概念,并提供C#中的一个示例。
解答
面向对象编程(OOP)是一种以对象为核心的编程思想,把数据和操作数据的方法封装在一起,通过封装、继承、多态、抽象四大特性实现代码复用、扩展和维护。 C# 示例:定义一个类,实例化对象并调用方法。
2. C#中的属性(Property)和字段(Field)有什么区别?
解答
字段是类的私有变量,直接存储数据;属性是对字段的封装,提供get/set访问器,可控制读写权限、数据验证,不直接存储数据。
3. C#中的接口(Interface)和抽象类(Abstract Class)有什么区别?
解答
接口只能定义规范,不能包含字段和实现(C# 8+可默认实现),一个类可实现多个接口;抽象类可包含字段、构造方法、实现代码,一个类只能继承一个抽象类。
4. 解释异常处理在C#中的作用以及如何实现异常处理。
解答
异常处理用于捕获程序运行错误,避免程序崩溃,保证程序健壮性。使用 try-catch-finally 结构捕获、处理异常并释放资源。
5. 什么是泛型(Generics)?在C#中如何使用泛型?
解答
泛型允许在定义类/方法/接口时使用未指定的类型参数,使用时再指定具体类型,实现类型安全和代码复用。常用 List<T>、Dictionary<TKey,TValue>。
6. 什么是LINQ(Language Integrated Query)?它的作用是什么?提供一个LINQ查询的示例。
解答
LINQ 是C#内置查询语法,统一查询各种数据源(集合、数据库、XML),语法简洁易读。示例:从列表中筛选数据。
7. C#中的异步编程是什么?如何使用 async 和 await 关键字进行异步编程?
解答
异步编程让程序在等待耗时操作时不阻塞主线程,提升响应速度。async 标记方法为异步,await 等待异步操作完成。
8. 什么是委托(Delegate)?它的作用是什么?提供一个委托的使用示例。
解答
委托是方法的容器,可以把方法作为参数传递,实现回调、事件等功能。示例:声明委托并绑定方法调用。
9. C#中的事件(Event)是什么?它与委托有什么关系?
解答
事件是基于委托的安全封装,只能在类内部触发,外部只能订阅/取消,用于实现观察者模式,如按钮点击事件。
10. 解释反射(Reflection)在.NET中的作用,并提供一个反射的使用示例。
解答
反射允许程序在运行时获取类型信息、调用方法、创建对象,常用于框架、插件、序列化。示例:通过反射获取类的成员。
11. 什么是特性(Attribute)?如何在C#中定义和使用特性?
解答
特性是用于给代码(类、方法、属性)添加元数据的标记,可在运行时通过反射读取,用于验证、序列化、路由配置等。
12. C#中的并发编程是什么?如何使用线程和任务(Task)进行并发编程?
解答
并发编程让多个任务同时执行,提高效率。Thread 是底层线程,Task 是基于线程池的高级抽象,更简洁安全。
13. 解释装箱(Boxing)和拆箱(Unboxing)的概念。
解答
装箱:把值类型转换为引用类型;拆箱:把引用类型转换回值类型。会产生性能开销,应尽量避免。
14. 什么是依赖注入(Dependency Injection)?如何在C#中实现依赖注入?
解答
依赖注入是一种设计模式,将对象依赖由外部创建并注入,降低耦合,方便测试和扩展。通过构造函数、属性、方法注入实现。
15. 解释C#中的迭代器(Iterator)以及 yield 关键字的作用。
解答
迭代器用于简化集合遍历,yield return 逐个返回元素,yield break 结束迭代,实现延迟执行,节省内存。
16. 什么是 .NET Core?它与 .NET Framework 有什么区别?
解答
.NET Core 是微软新一代跨平台、开源、轻量框架;.NET Framework 仅支持 Windows,更庞大。现在统一为 .NET 5+。
17. 解释依赖注入(Dependency Injection)在 .NET Core 中的作用以及优势。
解答
.NET Core 内置DI容器,自动管理对象创建与生命周期,降低耦合、便于单元测试、提高代码可维护性。
18. .NET Core 中的依赖注入有哪些常见的生命周期?请解释它们的区别。
解答
Singleton:单例,全局唯一;Scoped:作用域内单例(一次请求);Transient:每次获取都新建。
19. ASP.NET Core 中的中间件(Middleware)是什么?它们的作用是什么?
解答
中间件是请求管道中的组件,依次处理请求和响应,实现路由、认证、静态文件、异常处理等功能。
20. ASP.NET Core 中的路由是如何工作的?它与传统 ASP.NET 的路由有什么不同?
解答
路由将请求URL映射到对应端点。ASP.NET Core 路由更灵活,支持终结点路由,可与中间件完美结合,比传统 ASP.NET 性能更强。
21. ASP.NET Core 中的配置(Configuration)是什么?它如何与应用程序的设置相关联?
解答
配置是应用的设置来源,支持 appsettings.json、环境变量、命令行、配置中心等,自动绑定到强类型对象。
22. 解释 ASP.NET Core 中的控制器(Controllers)以及它们的作用。
解答
控制器是MVC的入口,接收请求、调用业务逻辑、返回结果(视图/JSON),处理请求与模型交互。
23. ASP.NET Core 中的模型绑定(Model Binding)是什么?它如何简化开发过程?
解答
模型绑定自动把请求数据(表单、路由、JSON)映射到模型对象,无需手动解析,大幅简化参数接收。
24. 什么是 Entity Framework Core?它与 Entity Framework 有何不同?
解答
EF Core 是轻量、跨平台、开源的ORM框架;EF 仅 Windows 平台。EF Core 更轻量、可扩展、性能更好。
25. 如何在 ASP.NET Core 中进行身份验证和授权?
解答
使用 Authentication 中间件 + JWT/Cookie 完成身份验证;使用 [Authorize]、策略、角色完成授权。
26. 解释 ASP.NET Core 中的 Razor Pages 是什么以及它们如何与 MVC 相比?
解答
Razor Pages 是页面优先模式,适合简单页面;MVC 是职责分离模式,适合复杂业务。Razor Pages 更简洁,MVC 更灵活。
27. ASP.NET Core 中的中间件管道(Middleware Pipeline)是什么?它如何工作?
解答
中间件管道是请求处理的有序组件链,请求依次进入每个中间件,响应按相反顺序返回,形成环形处理。
28. 什么是 ASP.NET Core 中的反应式编程(Reactive Programming)?它在开发中的作用是什么?
解答
基于事件流和异步数据流编程,使用 Rx.NET 处理异步事件序列,适合实时数据、高并发事件处理。
29. ASP.NET Core 中的工作机制是什么?
解答
启动 → 构建主机 → 配置服务 → 构建中间件管道 → 监听请求 → 按管道处理请求 → 返回响应。
30. 解释 ASP.NET Core 中的 Docker 容器化是什么以及它的优势。
解答
Docker 把应用和依赖打包成容器,保证环境一致,实现快速部署、跨平台、隔离性、弹性扩缩容。
31. 如何进行 .NET Core 项目的单元测试?
解答
使用 xUnit/NUnit + Moq 模拟依赖,测试业务逻辑,通过断言验证结果,支持自动化集成测试。
32. 在 .NET Core 中如何处理并发?
解答
使用异步/await、任务并行库、并发集合、锁、Interlocked、EF 并发令牌控制并发安全。
33. ASP.NET Core 中的 Razor 标记是什么?如何使用它们?
解答
Razor 是 HTML+C# 混合语法,用于生成页面,使用 @ 符号插入C#代码,简洁高效。
34. ASP.NET Core 中的中间件如何进行测试?
解答
使用 TestHost 或 WebApplicationFactory 创建测试服务器,发送请求并验证响应结果。
35. ASP.NET Core 中如何处理日志记录?
解答
内置 ILogger 接口,支持控制台、文件、Debug、第三方日志框架(Serilog、NLog),按级别记录。
36. ASP.NET Core 中的中间件和过滤器(Filters)之间有什么区别?它们的执行顺序是怎样的?
解答
中间件处理全局请求;过滤器专注MVC/API Action 前后。顺序:中间件先执行 → 执行过滤器 → 回到中间件。
37. 解释 ASP.NET Core 中的 WebSockets 是什么以及如何使用它们?
解答
WebSockets 是全双工长连接,用于实时通信。通过 WebSockets 中间件建立连接,双向收发消息。
38. ASP.NET Core 中的 Web API 是什么?如何创建和使用 Web API?
解答
Web API 用于构建 HTTP 接口,返回 JSON/XML。创建 Controller 继承 ControllerBase,编写 Action 即可。
39. 在 ASP.NET Core 中如何处理跨域资源共享(CORS)?
解答
添加 CORS 服务,配置允许的来源、方法、请求头,使用 UseCors 中间件解决跨域限制。
40. 什么是 ASP.NET Core SignalR?它有什么作用?
解答
SignalR 是实时通信库,自动选择 WebSockets 等传输方式,实现聊天室、通知、实时数据推送。
41. 如何在 ASP.NET Core 中进行文件上传?
解答
接收 IFormFile 参数,使用 CopyTo 保存文件,可配置大小、类型、路径。
42. 在 .NET Core 中如何使用多线程和异步编程?
解答
使用 Task、async/await、Parallel、线程池、并发集合处理多任务,避免阻塞,提高吞吐量。
43. ASP.NET Core 中的自定义中间件是什么?如何实现和使用它们?
解答
自定义中间件是自己编写的请求处理组件,通过 Invoke/InvokeAsync 实现,用 UseMiddleware 注册。
44. 如何在 .NET Core 中进行依赖注入的单元测试?
解答
构建测试容器,注入真实或模拟服务,解析对象并测试行为,验证依赖注入是否正常。
45. 解释 ASP.NET Core 中的反应式扩展(Reactive Extensions)是什么以及如何使用它们?
解答
Rx.NET 用于处理异步事件流,使用 Observable/Observer 模式,适合实时数据、事件聚合。
46. ASP.NET Core 中的 Tag Helpers 是什么?它们如何简化视图的创建?
解答
Tag Helpers 是服务器端HTML标记扩展,简化表单、链接、路由生成,比 Html Helper 更直观。
47. ASP.NET Core 中的 Blazor 是什么?它如何与传统的 Web 开发模式不同?
解答
Blazor 允许使用 C# 编写前端交互,替代 JS。分为 Server 和 WebAssembly 模式,前后端统一语言。
48. 解释 ASP.NET Core 中的服务过滤器(Service Filters)是什么以及如何使用它们?
解答
服务过滤器从DI容器中解析,支持依赖注入,比普通过滤器更易测试,用于日志、缓存、权限。
49. 在 .NET Core 中如何进行数据库迁移(Migration)和数据种子(Seeding)?
解答
EF Core Migrations 自动生成表结构变更;种子数据在初始化时插入默认数据,保证环境一致。
50. 什么是 .NET Core 中的 gRPC?它与 REST API 有何不同?
解答
gRPC 是基于 HTTP/2 + Protobuf 的高性能RPC框架,比 REST 更快、更小、强类型,适合微服务通信。