NET EF 面试题 + IQ测试题(含详细答案解析)_第1页
NET EF 面试题 + IQ测试题(含详细答案解析)_第2页
NET EF 面试题 + IQ测试题(含详细答案解析)_第3页
NET EF 面试题 + IQ测试题(含详细答案解析)_第4页
NET EF 面试题 + IQ测试题(含详细答案解析)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

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

文档简介

.NETEF面试题+IQ测试题(含详细答案解析)第一部分:.NETEF面试题及详细答案本部分面试题覆盖EF基础、核心原理、查询优化、事务、迁移、性能问题及实战坑点,适配初中高级.NET开发岗位,答案均为职场实战总结,通俗易懂。1、简单介绍EntityFramework(EF)以及EF、EFCore的核心区别?答案:EntityFramework是.NET平台的ORM(对象关系映射)框架,核心作用是通过面向对象的方式操作数据库,无需手写大量SQL语句,实现实体类与数据库表的映射,简化数据层开发。EF分为传统EF6和EFCore两个版本,核心区别如下:1.平台适配:EF6仅支持.NETFramework;EFCore跨平台,支持.NETCore、.NET5+、Mac、Linux、Windows。2.性能差异:EFCore轻量化、模块化,启动更快、内存占用更低,查询性能优于EF6。3.功能完整性:EF6功能更全面,支持复杂的继承映射、多对多隐式映射、自增列复杂配置;EFCore后续版本逐步补齐功能,但部分高级特性仍不及EF6。4.扩展性:EFCore架构全新重构,支持插件式驱动,可适配MySQL、PostgreSQL、SQLite等多种数据库;EF6主要适配SQLServer,第三方驱动支持有限。2、EFCore三种开发模式(DatabaseFirst、ModelFirst、CodeFirst)的适用场景?答案:1.DatabaseFirst(数据库优先)先有数据库表,通过EF工具反向生成实体类和DbContext。适用于老旧项目改造、数据库已经设计完成、开发人员无需维护实体映射关系的场景。2.ModelFirst(模型优先)通过可视化模型设计器设计实体关系,再生成数据库。目前基本淘汰,仅老旧EF6项目使用,灵活性差,不推荐新项目使用。3.CodeFirst(代码优先)新项目主流模式,手动编写实体类和DbContext,通过迁移命令自动创建、更新数据库。适用于全新项目开发,可通过代码统一管理数据库结构,版本控制友好,适配敏捷开发。3、EFCore中DbContext的核心作用是什么?生命周期如何把控?答案:DbContext是EFCore的核心上下文类,相当于数据库会话,核心作用包含三点:1.作为实体与数据库的桥梁,管理实体的映射关系;2.跟踪实体的增删改查状态(变更跟踪);3.封装数据库连接、事务、查询执行、数据提交等操作。生命周期规范:Web项目中默认采用单次请求单实例,请求创建、请求结束销毁,是最优方案。禁止全局单例DbContext,会导致变更跟踪混乱、数据脏读、内存泄漏、并发异常;控制台、winform项目中建议按需创建using包裹,用完即释放。4、什么是EF变更跟踪?AsNoTracking的使用场景和优缺点?答案:EFCore默认会对查询出来的实体进行变更跟踪,记录实体的原始值和当前值,调用SaveChanges时,自动对比变更,生成对应的增删改SQL。AsNoTracking:关闭实体变更跟踪功能。使用场景:仅做数据查询展示,不需要修改、更新数据的场景,比如列表查询、详情页数据展示。优点:减少内存占用、提升查询性能,无需维护实体跟踪快照,大批量查询效果提升明显。缺点:查询出的实体修改后,调用SaveChanges不会自动更新数据库,需要手动附加实体并标记状态。5、EFCore延迟加载、贪婪加载、显式加载的区别和实战用法?答案:1.贪婪加载(Include)查询时通过Include、ThenInclude主动关联查询导航属性数据,一次性查询出主表和关联表数据,仅执行一次SQL。适合明确需要关联数据的场景,避免重复查库,是项目最常用的方式。示例:_dbContext.Users.Include(u=>u.Orders).ToList();2.延迟加载(LazyLoading)查询主表数据时,不加载导航属性,访问导航属性时才会自动发起二次查库。需要安装Microsoft.EntityFrameworkCore.Proxies并开启配置。弊端:容易产生N+1查询问题,大批量数据查询性能极差,项目中禁止滥用。3.显式加载查询完主数据后,按需手动调用Load方法加载关联数据,灵活性高,适合动态按需加载关联数据的场景。示例:_dbContext.Entry(user).Collection(u=>u.Orders).Load();6、解释EFN+1查询问题,以及解决方案?答案:问题成因:开启延迟加载后,查询N条主表数据,会执行1次主表查询,再针对每条数据执行1次关联表查询,总共N+1次SQL请求,数据量越大性能损耗越严重。解决方案:1.优先使用贪婪加载Include/ThenInclude,一次性联表查询;2.关闭全局延迟加载,杜绝隐性查库;3.投影查询,只查询需要的字段和关联数据,减少不必要加载。7、EFCore事务的使用方式,以及隐式事务和显式事务区别?答案:1.隐式事务:EFCore默认开启,单次SaveChanges操作会自动包裹事务,要么全部成功、要么全部回滚。仅适用于单次批量保存操作,无法满足多步骤、多SaveChanges的事务需求。2.显式事务:手动开启事务,适用于多个数据库操作、多次SaveChanges需要保证原子性的场景。核心用法:通过dbContext.Database.BeginTransaction开启,执行完操作后Commit,异常则Rollback。高级用法:支持跨上下文事务、数据库分布式事务(适配特定数据库)。8、EFCore迁移(Migration)的原理,常用命令及注意事项?答案:迁移原理:EFCore通过对比实体代码和数据库快照文件,识别结构变更(新增字段、修改字段类型、新增表、索引变更),自动生成增量SQL脚本,实现数据库版本迭代。常用核心命令:1.Add-Migration名称:生成迁移文件,记录结构变更;2.Update-Database:执行迁移脚本,更新数据库;3.Remove-Migration:删除未提交的最新迁移文件;4.Script-Migration:生成可执行的SQL脚本,用于生产环境部署。注意事项:1.生产环境禁止直接执行Update-Database,需导出SQL脚本审核后执行;2.禁止手动修改迁移文件,会导致快照不一致,引发迁移异常;3.字段删除、类型修改属于高危迁移,生产环境需提前备份数据。9、EFCore性能优化的常用手段?答案:1.查询优化:大批量查询使用AsNoTracking,关闭跟踪;避免延迟加载,使用Include联表;使用投影查询Select只取所需字段,避免查询全字段;2.分页优化:必须使用Skip+Take分页,禁止查询全表数据再内存分页;3.批量操作:使用BatchUpdate、BatchDelete批量修改删除,避免循环SaveChanges;4.索引优化:针对高频查询字段、联表字段、排序分组字段建立数据库索引;5.缓存优化:高频查询、数据变动少的场景,启用二级缓存,减少查库次数;6.避免N+1查询、避免循环内查库、避免不必要的联表查询。10、EFCore中SaveChanges和SaveChangesAsync的核心区别?项目中如何选择?答案:1.SaveChanges:同步方法,执行期间会阻塞当前线程,线程处于等待状态,无法处理其他请求,高并发场景容易造成线程阻塞、接口超时。2.SaveChangesAsync:异步方法,IO操作期间释放线程,线程可处理其他请求,提升服务器并发处理能力,无阻塞。选型规范:Web、API项目统一使用异步版本;控制台、桌面程序、简单脚本可使用同步方法。禁止异步方法中混用同步SaveChanges,会造成线程死锁。第二部分:IQ测试题及详细答案解析(标准版)本套IQ测试题为通用逻辑思维测试题,涵盖数字推理、图形规律、逻辑判断、语言逻辑,共10题,附带详细解析,适合基础智力逻辑测评。一、数字推理题1、找出数列规律,填写空缺数字:2,6,12,20,(),42答案:30解析:数列差值依次为:4、6、8、10、12,为连续偶数递增;2+4=6,6+6=12,12+8=20,20+10=30,30+12=42,符合整体规律。2、数列:1,1,2,6,24,()答案:120解析:后项与前项倍数依次为:1、2、3、4、5;1×1=1,1×2=2,2×3=6,6×4=24,24×5=120。3、已知:1=5,2=10,3=15,4=20,那么5=?答案:1解析:题干第一句直接定义1=5,反向推导可得5=1,无需按照等差数列逻辑计算,属于逆向逻辑思维题。二、逻辑判断题4、所有的玫瑰都是花,有的花会结果,因此有的玫瑰会结果。判断该推论是否正确?答案:错误解析:逻辑漏洞:“有的花结果”是部分花的属性,不能推导至所有花的子类。玫瑰属于花,但不包含在“会结果的部分花”范围内,推论不成立。5、甲比乙大,乙比丙小,丙比甲大,请问三人中年龄最小的是谁?答案:乙解析:梳理关系:甲>乙,丙>乙,丙>甲;最终排序:丙>甲>乙,最小为乙。三、图形逻辑规律题6、一组图形:圆形、方形、圆形、方形、(),找规律填空答案:圆形解析:基础循环规律,以“圆形、方形”为一组循环交替,第五位为圆形。7、图形笔画规律:依次为1笔、2笔、3笔、4笔、()答案:5笔图形解析:等差数列递增规律,笔画数依次+1,下一项为5笔。四、语言逻辑与思维题8、“勇敢”相对于“懦弱”,等同于“勤奋”相对于?答案:懒惰解析:题干为反义词对应关系,勇敢与懦弱互为反义,勤奋与懒惰互为反义。9、一个房间内有10盏灯,关掉3盏,房间里还有几盏灯?答案:10盏解析:关灯仅改变灯光状态,不会减少灯的数量,房间内灯具总数不变。10、小张买了一支笔和

温馨提示

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

评论

0/150

提交评论