NET 后端面试真题大全(无模板、企业实战版)_第1页
NET 后端面试真题大全(无模板、企业实战版)_第2页
NET 后端面试真题大全(无模板、企业实战版)_第3页
NET 后端面试真题大全(无模板、企业实战版)_第4页
NET 后端面试真题大全(无模板、企业实战版)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.NET后端面试真题大全(无模板、企业实战版)整套面试题适配初级、中级.NET开发岗位,题目均为一线企业高频提问,侧重实战落地、原理理解和问题排查,无空泛理论、无模板化话术,配套简洁标准答案,适合自测、笔试、面试复习。一、C#基础语法核心面试题1、值类型和引用类型的区别?日常开发常用类型分别有哪些?值类型存储在栈内存,变量直接存储数据本身,赋值是深度拷贝,相互独立互不影响;引用类型存储在堆内存,栈中仅存储内存地址,赋值是地址拷贝,多个变量指向同一块堆数据,修改会相互影响。常用值类型:int、double、bool、struct、枚举、decimal常用引用类型:string、class、数组、集合(List、Dictionary)、自定义实体类2、string和StringBuilder的区别?什么时候必须用StringBuilder?string是不可变字符串,每次拼接、修改都会生成新的字符串对象,频繁操作会产生大量内存垃圾,性能较差;StringBuilder是可变字符串,直接在原有内存中修改数据,不会频繁创建新对象,性能优异。场景:循环拼接字符串、大量文本拼接、动态组装SQL、日志拼接等高频修改场景必须使用StringBuilder。单次简单拼接直接用string即可。3、const和readonly的区别?1、const是编译时常量,必须在声明时赋值,值不可修改,属于静态常量,全局共享;2、readonly是运行时常量,可以在声明或构造函数中赋值,实例专属,支持不同实例不同值;3、const只能修饰值类型和字符串,readonly可以修饰引用类型。4、ref和out关键字的区别?ref:参数传入前必须初始化,方法内外双向传值,可传入已有值、可修改值;out:参数传入前无需初始化,方法内部必须赋值,仅用于方法向外输出结果;日常开发中out多用于返回多个结果,ref多用于修改原有参数值。5、结构体(struct)和类(class)的核心区别?1、struct是值类型,存储在栈;class是引用类型,存储在堆;2、struct无默认无参构造函数,不支持继承;class支持继承、多态;3、struct适合轻量级、小型数据存储;class用于复杂业务对象封装。二、C#面向对象与高级特性1、面向对象三大特性,分别怎么理解?项目中如何使用?封装:隐藏内部实现,对外暴露公开方法和属性,隔离代码,降低耦合,比如实体类私有字段、公开属性;继承:复用父类代码,减少重复开发,比如封装通用BaseService、BaseController;多态:父类引用指向子类对象,重写方法实现不同逻辑,适配不同业务场景,比如不同支付方式重写支付方法。2、override和new的区别?override重写:重写父类虚方法,实现多态,运行时根据对象实际类型执行对应方法;new隐藏:覆盖父类方法,无多态效果,父类引用调用父类方法,子类引用调用子类方法。3、虚方法、抽象方法、接口方法的区别?虚方法(virtual):有默认实现,子类可重写也可直接使用;抽象方法(abstract):无实现,必须在抽象类中,子类必须重写;接口方法:无实现,所有实现类必须重写,用于定义统一行为规范,解耦业务。4、泛型的作用是什么?为什么要用泛型?泛型可以实现代码复用、类型安全、避免装箱拆箱。不用泛型需要用object接收参数,存在类型转换报错风险、性能损耗;泛型在编译时确定类型,兼顾通用性和安全性,项目中常用泛型集合、泛型仓储、通用返回结果类。5、装箱和拆箱是什么?如何避免?装箱:值类型转换为引用类型(object),栈数据拷贝到堆;拆箱:引用类型转回值类型,堆数据拷贝到栈;频繁装箱拆箱会造成性能损耗,可通过泛型、强类型参数、避免object传参来规避。三、.NET框架与核心机制1、.NETFramework和.NETCore/.NET5+的核心区别?1、Framework仅支持Windows平台,封闭框架;.NETCore跨平台,支持Windows、Linux、Mac;2、Framework集成式框架,依赖系统组件;.NETCore模块化、轻量、可独立部署;3、.NET5+是.NETCore统一版本,摒弃Framework,是目前主流开发版本。2、ASP.NETCore中间件的作用和执行顺序?中间件是管道模型,用于处理HTTP请求和响应,每个中间件各司其职,可拦截、处理、转发请求,比如路由、跨域、认证、日志、异常处理都是中间件实现。执行顺序:按照Program.cs注册顺序自上而下执行,响应时自下而上回传,注册顺序直接影响功能生效结果。3、依赖注入(DI)的原理和三种生命周期?依赖注入是将对象的创建和管理交给容器,不用手动new,实现解耦、方便单元测试、统一资源管理。三种生命周期:1、Transient(瞬时):每次请求都创建新对象,最轻量,常用工具类;2、Scoped(作用域):同一个HTTP请求共用一个对象,请求结束销毁,常用业务Service;3、Singleton(单例):全局唯一对象,程序启动创建,关闭销毁,常用配置类、缓存工具。4、简述MVC和MVVM的区别,各自适用场景?MVC:模型、视图、控制器,控制器接收请求、调度逻辑、返回视图,前后端未完全分离,适用于传统Web项目、后台管理系统;MVVM:模型、视图、视图模型,双向绑定,视图和逻辑解耦,适用于WPF、WinForm、前端框架、移动端项目。5、ASP.NETCore过滤器有哪些?作用分别是什么?1、授权过滤器:身份权限校验,优先执行;2、资源过滤器:权限后、方法前执行,可拦截请求;3、操作过滤器:控制器方法执行前后拦截,用于日志、参数校验;4、异常过滤器:全局捕获异常,统一返回错误信息、记录日志;5、结果过滤器:接口结果返回前处理,统一封装返回格式。四、EFCore与数据库面试题1、EFCore延迟加载、贪婪加载、显式加载的区别?延迟加载:查询主表时不查关联表,访问关联属性时才查询数据库,需开启配置,容易产生N+1查询问题;贪婪加载:使用Include、ThenInclude一次性查询主表和关联表,单次查询完成,性能最优,日常首选;显式加载:查询主表后,后续手动调用Load方法加载关联数据。2、什么是N+1查询问题?如何解决?遍历查询出的主表数据时,每条数据都会单独查询一次关联表,造成1次查主表+N次查关联表的多余请求,数据库压力大。解决:使用Include贪婪加载、关闭不必要的延迟加载、批量查询替代循环查询。3、EFCore中AsNoTracking的作用?什么时候用?AsNoTracking关闭实体追踪,EF不会监控实体状态变化,减少内存占用、提升查询性能。适用场景:纯查询、列表展示、无需修改数据的场景;新增、修改、删除数据时不能使用。4、数据库索引的作用?什么情况会失效?索引可以大幅提升查询速度,降低数据库IO开销。索引失效场景:like%前缀模糊查询、索引列参与运算、使用函数、or连接无索引字段、隐式类型转换、数据量过小。五、多线程、异步与性能优化1、async/await的原理?和同步方法的区别?async/await是基于任务的异步模型,不会阻塞主线程,等待IO操作时线程释放,去处理其他请求,提升服务器并发能力。同步方法会阻塞线程,等待操作完成后才能继续,高并发场景下线程容易耗尽,导致接口卡顿、超时。2、Task和Thread的区别?Thread是操作系统级线程,开销大、管控复杂,适合长时间后台任务;Task是线程池封装的任务,轻量、复用线程、支持取消、等待、回调,是.NET主流异步写法。3、死锁产生的条件?如何避免死锁?四大条件:互斥、请求保持、不可剥夺、循环等待;避免方式:统一锁顺序、缩短锁时间、使用超时锁、减少嵌套锁。4、日常项目中.NET接口性能优化手段有哪些?1、数据库优化:加索引、避免N+1、分页查询、AsNoTracking、SQL优化;2、缓存优化:使用Redis、内存缓存缓存热点数据,减少数据库查询;3、异步改造:IO密集型接口全部使用async/await,提升并发;4、代码优化:避免频繁装箱拆箱、减少循环内new对象、使用StringBuilder;5、请求优化:参数校验、限流、去重、关闭不必要的中间件。六、实战场景与故障排查面试题1、接口偶尔超时,你会如何排查?1、查看日志:定位超时接口、超时时间段、是否并发高峰;2、数据库排查:查看慢SQL、索引失效、锁等待、连接数耗尽;3、代码排查:是否有同步阻塞、死锁、循环查询、资源未释放;4、服务器排查:CPU、内存、网络、线程池资源占用情况;5、第三方接口:排查调用外部接口耗时、超时问题。2、Redis缓存穿透、击穿、雪崩分别是什么?如何解决?穿透:查询不存在数据,直接打穿到数据库;解决:布隆过滤器、空值缓存、接口限流;击穿:热点key过期,大量请求访问数据库;解决:互斥锁、热点key永不过期、定时续期;雪崩:大量key同时过期/Redis宕机,请求全部打向数据库;解决:过期时间加随机值、Redis集群、降级熔断。3、如何保证接口幂等性?幂等性:多次请求结果一致,不会产生重复数据。实现方式:唯一订单号、Token令牌、数据库唯一索引、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论