您的位置:首页 >聚焦 >

金三银四面试:C#.<em><!--red_beg-->NET<!--red_end--></em>面试题 基础篇5

2022-04-03 10:50:01    来源:程序员客栈

1.Webservice与Webapi的区别?

2.ADO.NET常用对象有哪些?

3.什么是托管和非托管?

4.在.NET托管代码总我们不必担心内存泄漏,这是因为有了?

5.什么是MVC模式

6.能用foreach遍历访问的对象的要求

7.什么是反射?

8.ORM中的延迟加载与直接加载有什么异同?

9.简述Func与Action的区别?

10.23种设计模式分别叫什么名称,如何分类?

1.Webservice与Webapi的区别?

Webservice

它是基于SOAP协议的,数据格式是XML (SOAP )

只支持HTTP协议

不是开源的,但可以被任意一个了解XML的人使用

它只能部署在IIS上

Webapi

Web API 是一个开源的、理想的、构建REST-ful 服务的技术

它也支持MVC的特征,像路由、控制器、action、filter等

它可以部署在应用程序和IIS上

Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。

--->详解

2.ADO.NET常用对象有哪些?                      

Connection:主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用。

Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数

据等指令,以及调用存在数据库中的存储过程等。这个对象是架构在Connection 对象上,也就是Command 对象是通过在Connection对象连接到数据源。

DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command对象上,并提供了许多配合DataSet 使用的功能。

DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是放在内存中的。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。

DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。DataSet包含若干DataTable、DataTableTable包含若干DataRow。

DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。

DataReader对象只是一次一次向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一条,而且只能只读,所以使用起来不但节省资源而且效率很好。

--->详解

3.什么是托管和非托管?

托管代码:是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。有关内存管理(内存申请,内存释放,垃圾回收之类的)全部都是.net的CLR来管理。

非托管代码:直接编译成目标计算机码,由操作系统直接执行的代码,内存回收要继承IDisposable接口手动回收。

--->详解

4.在.NET托管代码总我们不必担心内存泄漏,这是因为有了?     

GC 垃圾收集器。

5.什么是MVC模式                               

MVC(Model View Controller)模型-视图-控制器

在MVC项目里cshtml就是View视图;Model:DataSet、Reader、对象;Controller:CS逻辑代码。

MVC是典型的平行关系,没有说谁在上谁在下的关系,模型负责业务领域的事情,视图负责显示的事情,控制器把数据读取出来填充模型后把模型交给视图去处理。而各种验证什么的应该是在模型里处理了。它强制性的使应用程序的输入、处理和输出分开。MVC最大的好处是将逻辑和页面分离。

--->详解   

6.能用foreach遍历访问的对象的要求                

需要实现IEnumerable接口或声明GetEnumerator方法的类型。

--->详解

7.什么是反射?                                                                                          

程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例。

--->详解

8.ORM中的延迟加载与直接加载有什么异同?               

延迟加载(Lazy Loading)只在真正需要进行数据操作的时候再进行加载数据,可以减少不必要的开销。

--->详解

9.简述Func与Action的区别?                        

Func是有返回值的委托,Action是没有返回值的委托。

--->详解

10.23种设计模式分别叫什么名称,如何分类?          

分三类:

创建型,行为型,结构型;

创建型包含:

1).单例模式,2).工厂模式 3).建造者模式  4).原型模式  5).工厂方法模式

行为型包含:

1).策略模式

2).模板方法模式

3).观察者模式

4).迭代子模式

5).责任链模式

6).命令模式

7).备忘录模式

8).状态模式

9).访问者模式

10).中介者模式

11).解释器模式

结构型设计模式包含:

1).适配器模式

2).装饰器模式

3).代理模式

4).外观模式

5).桥接模式

6).组合模式

7).享元模式

版权申明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。

支持小微:

299元购买5000+的.NET架构课程,还送初级、中级课程!

腾讯云 爆款2核2G云服务器首年40元,2G4核云服务器298元/3年

链接:https://curl.qcloud.com/1VVs7OBH

右下角,您点一下在看图片

小微工资涨1毛

商务合作QQ:185601686

关键词: 设计模式 托管代码 延迟加载

相关阅读