版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.NET面试题及详细答案(实战完整版)一、C#基础语法与核心特性1、值类型和引用类型的区别?日常开发常见类型有哪些?参考答案:两者核心区别是内存存储位置、赋值方式、生命周期不同:1.值类型:数据直接存储在栈内存中,赋值是完整拷贝一份数据,两个变量相互独立,修改一个不会影响另一个。栈内存自动释放,无需手动回收,性能更高。常见值类型:int、double、bool、char、struct、枚举、decimal。2.引用类型:数据存储在堆内存中,变量仅存储堆内存的地址指针。赋值时只拷贝地址,多个变量指向同一份堆内存数据,修改任意一个变量的值,所有关联变量都会变化。需要GC垃圾回收机制回收内存。常见引用类型:string、class、数组、集合(List、Dictionary)、自定义类、委托、事件。实战补充:string是特殊的引用类型,具备不可变性,每次修改字符串都会生成新对象,不会修改原数据。2、const和readonly的区别?参考答案:1.赋值时机不同:const必须在声明时直接赋值,编译阶段就确定值;readonly可以声明时赋值,也可以在类的构造函数中赋值,运行阶段确定值。2.作用域不同:const默认是静态的,不能用static修饰,属于类级别;readonly可以是实例级别,也可以手动加static变为静态。3.使用场景不同:const适合固定不变的常量,比如接口地址、固定配置;readonly适合对象初始化后固定、运行时确定的值,比如根据构造参数赋值的唯一标识。4.跨程序集差异:跨项目引用const常量时,编译后会直接嵌入代码,原项目修改常量值后,引用项目需要重新编译才会生效;readonly是运行时读取,无需重编译。3、string、StringBuilder、StringBuffer的区别及使用场景?参考答案:1.string:具备不可变性,每次拼接、修改都会新建字符串对象,频繁操作会产生大量内存垃圾,性能差。适合少量、固定的字符串定义和读取。2.StringBuilder:可变字符串,维护一个字符缓冲区,拼接、修改不会新建对象,仅修改缓冲区内容,频繁操作性能极高。适合循环拼接、大量字符串组装场景。3.StringBuffer:.NET中基本不用,是Java专属类,线程安全但性能略低于StringBuilder;.NET如需线程安全的字符串操作,可自行加锁处理。实战总结:单次拼接用string,循环/批量拼接必用StringBuilder。4、装箱和拆箱是什么?有什么性能问题?参考答案:1.装箱:将值类型转换为object引用类型,本质是在堆内存中开辟空间,拷贝值类型数据,生成新引用对象。示例:objectobj=10;2.拆箱:将object引用类型转回值类型,需要校验类型合法性,再从堆内存拷贝数据到栈内存。示例:intnum=(int)obj;3.性能问题:装箱拆箱会产生堆内存分配、数据拷贝、类型校验,频繁操作会造成内存碎片、GC压力增大,程序卡顿。优化方案:尽量使用泛型、强类型集合,避免值类型随意转object。二、面向对象与高级特性1、面向对象三大特性,分别举例说明?参考答案:1.封装:隐藏类的内部实现细节,仅对外暴露公开的访问接口,保证数据安全、降低耦合。常用private/protected修饰字段,通过public属性读写数据。举例:用户类隐藏密码字段,仅提供加密赋值接口,禁止直接读取明文密码。2.继承:子类复用父类的属性和方法,实现代码复用,支持单一继承。举例:Student学生类、Teacher教师类,继承Person人类,复用姓名、年龄、性别属性。3.多态:同一方法在不同子类有不同实现,分为重载(编译多态)和重写(运行多态)。核心是父类引用指向子类对象。举例:父类Animal有Speak方法,子类Dog、Cat分别重写Speak,调用时执行各自的叫声逻辑。2、override和new的区别?参考答案:1.override(重写):必须配合父类virtual方法使用,重写后会覆盖父类原有逻辑,运行时根据实际对象类型执行对应方法,是真正的多态。2.new(隐藏):无需父类virtual修饰,只是隐藏父类方法,不会实现多态。父类引用指向子类对象时,执行的是父类方法,而非子类方法。开发规范:需要多态扩展逻辑用override,尽量不用new,避免业务逻辑混乱。3、接口和抽象类的区别?使用场景?参考答案:1.继承限制:抽象类类只能单继承;接口可以多实现。2.成员定义:抽象类可以有字段、构造函数、普通方法、抽象方法;接口只能有方法、属性、事件,不能有字段和构造函数(C#8.0后支持默认方法实现)。3.访问修饰符:抽象类成员可自定义权限;接口成员默认全部public,不能修改。4.使用场景:-抽象类:用于提取多个子类的公共代码,复用基础逻辑,控制类的核心模板。-接口:用于定义行为规范,统一功能标准,实现解耦和多态扩展。4、泛型的作用和优势?参考答案:泛型是定义类、方法时不指定具体类型,使用时再确定类型的特性,核心优势三点:1.避免装箱拆箱:全程强类型,无类型转换损耗,提升程序性能。2.代码复用:一套逻辑适配多种数据类型,无需为不同类型重复写代码。3.类型安全:编译阶段校验类型错误,避免运行时报错,减少BUG。日常常用:List<T>、Dictionary<TKey,TValue>、自定义泛型工具方法。三、.NET框架与核心机制1、.NETFramework和.NETCore/.NET5+的核心区别?参考答案:1.跨平台性:.NETFramework仅支持Windows系统;.NETCore及后续.NET5/6/7/8跨平台,支持Windows、Linux、Mac。2.部署方式:Framework依赖系统全局安装的框架;.NETCore支持独立部署,无需系统预装框架,打包即可运行。3.性能与轻量化:Framework臃肿、冗余组件多;新版.NET精简重构,启动更快、内存占用更低、并发性能更强。4.开源生态:Framework闭源;新版.NET完全开源,社区迭代活跃。5.版本迭代:Framework已停止大版本更新;.NET持续迭代,长期维护。2、GC垃圾回收机制原理?GC回收哪些内存?参考答案:1.回收范围:GC只负责回收堆内存的无用对象,栈内存由系统自动释放,不受GC管理。2.分代回收机制:GC将对象分为0、1、2三代,针对性回收,提升效率:-0代:新建的短期对象,回收频率最高,速度最快;-1代:0代回收后存活的对象,作为缓冲层;-2代:长期存活的全局对象,回收频率最低,耗时最长。3.回收流程:标记无用对象→清除对象内存→内存压缩整理,减少内存碎片。实战优化:避免大对象频繁创建、及时释放非托管资源(文件、数据库连接、网络流)、using语句自动释放资源。3、using语句的作用和原理?参考答案:1.作用:自动释放实现了IDisposable接口的非托管资源,无需手动写Close、Dispose方法,避免资源泄露。2.原理:编译后会自动生成try-finally代码块,在finally中强制执行Dispose方法,无论代码正常执行还是异常报错,资源都会被释放。3.常用场景:数据库连接、文件读写、Redis连接、网络请求流等。4、依赖注入(DI)的原理和优势?.NET内置DI生命周期?参考答案:1.原理:将对象的创建、管理、依赖关系交给容器统一处理,而非类内部手动new对象,实现组件解耦。2.核心优势:降低代码耦合度、方便单元测试、统一管理对象生命周期、便于替换扩展组件。3..NET内置DI三种生命周期:-Transient(瞬时):每次请求都新建对象,轻量工具类常用;-Scoped(作用域):同一个请求周期内共用一个对象,不同请求新建对象,业务服务默认常用;-Singleton(单例):程序启动后全局唯一,全程只创建一次,配置类、全局工具类常用。四、ASP.NETCore核心面试题1、ASP.NETCore中间件的作用和执行顺序?参考答案:中间件是处理HTTP请求/响应的管道组件,每个请求都会按顺序经过多个中间件,完成路由、鉴权、日志、异常处理、静态资源加载等操作。1.执行顺序:注册顺序即为执行顺序,先进先执行,后出先响应(洋葱模型)。请求时从上到下执行,响应时从下到上回溯。2.常用内置中间件:静态资源中间件、路由中间件、跨域中间件、授权中间件、异常处理中间件。开发注意:跨域中间件必须放在路由、授权之前,否则跨域失效。2、过滤器有哪些?各自作用和执行顺序?参考答案:ASP.NETCore过滤器用于拦截控制器、方法的执行,统一处理通用逻辑,无需重复编码,分为5种:1.授权过滤器(IAuthorizationFilter):最先执行,校验用户权限、登录状态,无权限直接拦截请求;2.资源过滤器(IResourceFilter):授权后执行,可缓存请求、拦截重复请求;3.模型验证过滤器(IModelValidationFilter):自动校验入参合法性,参数错误直接返回提示;4.动作过滤器(IActionFilter):方法执行前后拦截,记录日志、修改入参、统一处理返回值;5.异常过滤器(IExceptionFilter):全局捕获程序异常,统一返回错误格式、记录异常日志。完整执行顺序:授权→资源→模型验证→动作执行→异常捕获。3、Get和Post请求的区别?参考答案:1.参数传递:Get参数拼接在URL地址中;Post参数放在请求体中。2.数据大小:Get受URL长度限制,传输数据量小;Post无明确限制,可传大量数据、文件。3.缓存特性:Get请求会被浏览器缓存,重复请求会读取缓存;Post默认不缓存。4.安全性:Get参数暴露在地址栏,安全性低;Post参数隐藏,相对安全。5.使用场景:查询数据用Get,新增、修改、提交数据用Post。五、数据库与EFCore1、EFCore延迟加载和立即加载的区别?如何开启?参考答案:1.立即加载(EagerLoading):查询主数据时,一次性把关联的外键数据全部查询出来,通过Include、ThenInclude实现。适合需要同时使用主表和关联表数据的场景,避免多次查库。2.延迟加载(LazyLoading):默认不查询关联数据,访问关联属性时才单独执行SQL查询。优点是节省资源,缺点是容易产生N+1查询问题,造成数据库压力过大。3.开启方式:安装Microsoft.EntityFrameworkCore.Proxies包,配置UseLazyLoadingProxies()即可开启全局延迟加载。2、数据库索引的作用?什么情况会失效?参考答案:1.索引作用:提升查询速度,减少数据库全表扫描;缺点是新增、修改、删除数据时需要维护索引,会降低写入性能。2.索引常见失效场景:-使用like%xx模糊查询(前置通配符);-索引列参与运算、函数调用;-字段类型隐式转换;-使用or连接无索引字段;-数据量过小、数据库判断全表扫描更快时。六、多线程与并发1、线程和进程的区别?参考答案:1.进程:系统资源分配的最小单位,每个进程独立占用内存、CPU资源,进程之间完全隔离,互不干扰,创建销毁开销大。2.线程:进程内的执行单元,一个进程包含多个线程,线程共享进程内存资源,切换开销小、效率高。线程是CPU调度的最小单位。通俗理解:进程是工厂,线程是工厂里的工人,工人共享工厂资源,独立干活。2、Task和Thread的区别?参考答案:1.底层机制:Thread是操作系统级线程,开销大,无线程池管理;Task是基于线程池封装的任务,复用线程资源,开销小。2.功能支持:Task支持异步等待、取消回调、异常捕获、多任务并行;Thread功能简单,需要手动封装复杂逻辑。3.开发推荐:现代.NET开发全部使用Task/async/await,不再直接使用Thread。3、async/await原理?是多线程吗?参考答案:1.核心原理:async/await是语法糖,基于状态机实现。遇到await时,会释放当前线程,去执行其他任务,等待异步操作完成后,再恢复线程继续执行后续逻辑。2.不是多线程:异步的核心是线程复用,不是开启多线程。IO异步操作(数据库、网络请求)全程不占用线程,极大提升并发能力。3.优势:解决同步阻塞等待问题,提升系统吞吐量,适合Web接口、IO密集型场景。七、实战场景与性能优化1、Web接口常见性能优化方案?参考答案:1.数据库优化:合理加索引、避免N+1查询、分页查询、禁止全表查询、读写分离;2.缓存优化:使用Redis缓存热点数据、接口缓存、本地缓存,减少查库次数;3.代码优化:使用异步编程、避免装箱
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年度护理文书书写质量考核实施方案
- 测试计划制定试题及答案
- 初中信息科技七年级全一册 第21课 移动互联新发展 教学设计
- 初中信息科技八年级教学设计:物联网识别技术原理与应用实践
- 仁爱科普版八年级英语Unit 1 My Dream Job单元复习与自我评价教学设计
- 小学五年级美术教学设计《有生命的金属》金属压花工艺与质感表达研究
- 四年级综合实践活动《跟着节气去探究》单元整体教学设计
- 六年级综合实践活动教学设计《美味烘焙-瑞士卷》
- 高二英语教学设计:应用文与读后续写融合备考策略研究
- 小学六年级心理健康《学习方法我最多》教学设计
- 妇女儿童权益保护法律讲座
- 美育工作职责规章制度
- 静疗小组管理体系及工作制度
- 2023年12月英语四级真题及答案-第3套
- DL-T5499-2015换流站二次系统设计技术规程
- 《生活中的度量衡》课件
- 【川教版】《生命 生态 安全》三年级上册 第3课《蓝色的地球》课件
- 人教版四年级上册数学应用题100题及答案
- 企业刑事合规培训课件
- 体格检查实训课教案
- 鄂尔多斯市发展保障性租赁住房实施方案
评论
0/150
提交评论