Skip to content

基础试题 ​

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 更快、更小、强类型,适合微服务通信。

最近更新