ORM 技术基础实战试题(含详细答案解析)_第1页
ORM 技术基础实战试题(含详细答案解析)_第2页
ORM 技术基础实战试题(含详细答案解析)_第3页
ORM 技术基础实战试题(含详细答案解析)_第4页
ORM 技术基础实战试题(含详细答案解析)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

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

文档简介

ORM技术基础实战试题(含详细答案解析)适用场景:后端开发基础考核、实习生面试、课堂测试难度:基础+中等(偏实战,无纯理论空话)说明:试题适配主流PythonDjango/ORM、MyBatis、Hibernate通用ORM思想,不局限单一框架,所有答案通俗落地,贴合开发实际一、单项选择题(共10题,每题3分,共30分)1.以下关于ORM的核心定义,说法正确的是()A.专门优化数据库SQL执行速度的工具B.实现面向对象模型与数据库关系表映射的技术C.替代数据库的中间件D.只能用于MySQL数据库的开发框架2.使用ORM最核心的目的是()A.让代码运行速度更快B.避免手写SQL,用面向对象方式操作数据库C.减少服务器内存占用D.实现数据库自动备份3.ORM中实体类对应数据库中的()A.数据表B.数据行C.字段D.索引4.ORM中实体类的一个对象实例,对应数据库中的()A.整张数据表B.一条数据记录C.一个字段D.一个约束5.以下不属于ORM优势的是()A.代码面向对象,可读性、维护性更高B.屏蔽数据库差异,方便切换数据库C.所有场景性能都优于原生SQLD.降低新手操作数据库的出错概率6.ORM映射中,主键字段一般对应的核心作用是()A.美化数据表结构B.唯一标识单条数据,实现数据精准增删改查C.提升数据查询速度D.限制字段数据长度7.以下哪种情况,ORM不推荐优先使用()A.简单的单表增删改查B.复杂多表联查、海量数据统计、自定义复杂SQLC.常规业务数据新增、修改D.基础数据分页查询8.ORM懒加载的核心特点是()A.一次性加载所有关联数据B.访问关联属性时,才会执行SQL查询加载数据C.永久缓存所有查询数据D.提升新增数据的速度9.以下属于典型ORM框架的是()A.NginxB.DjangoORMC.RedisD.Tomcat10.关于ORM自动建表,说法正确的是()A.无需定义实体类,自动生成数据表B.根据实体类的字段、约束配置,自动映射生成数据表结构C.只能创建空表,无法设置字段类型D.自动建表后无法修改字段结构二、填空题(共5题,每题4分,共20分)1.ORM的英文全称是____________。2.ORM的核心映射关系:实体类对应数据表,类属性对应____________,对象实例对应____________。3.ORM操作数据库的核心流程:定义实体类→____________→调用对象方法操作数据。4.ORM中____________问题,是指循环关联查询导致重复执行大量SQL,严重影响性能。5.相较于原生SQL,ORM最大的优势是解耦SQL语句,实现____________编程风格操作数据库。三、简答题(共3题,每题10分,共30分)1.简单说明ORM的优缺点(各写出3点即可)。2.什么是ORM懒加载?有什么优缺点?实际开发中如何规避懒加载问题?3.说明ORM和原生SQL的适用场景,开发中如何选择使用?四、实战分析题(共1题,20分)现有用户业务场景:需要实现用户信息的新增、根据ID查询用户、修改用户手机号、删除用户。已知数据表:user(id主键、username用户名、phone手机号、create_time创建时间)请结合ORM思想,简述整体实现思路,并说明相比手写SQL的优势。参考答案及详细解析一、单项选择题答案解析1.答案:B解析:ORM是对象关系映射技术,核心是打通面向对象编程和关系型数据库的壁垒,不是性能优化工具、数据库中间件,也不局限单一数据库。2.答案:B解析:ORM核心价值是面向对象操作数据库,规避手写硬编码SQL,降低开发成本,不是为了提速、减内存或备份数据。3.答案:A解析:固定映射规则:实体类=数据表,类属性=表字段,对象=数据行。4.答案:B解析:实例化一个实体对象,赋值后对应表中一条独立的数据记录,保存对象即插入一条数据。5.答案:C解析:ORM存在封装损耗,复杂查询场景下,手写原生SQL性能优于ORM,并非所有场景都更快。6.答案:B解析:主键的核心作用是唯一标识数据,保证增删改查精准定位单条数据,提速是索引的作用,和主键本身无关。7.答案:B解析:简单单表操作适配ORM,复杂联查、大数据量统计、复杂聚合查询,ORM生成的SQL冗余,性能差,推荐手写原生SQL。8.答案:B解析:懒加载是延迟加载,默认不查询关联数据,只有代码访问关联属性时,才会触发SQL查询,减少无效查询。9.答案:B解析:Nginx是服务器、Redis是缓存、Tomcat是容器,均不是ORM框架,DjangoORM是Python主流ORM框架。10.答案:B解析:ORM自动建表依赖实体类定义,根据字段类型、主键、唯一约束等配置生成数据表,支持后续迁移修改。二、填空题答案解析1.ObjectRelationalMapping2.数据表字段、数据表数据行(单条记录)3.建立实体类与数据表的映射关系4.N+1查询(懒加载引发的经典性能问题)5.面向对象三、简答题详细答案1.ORM优缺点优点:①代码面向对象,结构清晰,可读性和可维护性远高于硬编码SQL;②屏蔽不同数据库的语法差异,切换MySQL、PostgreSQL等数据库基本无需改业务代码;③自带参数防注入,有效规避SQL注入安全漏洞,不用手动处理参数拼接;④支持自动建表、数据迁移,简化数据库结构维护工作。缺点:①框架存在封装开销,复杂查询场景性能不如原生SQL;②容易产生N+1查询等隐性性能问题,需要开发者熟悉底层原理;③极度复杂的多表联查、嵌套查询、聚合统计,ORM实现繁琐,不如原生SQL简洁;④过度依赖ORM会导致开发者弱化SQL编写和调优能力。2.ORM懒加载原理、优缺点及问题规避定义:懒加载是ORM的延迟加载机制,查询主表数据时,不会立即查询关联表数据,只有代码主动调用关联属性时,才会执行SQL查询关联数据。优点:减少无效数据库查询,避免一次性加载冗余关联数据,节省服务器资源。缺点:容易引发N+1查询问题,查询1次主表数据后,遍历每条数据时都会单独查询关联表,触发大量冗余SQL,导致接口卡顿、数据库压力飙升。规避方案:需要使用关联数据时,主动开启预加载(eagerload),一次性联查主表和关联表数据,避免循环查询。3.ORM与原生SQL适用场景及选择策略优先用ORM:常规业务的单表增删改查、简单分页查询、基础数据维护、通用业务逻辑开发,追求开发效率、代码规范性和安全性的场景。优先用原生SQL:复杂多表联查、大数据量聚合统计、分组排序、自定义复杂查询、数据库批量操作、需要极致性能优化的场景。开发选择原则:简单业务无脑用ORM,保证开发效率和代码质量;复杂查询、性能敏感场景手写原生SQL,兼顾性能和灵活性。四、实战分析题标准答案1.ORM实现思路①定义User实体类,绑定数据库user表,配置类属性与表字段的映射关系,标注id为主键自增,匹配username、phone、create_time字段类型;②新增用户:实例化User对象,赋值用户名、手机号、创建时间,调用ORM保存方法,自动生成insert语句插入数据;③根据ID查询:调用ORM主键查询方法,传入用户ID,自动生成select查询语句,返回用户实体对象;④修改手机号:通过ID查询出用户对象,重新赋值phone字段,调用更新方法,自动生成update语句更新数据;⑤删除用户:通过ID定位用户对象,调用删除方法,自动生成delete语句删除对应数据。2.

温馨提示

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

评论

0/150

提交评论