2026 NET软件开发笔试题(含答案解析)_第1页
2026 NET软件开发笔试题(含答案解析)_第2页
2026 NET软件开发笔试题(含答案解析)_第3页
2026 NET软件开发笔试题(含答案解析)_第4页
2026 NET软件开发笔试题(含答案解析)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

2026.NET软件开发笔试题(含答案解析)适用:校招/社招.NET(C#、\hASP.NETCore、EFCore),题型:单选、多选、判断、简答、编程题一、单项选择题(15题)\hASP.NETCoreWebAPI中,API控制器应当继承哪个类()

A.Controller

B.ControllerBase

C.ApiController

D.BaseController

答案:B

解析:ControllerBase用于WebApi,不包含视图相关功能;Controller继承ControllerBase,用于MVC(包含视图)。C#中,async修饰的方法没有写await,会发生()

A.编译报错

B.运行时异常

C.编译警告

D.直接忽略async

答案:C

解析:async方法无await会产生警告,方法会同步执行,不会异步。下面关于装箱拆箱描述正确的是()csharp

intnum1=10;

Objectobj=num1;

num1++;

Console.WriteLine((int)obj+""+num1);A.1111

B.1011

C.1010

D.1110

答案:B

解析:装箱把值类型拷贝到堆,obj是副本,num1修改不影响obj的值。防止类被继承,使用哪个关键字()

A.static

B.private

C.sealed

D.abstract

答案:C

解析:sealed密封类,禁止继承;abstract抽象类必须被继承。ref与out的区别()

A.ref实参调用前必须初始化,out方法内必须赋值

B.out实参调用前必须初始化

C.两者完全一样

D.ref方法内部必须赋值

答案:AIEnumerable与IQueryable说法正确的是()

A.无区别

B.IEnumerable内存查询,IQueryable延迟执行,查询在数据库执行

C.IQueryable直接返回List集合

D.IEnumerable依赖EFCore

答案:B

解析:IEnumerable:Linq‑to‑Object,内存过滤;IQueryable:Linq‑to‑SQL,拼接SQL,延迟执行,遍历才访问数据库。\hASP.NETCore依赖注入,Scoped服务含义()

A.整个应用程序一个实例

B.每一次HTTP请求创建一个实例

C.每次获取都新建实例

D.线程单例

答案:BSingleton:全局唯一;Scoped:请求域;Transient:每次获取新建EFCore中Code‑First指()

A.根据数据库生成实体类

B.根据C#实体类生成数据库表

C.手写SQL映射实体

D.使用存储过程

答案:B

解析:Code‑First写实体生成库表;Database‑First从数据库反向生成实体类。C#访问修饰符,同一程序集内可以访问()

A.private

B.protected

C.internal

D.public

答案:C字符串大量拼接优先使用()

A.string直接+

B.StringBuilder

C.char数组

D.List

答案:B

解析:string不可变,每次+生成新对象;StringBuilder可变,性能高。Task与Task区别()

A.Task有返回值,Task无返回值

B.Task只能同步

C.Task不能await

D.没有区别

答案:A下列哪个不是SOLID原则()

A.单一职责

B.开闭原则

C.内存回收原则

D.接口隔离

答案:C\hASP.NETCore中间件管道,正确顺序()

A.UseRouting→UseCors→UseAuthentication→UseAuthorization

B.UseCors→UseRouting→UseAuthorization→UseAuthentication

C.UseAuthentication→UseRouting→UseCors

D.顺序无所谓

答案:AC#中foreach遍历对象,需要实现哪个接口()

A.ICollection

B.IEnumerable

C.IList

D.IDisposable

答案:BConfigureAwait(false)主要作用()

A.抛出异常不等待

B.不捕获原始上下文,提升性能,避免死锁

C.强制同步等待

D.取消任务

答案:B二、多选题(5题)属于引用类型的有()

A.string

B.class自定义类

C.int

D.DateTime

答案:AB

解析:int、DateTime为值类型。EFCore可以做哪些操作()

A.CodeFirst迁移

B.DatabaseFirst反向实体

C.原生SQL执行

D.数据库事务

答案:ABCDC#异常处理关键字()

A.try

B.catch

C.finally

D.throw

答案:ABCD.NET支持的生命周期(DI)()

A.Singleton

B.Scoped

C.Transient

D.Static

答案:ABCasync/await优势()

A.不阻塞线程,提升并发

B.IO密集场景性能好

C.代码可读性优于回调

D.自动提升CPU运算速度

答案:ABC三、判断题(10题√/×).NETCore只能运行在Windows平台(×)

解析:跨平台Windows/Linux/macOS。中间件按注册顺序链式执行(√)将Scoped服务注入Singleton会产生捕获依赖问题(√)

解析:Singleton生命周期更长,Scoped被Singleton持有,服务行为异常。string是值类型(×)引用类型。LINQIQueryable立即执行SQL(×)延迟执行,遍历才执行。sealed方法不能被重写(√)IDisposable用于释放非托管资源(√)Task.Run适合CPU密集任务,不适合纯粹IO等待(√)\hASP.NETCore控制器方法必须加async(×)非必须。Record是C#9提供的不可变数据类型(√)四、简答题(6题)1..NETFramework与.NET(.NETCore/.NET5+)区别参考答案平台:.NETFramework仅Windows;新版.NET跨平台Windows/Linux/macOS。开源:Framework闭源;新版完全开源。部署:Framework系统全局安装;新版支持独立部署,自带运行时。性能:新版性能大幅优化,去除大量老旧API。应用:Framework支持WinForm/WPF;新版同样支持桌面+Web+移动端。2.简述async/await原理编译器把async方法编译成状态机,await遇到未完成任务时返回,释放线程;任务完成后回到后续逻辑继续执行,不会阻塞线程。适合IO密集(数据库、http请求),提升并发吞吐量。不是多线程,IO等待不会占用工作线程。3.什么是装箱、拆箱装箱:值类型复制到堆中包装成object引用类型,产生内存开销。拆箱:从object对象取出值类型,强制转换。频繁装箱会GC压力,尽量避免循环装箱。4.IEnumerable和IQueryable区别IEnumerable:内存集合查询,所有数据加载内存再过滤;LinqtoObject。IQueryable:表达式树,拼接SQL,数据库端过滤,延迟执行;EF查询返回IQueryable,ToList()触发数据库执行。重要:不要IQueryable在循环内遍历,会N+1查询问题。###5.\hASP.NETCore依赖注入三种生命周期,以及Scoped注入Singleton会出现什么问题Singleton:全局唯一实例;Scoped:每个http请求一个实例;Transient:每次获取创建新实例。问题:CaptiveDependency捕获依赖。Singleton生命周期长,会捕获Scoped对象,该Scoped对象被一直复用,跨请求共享实例,造成数据错乱、并发bug。禁止Scoped注入Singleton。###6.EFCoreN+1问题是什么,如何解决

场景:查询主表,循环遍历导航属性,每循环一次额外查询一次数据库,产生大量SQL。

解决:Include()预加载关联表;Select投影查询;避免循环内部访问导航属性。五、编程题(3道,笔试高频)编程1:C#写线程安全单例csharp

publicclassSafeSingleton

{

privatestaticreadonlyobject_lock=newobject();

privatestaticSafeSingleton_instance;

privateSafeSingleton(){}//私有构造,禁止new

publicstaticSafeSingletonInstance

{

get

{

if(_instance==null)

{

lock(_lock)

{

if(_instance==null)

{

_instance=newSafeSingleton();

}

}

}

return_instance;

}

}

}.NET6+推荐使用DI容器Singleton注册,不用手写单例。编程2:写一个异步方法,请求http获取字符串,使用asyncawaitcsharp

usingSystem.Net.Http;

publicclassHttpDemo

{

privatereadonlyHttpClient_httpClient;

publicHttpDemo(HttpClienthttpClient)

{

_httpClient=httpClient;

}

publicasyncTask<string>GetHtmlAsync(stringurl)

{

varresp=await_httpClient.GetAsync(url);

resp.EnsureSuccessStatusCode();

stringcontent=awaitresp.Content.ReadAsStringAsync();

returncontent;

}

}编程3:LINQ,有List,筛选年龄大于18,按姓名排序,取出姓名集合csharp

List<User>users=newList<User>();

//方式1查询语法

varnames=(fromuinusers

whereu.Age>18

orderbyu.Name

selectu.Name).ToList();

//方式2方法链

varnames2=users.Where(u=>u.Age>18)

.OrderBy(u=>u.Name)

.Select(u=>u.Name)

.ToList();csharp

publicclassUser

{

publicintId{get;set;}

publicstringName{g

温馨提示

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

评论

0/150

提交评论