.net 面试题目

以下是 .NET 面试中常见的题目分类及典型问题,涵盖基础、进阶、框架、数据库、性能等方向,供参考:

一、.NET 基础概念

1、什么是 .NET Framework?.NET Core 与 .NET Framework 的区别?

简单来说,.NET Framework 是 Windows 专属的 "老框架",适合维护传统 Windows 应用;而 .NET Core(及后续的 .NET 5+)是跨平台、开源的 "新框架",更适合现代应用开发(如跨平台服务、云原生),也是微软当前主推的技术路线。

2、CLR、CTS、CLS 分别是什么?它们的作用是什么?

  • CLR(公共语言运行时):负责内存管理、垃圾回收、代码执行等。
  • CTS(公共类型系统):定义 .NET 中类型的规则,确保跨语言交互。
  • CLS(公共语言规范):CTS 的子集,规定跨语言兼容的最小标准。

3、值类型与引用类型的区别?分别包括哪些?

  • 值类型:存储在栈上,直接包含数据(如 intstructenum)。
  • 引用类型:存储在堆上,栈上存引用地址(如 stringclassarraydelegate)。(延伸:string 是引用类型但表现类似值类型的原因 ------ 不可变性)

4、装箱与拆箱的概念?有什么性能影响?

  • 装箱:值类型 → 引用类型(堆内存分配,性能损耗)。
  • 拆箱:引用类型 → 值类型(类型检查,性能损耗)。(如何避免:泛型、避免不必要的类型转换)

二、C# 核心语法

委托(Delegate)、事件(Event)、回调函数的区别与联系?

  • 委托:类型安全的函数指针,可指向多个方法(多播委托)。
  • 事件:基于委托的封装,限制外部直接调用,仅允许订阅 / 取消订阅。

泛型的作用?泛型约束有哪些?

  • 作用:类型安全、避免装箱拆箱、代码复用。
  • 约束:where T : class(引用类型)、where T : struct(值类型)、where T : new()(无参构造函数)等。

接口(Interface)与抽象类(Abstract Class)的区别?

  • 接口:只能定义方法签名,无实现;类可多实现。
  • 抽象类:可包含抽象方法和具体实现;类只能单继承。(适用场景:接口定义 "能做什么",抽象类定义 "是什么")

async/await 的工作原理?与 Task.Run 的区别?

  • async/await:异步编程模型,避免阻塞线程,基于状态机实现。
  • Task.Run:将任务放入线程池执行(并行),适用于 CPU 密集型操作。(注意:await 不会创建新线程,仅等待任务完成后恢复执行)

LINQ 的分类?延迟执行与立即执行的区别?

  • 分类:LINQ to Objects(内存集合)、LINQ to SQL(数据库)、LINQ to XML 等。
  • 延迟执行:WhereSelect 等,直到枚举时才执行(如 ToList()Count() 触发)。
  • 立即执行:ToList()Sum()First() 等,立即计算结果。
相关推荐
杨逢昌工厂6S管理19 小时前
28- 杨逢昌:制造企业仓储6S反复混乱解决方案——四维定置标准化管控体系,让物料混放、通道堵塞等重复性乱象减少90%
大数据·经验分享·笔记·职场和发展·制造·学习方法
想吃火锅100520 小时前
【leetcode】56.合并区间js
算法·leetcode·职场和发展
用户8524950718420 小时前
从零搭建自定义 MCP Server:打造你的专属工具服务
面试
黄敬峰20 小时前
远程 MCP 实战:LangChain 同时接入高德地图、Chrome、文件系统,让 AI Agent 操控真实世界
面试
KaifuZeng20 小时前
通信与接口协议面试问题汇总三
单片机·嵌入式硬件·面试·通信与接口协议
胡萝卜术20 小时前
从聊天模型到本地执行助手:Remote MCP 多工具 Agent 实战
面试·架构·github
凌波粒21 小时前
LeetCode--47.全排列 II(回溯算法)
算法·leetcode·职场和发展
天真小巫1 天前
2026.7.10总结
职场和发展
ShineWinsu1 天前
对于Linux:基于UDP实现简单聊天室功能
linux·c++·面试·udp·笔试·进程·简单聊天室
程序员小远1 天前
性能测试之性能调优
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·性能测试