版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.NET基础与进阶测试题(含详细答案)适用人群:.NET初级/中级开发人员、求职面试、岗位考核考试时长:90分钟满分:100分一、单项选择题(共15题,每题2分,共30分)1、以下不属于.NET值类型的是()A、intB、structC、stringD、bool2、C#中const和readonly的描述,正确的是()A、readonly常量编译时赋值B、const字段可以在构造函数赋值C、readonly可以修饰局部变量D、const是编译时常量,readonly是运行时常量3、以下关于ref和out的说法,错误的是()A、ref参数调用前必须初始化B、out参数调用前无需初始化C、方法内out参数必须赋值D、ref和out参数本质无区别,可以混用4、C#中实现接口的方法,默认的访问修饰符是()A、publicB、privateC、protectedD、internal5、以下哪种集合可以存储重复键值对()A、DictionaryB、HashtableC、ConcurrentDictionaryD、NameValueCollection6、ASP.NETCore中,以下不属于依赖注入生命周期的是()A、TransientB、SingletonC、StaticD、Scoped7、async/await关键字的作用是()A、开启多线程并行执行B、简化异步编程,避免线程阻塞C、强制代码同步执行D、提升CPU运算速度8、以下关于GC(垃圾回收)的说法正确的是()A、GC可以回收所有未使用的资源B、值类型内存由GC负责回收C、引用类型托管内存由GC回收D、GC回收不会造成程序卡顿9、C#中sealed关键字的作用是()A、修饰类可以被继承B、修饰方法可以重写C、修饰类禁止被继承,修饰方法禁止被重写D、仅用于密封接口10、ASP.NETCore中间件的执行顺序是()A、注册顺序倒序执行B、注册顺序顺序执行,先注册先进入,后注册先退出C、随机执行D、固定顺序,与注册无关11、以下关于StringBuilder和String的区别,错误的是()A、String不可变,StringBuilder可变B、大量字符串拼接优先使用StringBuilderC、StringBuilder线程安全,String线程不安全D、String每次拼接都会生成新对象12、LINQ中延迟执行的查询是()A、ToList()B、Count()C、Where()D、First()13、以下不属于C#访问修饰符的是()A、publicB、protectedinternalC、staticD、internal14、EntityFrameworkCore中,以下迁移命令用于初始化数据库的是()A、Add-MigrationB、Update-DatabaseC、Remove-MigrationD、Drop-Database15、以下关于泛型的说法正确的是()A、泛型会产生装箱拆箱B、泛型可以实现类型复用,保证类型安全C、泛型仅能用于集合D、泛型代码运行效率低于普通代码二、填空题(共10空,每空2分,共20分)1、C#中,引用类型主要包括:类、接口、数组、_________。2、面向对象的三大特性是:封装、_________、_________。3、ASP.NETCore中,_________生命周期的服务每次请求都会创建新实例。4、C#中异常捕获的核心关键字是try、_________、_________。5、EFCore中,实现数据表一对一关联需要配置_________导航属性。6、线程安全的字典集合是_________。7、C#中_________关键字可以避免虚方法被重写。三、简答题(共4题,每题8分,共32分)1、简述值类型和引用类型的核心区别,以及各自的存储位置。2、简述ASP.NETCore中三种DI服务生命周期(Transient、Scoped、Singleton)的区别和使用场景。3、简述async/await的工作原理,为什么可以避免线程阻塞?4、简述EFCore中懒加载、预加载、显式加载的区别和适用场景。四、编程题(共1题,18分)使用C#实现:编写一个通用的分页工具方法,传入List集合、页码、页容量,返回分页后的结果(包含当前页数据、总条数、总页数、当前页码)。要求代码规范、可复用,兼容任意实体类型。详细参考答案一、单项选择题答案及解析1、答案:C解析:string是特殊的引用类型,int、bool、struct均为值类型。2、答案:D解析:const必须在声明时赋值,属于编译时常量;readonly可以在声明或构造函数赋值,属于运行时常量,且只能修饰字段,不能修饰局部变量。3、答案:D解析:ref要求调用前变量必须初始化,out无需初始化但方法内必须赋值,二者使用规则不同,不能混用。4、答案:A解析:C#中接口成员默认是public,实现接口的方法必须显式使用public修饰,不能使用其他访问修饰符。5、答案:D解析:Dictionary、Hashtable键唯一,不允许重复键;NameValueCollection允许重复键,常用于表单数据接收。6、答案:C解析:ASP.NETCoreDI仅有Transient(瞬时)、Scoped(作用域)、Singleton(单例)三种生命周期,无Static。7、答案:B解析:async/await是异步语法糖,不会主动开启多线程,核心作用是释放调用线程,避免阻塞,提升程序并发能力。8、答案:C解析:GC仅负责回收托管堆中的引用类型内存;值类型存储在栈中,由系统自动释放;GC无法回收文件、数据库连接等非托管资源;fullGC执行时会短暂阻塞线程。9、答案:C解析:sealed密封类禁止被继承,密封重写后的虚方法禁止被子类再次重写。10、答案:B解析:中间件遵循「先注册先进入管道,后注册先退出管道」的洋葱模型执行顺序。11、答案:C解析:StringBuilder是非线程安全的,多线程操作需加锁;String是不可变的,线程安全。12、答案:C解析:LINQ中Where、Select、OrderBy属于延迟执行;ToList、Count、First等方法会立即执行查询。13、答案:C解析:static是静态修饰符,不属于访问修饰符;C#访问修饰符包含public、private、protected、internal、protectedinternal。14、答案:B解析:Add-Migration是添加迁移文件,Update-Database是将迁移文件同步到数据库,完成初始化或更新数据库结构。15、答案:B解析:泛型无装箱拆箱,类型安全、代码可复用,可用于类、方法、接口,适用场景广泛,运行效率高于非泛型代码。二、填空题答案1、委托2、继承、多态(顺序可互换)3、Scoped4、catch、finally(顺序可互换)5、一对一6、ConcurrentDictionary7、sealed三、简答题详细答案1、值类型和引用类型核心区别及存储位置(1)存储位置:值类型数据直接存储在栈空间;引用类型的对象实例存储在托管堆,栈中仅存储对象的内存地址。(2)赋值方式:值类型赋值是值拷贝,新旧变量相互独立,修改互不影响;引用类型赋值是地址拷贝,多个变量指向同一个堆对象,修改一个会影响其他变量。(3)回收方式:值类型栈内存由系统自动释放,无需GC回收;引用类型堆内存由GC自动回收。(4)常见类型:值类型包括int、bool、double、struct、枚举;引用类型包括类、接口、数组、委托、string。2、ASP.NETCoreDI三种服务生命周期区别及场景(1)Transient(瞬时):每次获取服务都会创建全新实例,生命周期最短。适用于轻量、无状态、频繁调用的服务,如通用工具类。(2)Scoped(作用域):同一个HTTP请求内获取的是同一个实例,不同请求生成不同实例。适用于请求级别的业务服务、数据库上下文(DbContext)。(3)Singleton(单例):程序启动后仅创建一个实例,全局唯一,程序运行期间复用。适用于全局配置、缓存服务、日志服务等全局通用服务。3、async/await工作原理及防阻塞原理async用于标记异步方法,await用于等待异步操作执行完成,但不会阻塞主线程。执行流程:当代码执行到await处时,会立即释放当前调用线程,让线程去处理其他业务逻辑;待异步任务(如接口请求、数据库查询、文件读写)执行完成后,再回调原有线程继续执行后续代码。传统同步等待会一直占用线程,导致线程阻塞、并发能力下降;而async/await通过线程复用,极大提升了程序的并发处理能力,从语法层面简化了异步回调的复杂写法。4、EFCore三种加载方式区别及场景(1)懒加载(LazyLoading):查询主实体时,默认不加载关联导航属性,访问关联属性时才动态查询数据库。优点是节省单次查询开销,缺点是会产生多次数据库查询(N+1问题)。适用于不确定是否需要使用关联数据的场景。(2)预加载(EagerLoading):通过Include、ThenInclude在查询主实体时,一次性加载指定的关联属性,单次查询即可获取所有数据,避免N+1问题。适用于明确需要使用关联数据的场景,是开发中最常用的方式。(3)显式加载(ExplicitLoading):查询主实体后,后续通过Entry手动加载关联属性。灵活性高,可按需动态加载关联数据,适用于运行时动态判断是否需要关联数据的场景。四、编程题参考答案思路:利用泛型适配所有实体类型,通过Skip、Take实现分页,统一返回分页结果实体,代码可复用、无冗余。csharp
//通用分页结果实体
publicclassPageResult<T>
{
///<summary>
///当前页数据
///</summary>
publicList<T>DataList{get;set;}=newList<T>();
///<summary>
///总数据条数
///</summary>
publicintTotalCount{get;set;}
///<summary>
///总页数
///</summary>
publicintTotalPage{get;set;}
///<summary>
///当前页码
///</summary>
publicintPageIndex{get;set;}
///<summary>
///每页条数
///</summary>
publicintPageSize{get;set;}
}
//通用分页工具类
publicstaticclassPageHelper
{
///<summary>
///通用分页方法
///</summary>
///<typeparamname="T">实体类型</typeparam>
///<paramname="source">原始数据集合</param>
///<paramname="pageIndex">当前页码</param>
///<paramname="pageSize">每页条数</param>
///<returns>分页结果</returns>
publicstaticPageResult<T>PageList<T>(List<T>source,intpageIndex,intpageSize)
{
//参数校验,防止非法参数
pageIndex=pageIndex<=0?1:pageIndex;
pageSize=pageSize<=0?10:pageSize;
varresult=newPageResult<T>();
result.TotalCount=source.Count;
result.PageIndex=pageIndex;
result.PageSize=pageSize;
//计算总页数
result.TotalPage=(int)Math.Ceiling(result.TotalCount*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医学超声面试试题及答案
- 2025年意识形态试题库及答案(可下载)
- 2025年院感知识培训考试试题及答案
- 2025年政府采购评审专家考试真题含参考答案
- 2025外科护理学期末测试试题(含答案)
- 2026年江苏省面点师职业资格初级考试模拟题试卷及答案详解
- 2026年北师大版高二地理选择性必修第11单元综合练习题及答案
- 2026光伏制氢经济性测算与示范项目运营模式优化报告
- 2026企业管理体系数字化升级研究与发展策略规划及市场竞争优化研究报告
- 2026人机协作系统市场调研与发展智能工厂解决方案
- 2025年中考语文满分作文14篇
- 2026年卫健委考试题库及核心答案
- 文化装饰合同范本
- Unit2重点知识复习课件-人教版七年级英语上册
- 浙江省2021-2025年高考物理试题分类汇编:运动和力的关系(解析版)
- 水闸防洪防汛安全知识培训
- 石油化工动设备检修规程20190904
- 人教PEP版(2024)四年级上册英语-Unit 4 Helping in the community 单元整体教学设计(共6课时)
- 高价药纳入医保
- 光伏用箱变培训课件
- 深南电路普工面试考试题目含答案
评论
0/150
提交评论