NET 开发工程师机试题(含详细答案解析)_第1页
NET 开发工程师机试题(含详细答案解析)_第2页
NET 开发工程师机试题(含详细答案解析)_第3页
NET 开发工程师机试题(含详细答案解析)_第4页
NET 开发工程师机试题(含详细答案解析)_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

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

文档简介

.NET开发工程师机试题(含详细答案解析)适用场景:企业入职上机笔试、岗位技能考核、实习生/初级开发定级考试时长:90分钟满分:100分考试说明:全程手写代码、独立完成,禁止查阅资料;编程题可基于.NETFramework4.8/.NET6+任意版本实现一、单项选择题(每题3分,共10题,30分)1、以下关于C#值类型和引用类型的说法,正确的是()A、string属于值类型B、struct是引用类型,class是值类型C、值类型变量存储在栈中,引用类型变量存储在栈,实例对象存储在堆中D、值类型赋值会产生地址引用,引用类型赋值会拷贝数据答案:C解析:string是引用类型;struct为值类型、class为引用类型;值类型赋值是数据拷贝,引用类型赋值是地址引用。2、下列关键字中,用于阻止类被继承的是()A、staticB、sealedC、abstractD、readonly答案:B解析:sealed密封类/方法,禁止继承和重写;static为静态修饰符,abstract为抽象类(必须被继承),readonly为只读字段。3、async/await关键字的作用是()A、实现同步多线程执行B、简化异步代码编写,避免线程阻塞,提升程序响应性C、强制代码串行执行D、仅用于数据库操作答案:B解析:async/await是.NET异步编程核心,优化异步执行逻辑,解决传统回调地狱,不阻塞主线程,适用于IO、网络、数据库等各类耗时操作。4、以下关于List和Array的区别,说法错误的是()A、Array长度固定,List长度动态可变B、List底层本质是封装了ArrayC、Array可以直接使用Add、Remove方法D、List是泛型集合,类型更安全答案:C解析:数组长度固定,无Add、Remove方法,无法直接增删元素;List封装数组,支持动态扩容和元素操作。5、EFCore中,实现数据表一对一关联配置的核心是()A、HasMany、WithManyB、HasOne、WithOneC、Join、IncludeD、HasKey答案:B解析:HasOne/WithOne配置一对一关系;HasMany/WithMany配置多对多;Include用于贪婪加载关联数据,HasKey用于配置主键。6、C#中,readonly和const的区别,正确的是()A、readonly常量编译时赋值,const运行时赋值B、const可以修饰局部变量,readonly只能修饰字段C、readonly可以在构造函数中赋值,const必须声明时赋值D、两者修饰的变量都可以修改答案:C解析:const为编译时常量,声明必须赋值,全局不可修改;readonly为运行时常量,可在构造函数赋值,仅初始化后不可修改。7、ASP.NETCore中,用于接收前端Get请求参数的方式不包括()A、[FromQuery]B、直接形参接收C、[FromBody]D、Request.Query答案:C解析:[FromBody]用于接收Post请求的请求体数据,Get请求无请求体,无法使用该特性接收参数。8、以下哪个异常通常出现在数组越界、集合索引超出范围()A、NullReferenceExceptionB、IndexOutOfRangeExceptionC、ArgumentExceptionD、IOException答案:B解析:索引越界异常;空引用异常为NullReferenceException,参数异常为ArgumentException,文件IO异常为IOException。9、关于泛型的作用,下列说法错误的是()A、避免装箱拆箱,提升性能B、实现类型复用,减少重复代码C、编译时类型检查,避免类型转换异常D、只能用于集合类,不能用于自定义方法答案:D解析:泛型可用于类、接口、方法、委托等,不止局限于集合,自定义方法可通过泛型实现通用逻辑。10、ASP.NETCore中间件的执行顺序是()A、注册顺序倒序执行B、注册顺序依次执行,先进先出C、随机执行D、后注册的先执行答案:B解析:中间件按照代码注册顺序串行执行,请求进来依次执行,响应返回反向执行。二、填空题(每空2分,共10空,20分)1、C#中实现多态的两种核心方式是______、______。答案:方法重写(override)、方法重载(overload)2、面向对象三大特性:______、______、______。答案:封装、继承、多态3、EFCore中,______方法实现数据新增,______方法实现数据修改,______方法实现数据删除。答案:Add、Update、Remove4、C#中,______关键字用于释放非托管资源,通常配合using语句使用。答案:IDisposable(Dispose)5、ASP.NETCore中,______特性用于接口跨域访问配置。答案:[EnableCors]三、简答题(每题5分,共4题,20分)1、简述override和overload的区别?答案解析:(1)重载(overload):同一类中,多个方法同名、参数列表不同(参数个数、类型、顺序不同),与返回值无关,属于编译时多态;(2)重写(override):存在于父子类之间,子类重写父类的虚方法,方法名、参数、返回值完全一致,属于运行时多态;(3)重载是横向扩展方法,重写是纵向覆盖父类逻辑。2、简述using语句的作用和原理?答案解析:using主要用于自动释放实现了IDisposable接口的对象(如数据库连接、文件流、网络请求等非托管资源)。原理:代码执行出using作用域后,会自动调用对象的Dispose方法,无论代码正常执行还是出现异常,都能保证资源释放,避免内存泄漏,无需手动写try-finally释放资源。3、什么是装箱和拆箱?有什么性能影响?答案解析:装箱:将值类型转换为object引用类型,会在堆中开辟新空间存储数据;拆箱:将object引用类型强制转换为值类型,从堆中读取数据赋值给栈变量;性能影响:装箱拆箱会产生内存分配、类型校验开销,频繁操作会降低程序性能,泛型可以有效避免装箱拆箱问题。4、简述ASP.NETCore中过滤器(Filter)的种类和执行顺序?答案解析:四种核心过滤器,执行顺序从上到下:(1)授权过滤器(AuthorizationFilter):最先执行,校验用户权限;(2)资源过滤器(ResourceFilter):权限校验后执行,可缓存、拦截请求;(3)操作过滤器(ActionFilter):方法执行前后拦截,记录日志、参数校验;(4)异常过滤器(ExceptionFilter):全局捕获接口异常,统一处理报错信息。四、编程题(共30分)题目1:基础算法编程(10分)需求:编写C#方法,传入一个整数数组,返回数组中最大值、最小值、平均值(平均值保留2位小数),需处理数组为空、null的异常情况。参考答案代码:csharp

usingSystem;

usingSystem.Linq;

namespaceNetExamDemo

{

publicclassArrayHelper

{

///<summary>

///计算数组最大值、最小值、平均值

///</summary>

///<paramname="nums">整数数组</param>

///<returns>返回拼接结果字符串</returns>

publicstaticstringGetArrayInfo(int[]nums)

{

//参数校验

if(nums==null||nums.Length==0)

{

return"数组不能为空或空值";

}

intmax=nums.Max();

intmin=nums.Min();

doubleavg=Math.Round(nums.Average(),2);

return$"最大值:{max},最小值:{min},平均值:{avg}";

}

//测试调用

publicstaticvoidMain()

{

int[]arr={12,45,7,89,23,56};

Console.WriteLine(GetArrayInfo(arr));

}

}

}核心考点:参数容错处理、LINQ基础使用、数值精度处理、异常边界思维题目2:面向对象编程(10分)需求:定义动物父类Animal,包含属性:名称、年龄;虚方法Cry(叫声);定义Dog子类、Cat子类,重写Cry方法输出各自叫声,在主方法中实现多态调用。参考答案代码:csharp

usingSystem;

namespaceNetExamDemo

{

//动物父类

publicclassAnimal

{

publicstringName{get;set;}

publicintAge{get;set;}

//虚方法,允许子类重写

publicvirtualvoidCry()

{

Console.WriteLine("动物发出叫声");

}

}

//狗子类

publicclassDog:Animal

{

publicoverridevoidCry()

{

Console.WriteLine($"{Name}({Age}岁):汪汪汪");

}

}

//猫子类

publicclassCat:Animal

{

publicoverridevoidCry()

{

Console.WriteLine($"{Name}({Age}岁):喵喵喵");

}

}

//测试多态

publicclassProgram

{

publicstaticvoidMain()

{

Animaldog=newDog{Name="旺财",Age=3};

Animalcat=newCat{Name="橘猫",Age=2};

dog.Cry();

cat.Cry();

}

}

}核心考点:继承、虚方法、方法重写、多态实现、面向对象基础落地题目3:EFCore数据操作(10分)需求:基于EFCore,创建用户实体User(Id、UserName、Phone、CreateTime),编写新增用户、根据手机号查询用户、删除用户的基础业务方法。参考答案代码:csharp

usingMicrosoft.EntityFrameworkCore;

usingSystem;

usingSystem.Linq;

namespaceNetExamDemo

{

//用户实体

publicclassUser

{

publicintId{get;set;}

publicstringUserName{get;set;}

publicstringPhone{get;set;}

publicDateTimeCreateTime{get;set;}=DateTime.Now;

}

//数据库上下文

publicclassAppDbContext:DbContext

{

publicDbSet<User>Users{get;set;}

protectedoverridevoidOnConfiguring(DbContextOptionsBuilderoptionsBuilder)

{

//本地测试数据库连接,可自行替换

optionsBuilder.UseSqlServer("Server=.;Database=NetExamDB;Trusted_Connection=True;");

}

}

//用户业务操作类

publicclassUserService

{

//新增用户

publicstaticboolAddUser(Useruser)

{

using(vardb=newAppDbContext())

{

db.Users.Add(user);

returndb.SaveChanges()>0;

}

}

//根据手机号查询用户

publicstaticUserGetUserByPhone(stringphone)

{

using(vardb=

温馨提示

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

最新文档

评论

0/150

提交评论