版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.NET面试题及答案(真实职场版)一、C#基础语法面试题1、值类型和引用类型的区别?日常开发常见类型有哪些?参考答案:值类型存储在栈内存中,变量直接存储数据本身,赋值是完整拷贝,相互之间不会影响;引用类型存储在堆内存中,变量只存储内存地址,多个变量指向同一个地址,修改一个会影响其他变量。常见值类型:int、double、bool、char、struct、枚举常见引用类型:string、class、数组、集合(List、Dictionary)、委托、接口补充:string是特殊的引用类型,具备不可变性,重新赋值会生成新对象,不会修改原内存数据。2、const和readonly的区别?参考答案:1、赋值时机:const是编译时常量,必须在声明时赋值;readonly是运行时常量,可以在声明或构造函数中赋值。2、作用域:const默认是静态的,不能用static修饰;readonly可以是实例或静态。3、使用场景:固定不变的全局常量用const;需要在构造函数动态赋值、只读的字段用readonly。3、ref和out关键字的区别?参考答案:两者都是按地址传参,直接修改实参数据。区别:ref参数必须在调用方法前初始化赋值;out参数无需提前赋值,但方法内部必须给out参数赋值后才能返回。日常开发中,out多用于方法返回多个结果的场景。4、String和StringBuilder的区别?什么时候用哪个?参考答案:string具有不可变性,每次拼接、修改字符串都会生成新对象,频繁操作会产生大量内存垃圾,性能差。StringBuilder是可变字符串,直接修改内存中的字符数据,不会频繁创建新对象,拼接性能极高。使用场景:少量字符串操作、固定文本用string;循环拼接、大量字符串处理必须用StringBuilder。二、C#高级特性面试题1、面向对象三大特性,分别解释并举例参考答案:封装:隐藏类的内部细节,只暴露公开的属性和方法,保证数据安全。比如将字段私有化,通过public属性读写数据。继承:子类复用父类的代码,避免重复编写,实现代码复用。比如Student类继承Person类,直接拥有姓名、年龄等属性。多态:同一方法在不同子类有不同实现,分为重写和重载。父类引用指向子类对象,调用方法时执行子类的逻辑,常用于业务逻辑扩展。2、重载和重写的区别?参考答案:重载(Overload):同一类中,方法名相同、参数列表不同(参数个数、类型、顺序),和返回值无关,编译时确定执行逻辑。重写(Override):子类对父类的虚方法(virtual)重新实现,方法名、参数、返回值完全一致,运行时确定执行逻辑,是多态的核心。3、抽象类和接口的区别?开发中如何选择?参考答案:1、成员区别:抽象类可以有字段、构造函数、普通方法、虚方法、抽象方法;接口只能有方法、属性、事件,不能有字段和构造函数。2、继承限制:类只能单继承抽象类,但可以多实现接口。3、访问修饰符:抽象类成员可以用public、protected等;接口成员默认公开,不能修改修饰符。选择原则:需要统一子类公共属性、通用代码、单继承场景用抽象类;需要定义行为规范、多功能扩展、解耦场景用接口。4、委托和事件的关系与区别?参考答案:委托是方法的容器,是一种数据类型,可以存储、指向多个方法;事件是委托的封装,是一种特殊的委托实例。核心区别:委托可以在外部直接赋值、调用;事件只能在类内部触发,外部只能订阅和取消订阅,更安全,能避免外部随意篡改触发逻辑。日常多用于消息通知、异步回调、业务解耦场景。5、泛型的作用是什么?参考答案:泛型可以实现代码复用、类型安全、避免装箱拆箱。不用为不同数据类型重复写相同逻辑代码,编译时会校验数据类型,杜绝类型转换报错,同时值类型操作无需装箱拆箱,提升性能。常见于List、Dictionary等集合。三、.NET框架与Web核心面试题1、ASP.NETCore相比传统ASP.NETMVC有哪些优势?参考答案:1、跨平台:可部署在Windows、Linux、Mac系统,适配容器部署;2、轻量高性能:摒弃传统WebForm冗余机制,内置依赖注入、中间件,请求处理链路更简洁;3、模块化:功能按需引入,无需加载无用组件,部署包体积小;4、内置DI、日志、配置、跨域,开箱即用;5、支持统一管道机制,所有请求通过中间件处理,扩展性更强。2、ASP.NETCore中间件的作用和执行顺序?参考答案:中间件是处理HTTP请求和响应的组件,贯穿整个请求链路,可实现路由、授权、跨域、日志、异常拦截等功能。执行顺序按照代码注册顺序自上而下执行,响应时自下而上回溯,遵循“先注册后执行响应”的规则。开发中自定义中间件常用于全局日志记录、统一异常处理、请求参数校验。3、依赖注入(DI)的三种生命周期及区别?参考答案:1、Transient(瞬时):每次获取都会创建新实例,轻量、无状态服务常用;2、Scoped(作用域):同一个请求生命周期内只创建一个实例,不同请求重新创建,业务服务默认常用;3、Singleton(单例):程序启动后全局唯一实例,全程复用,适合配置类、工具类。注意:单例不能注入Scoped服务,会出现生命周期不匹配报错。4、MVC和RESTfulAPI的区别?参考答案:MVC主要用于页面渲染,返回View视图,兼顾页面展示和数据处理,适配传统网页项目;WebAPI专注数据交互,只返回JSON/XML数据,无视图层,适配前后端分离、移动端、第三方对接场景。ASP.NETCore中两者框架统一,只是用途和返回方式不同。四、EFCore数据库面试题1、EFCore三种使用方式及适用场景?参考答案:1、CodeFirst:代码优先,通过实体类生成数据库表,项目开发主流方式,适合新项目;2、DatabaseFirst:数据库优先,根据已有数据库反向生成实体,适合老旧项目改造;3、ModelFirst:模型优先,通过可视化模型设计生成代码和数据库,目前极少使用。2、EFCore延迟加载和立即加载的区别?怎么使用?参考答案:立即加载:查询主表时,一次性把关联表数据全部查询出来,使用Include、ThenInclude实现,适合确定需要关联数据的场景,避免多次查库。延迟加载:默认只查询主表数据,访问关联导航属性时才会二次查库,需要安装对应组件并开启配置。优点是按需加载,缺点是容易产生N+1查询问题,影响性能。3、什么是N+1查询问题?如何解决?参考答案:查询N条主数据后,遍历每条数据都会单独查询一次关联数据,总共执行N+1次SQL,数据库压力大、性能差。解决方式:使用Include预加载关联数据、关闭不必要的延迟加载、批量查询替代循环查询。五、多线程与异步面试题1、async/await的作用?和多线程的区别?参考答案:async/await是异步编程语法糖,核心是非阻塞等待,不占用线程资源,适合IO操作(接口请求、数据库、文件读写),提升程序吞吐量。区别:异步是为了节省线程资源、解决IO阻塞;多线程是为了并行执行任务、提升CPU运算效率,适合密集型计算任务。注意:async方法尽量避免写同步代码,容易造成线程阻塞。2、Task和Thread的区别?参考答案:Thread是操作系统级线程,开销大、控制繁琐,适合底层线程操作;Task是线程池封装的任务,更轻量,自带取消、回调、异常处理机制,是.NET主流异步任务方式,复用线程池线程,减少资源开销。3、线程安全问题怎么解决?参考答案:多线程同时操作共享变量会出现数据错乱,常用解决方案:1、lock锁:锁定共享代码块,保证同一时间只有一个线程执行;2、使用线程安全集合:ConcurrentList、ConcurrentDictionary;3、避免共享变量,尽量使用局部变量;4、使用Monitor、Mutex做高级锁控制。六、性能优化与实战问题1、.NET项目常用的性能优化方式?参考答案:1、数据库优化:加合适索引、避免select*、分页查询、杜绝N+1、优化慢SQL;2、代码优化:频繁字符串拼接用StringBuilder、减少装箱拆箱、using释放资源;3、缓存优化:用Redis、内存缓存缓存高频查询数据,减少数据库访问;4、异步优化:IO操作全部使用async/await,提升并发量;5、资源释放:文件、数据库连接、网络请求全部用using自动释放;6、避免全局大对象、减少内存泄漏。2、using关键字的作用?参考答案:using用于实现了IDisposable接口的对象,代码块执行结束后,自动调用Dispose方法释放非托管资源,比如数据库连接、文件流、网络连接,避免资源占用和内存泄漏,无需手动写释放代码。3、什么是内存泄漏?.NET中常见场景?参考答案:不再使用的对象无法被垃圾回收,一直占用内存,导致内存持续上涨、程序卡顿。常见场景:未释放文件/数据库资源、静态集合无限添加数据、事件未取消订阅、定时器未释放。七、面试高频实操问答1、前后端分离项目中,如何做全局异常处理?参考答案:在ASP.NETCore中通过自定义全局异常中间件,拦截所有接口异常,统一记录日志,封装统一的错误返回格式,区分业务异常和系统异常,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 栓剂工岗位技能认知考核试卷含答案
- 水表装修工基础管理考核试卷含答案
- 2026年数学应用数学优化试题及答案
- 移动通信机务员交接评优考核试卷含答案
- 2026年物联网工程专业工业物联网应用评估测试试卷及答案
- 2026年咨询行业战略管理试题及答案
- 通信网络电缆线务员个人技能知识考核试卷含答案
- 开学第一课立志报国扬帆起航主题班会
- 2026年黑龙江省龙睿资产经营有限公司人员招聘考试模拟试题及详细答案解析
- 2026年贵州省黔晟国有资产经营有限责任公司人员招聘笔试参考题库及详细答案解析
- 2026年新教材人教版九年级上册英语期中复习 Unit 1-4 语法填空 专项练习题(含答案解析)
- 新能源项目保险方案
- 2026东营广饶县大王镇专职人民调解员岗位招聘23人笔试模拟试题及答案解析
- 仪器分析(第四版)-仪器分析-绪论
- 2026年中国五矿招聘真题及答案
- 2026年水厂招聘考试题库(含答案)
- 道德与法治九年级上册最-全知识点(2026版)
- 埃博拉病毒病诊疗方案(2026年版)核心解读与临床实践指导
- NB∕T 11970-2026 电动汽车充电设施接入运营安全评价规范
- 2026 ESC-ERA 心血管疾病与慢性肾病管理指南解读
- 2026年广东省公需课《人工智能赋能高质量发展》试题及答案
评论
0/150
提交评论