简述C#面试题

xiaoxiao2021-02-28  136

1.面向对象的思想主要包括什么? 面向对象的三大特征: 封装:保证数据的合法性。 继承:子类继承父类 多态:同一个方法的不同表现形式 —减少代码的冗余 2.什么是ASP.net中的用户控件? ASP.NET Web 用户控件与完整的 ASP.NET 网页(.aspx 文件)相似,同时具有用户界面页和代码。可以采取与创建 ASP.NET 页相似的方式创建用户控件,然后向其中添加所需的标记和子控件。用户控件可以像页面一样包含对其内容进行操作(包括执行数据绑定等任务)的代码。 注意:用户控件所建立的页面.ascx不可以直接运行,需要放在托放在需要显示的apsx的页面中。 eg:制作一个登陆页面将其放在一个.ascx的页面里将其封装成一个用户空间,然后在.aspx的页面中进行调用。 3.什么叫应用程序域(AppDoMain)? 应用程序域为运行在相同进程中的不同应用提供了一种轻量级的隔离机制。创建于同一个应用程序域中的对象不能直接在另一个应用程序域中被使用,实现跨应用程序域的数据共享或对象调用依赖于一项必须的操作,封装。 什么是受管制的代码? 托管的代码就是把有关内存管理(内存申请,内存释放,垃圾回收之类的)全部都是.net的CLR来管理,就是说使用托管的代码把底层的一些操作都封装起来了,不能直接进行内存的读取之类的和硬件相关的操作,优点就是比较安全,不会出现诸如内存泄露之类的问题,缺点也很明显,不能直接读取内存,性能上会有损失,使用起来有时也不够灵活。 非托管的刚好相反,可以直接进行硬件操作,性能比较高,但是对开发人员的要求也比较高。 最直观的就是c#不推荐使用指针,而c++就可以使用指针来直接读取内存。 什么是强类型系统? (1)为了保证类型的明确性,强类型的语言的成员、变量必须声明明确的类型,而且要先声明后使用。 (2)强类型系统是对数据类型有严格的要求和限制,每一个变量和每一个表达式都有类型,在使用一个变量前系统都会进行类型检查。 什么是装箱和拆箱? 装箱:将值类型数据转化为应用型数据, 拆箱:将引用型数据转化为值类型的数据。 值类型数据:int,float,double,char,DataTime) 引用型数据:类、托管、数组和接口) 什么是重载? 方法名相同,参数列表不同,方法体不同。 4.CTS、CLS和CLR分别作何解释? CTS通用类型系统 (common type system) 一种确定公共语言运行库如何定义、使用和管理类型的规范。 CLR公共语言运行库 .NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。 CLS公共语言规范 要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。 5.ADO.net中常用的对象有哪些?分别描述一下。 (1)DataSet对象:表示内存中数据的缓存,可以把它想像成一个临时的数据库,它里可以存多个表(DataTable),而且是断开式的,不用每进行一次操作就对数据库进行更新,从而提高了效率。 (2)DataReader对象:它与DataSet最大的不同是有连接式的,每次对数据库进行存取都会影响到数据库。 (3)Connection对象:用于连接数据库的对象,表示到数据源的一个唯一的连接。 (4)Command对象:表示要对数据库执行的一个SQL语句或一个存储过程。 (5)DataAdapter对象:该对象是与DataSet配合使用的对象,用于把表填充到DataSet,和更新DataSet等。 6.如何理解委托? (1).委托是对函数的封装,可以当作给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。 (2).委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。 (3).委托通过delegate来声明。而事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。事件对象用event声明。 7.C#中的接口和类有什么异同。 接口与类不同点: (1).接口与类不同点不能直接实例化接口。 (2).接口不包含方法的实现。 (3).接口、类和结构可以从多个接口继承,但是C#只支持但继承:类只能从一个基类继承实现。 接口与类相同点: (1).接口、类和结构可以从多个接口继承,接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所成员。 (2).接口可以包含事件、索引器、方法和属性。 (3).一个类可以实现多个接口。 8.net中读写数据库需要用到哪些类?他们的作用 DataSet:数据存储器。 DataCommand:执行语句命令。 DataAdapter:数据的集合,用语填充。 sqlconnection用来创建数据库连接 sqlcommand用其中的方法来执行sql语句获取你需要的返回值 9.UDP连接和TCP连接的异同。 传输层协议 TCP提供IP环境下的数据可靠传输,它提供的服务[1]包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低。 10.ASP.net的身份验证方式有哪些?分别是什么原理? (1).Windows: 使用IIS验证方式 (2).Forms: 使用基于窗体的验证方式 (3).Passport: 采用Passport cookie验证模式 (4).None: 不采用任何验证方式 11.进程和线程分别怎么理解? 一个程序就是一个进程,而一个程序中的多个任务则被称为线程。进程是表示资源分配的基本单位,又是调度运行的基本单位。线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。 进程和线程的关系 (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。 (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。 (3)处理机分给线程,即真正在处理机上运行的是线程。 (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。 12.什么是code-Behind技术。 代码与逻辑上的分离,cs与aspx上的分离 13.活动目录的作用。 好处:由于客户端所进行的应用以及相关配置全部存储在服务器上,故而用户在域内的移动,和物理的计算机脱离关系,用户甚至用一个张智能卡就可以在域中的任何工作站上,随意切换自己的工作任务。 坏处:也正是由于服务器接管大部分的客户端任务,故而服务器的硬件以及网络的带宽要求也比较高,这一方面限制了用户的购买能力,另一方面也限制了域的规模及灵活拓展。 14.net中读写XML的类都归属于哪些命名空间? using System.Collections.Generic System.Xml.XPath; System.Xml.Xsl; System.Xml.Schema; System.Xml.Serialization; System.Xml.Serialization.Advanced; System.Xml.Serialization.Configuration; System.Xml.Linq; 15.解释一下UDDI、WSDL的意义及其作用。 UDDI 用于注册各个服务提供商提供的服务 以便可以共享它们 它还有助于WEB服务客户或web用户查找该Web服务 wsdl 是web服务描述语言(web Services Description Language) 16.什么是SOAP,有哪些应用。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。 这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。 17.如何部署一个ASP.net页面。 (1).打开IIS管理器,在管理器中添加一个网站。 (2).填写网站名称,选择.NET版本(选择相应的版本,是4.0就选4.0,是4.5就选4.5),选择物理路径(物理路径即为你的ASP.NET网站存放的文件夹)。 (3).填写绑定信息,如果IP地址没有选择(即全部未分配,那就是这个电脑的所有IP地址都可以访问),如果选择了特定的IP地址就只能使用选择的IP进行访问。域名端口等信息保持不变然后确定。 (4).网站部署完成可以在IIS右侧点击浏览进行访问查看。 注意: 1、网站根目录不包含引用文件,一定要到项目的根目录。 2、在编译运行时使用的是Visual Studio自带的一个虚拟IIS服务器,和IIS服务器还是有一定差别,具体部署情况要以IIS的提示为准。 18.如何理解.net中的垃圾回收机制。 首先说下C#中的变量类型吧,C#中有2个变量类型,一种是值类型,一种是引用类型,值类型是在栈上创建,这一类型用不到GC,引用类型是在堆中创建,GC主要是在这里管理对象。GC对每个对象有个引用计数,所有说只要有变量在引用它,计数器就不为了,一个变量不再引用这个对象,对象的计数器就减一,知道计数器为0时,对象就成为内存垃圾了(没有变量引用它),但是此时垃圾并没有回收。那什么时候回收呢,是在内存占用超过一定限度是,GC才启动,释放垃圾资源,说白了就是delete这些对象,将空间归还给系统。但是这还没完,空间释放后,内存空间就不连续了,所有GC还要赶一件事,就是将空间整理下,将占用的空间连续话,具体说就是将空间向上推,就是想高地值转存,这样空间就连续了,使用也方便了,然后GC就改变应用那些对象的变量里地地址,让他们指向正确的位置,所以说C#中的引用类型就是一种指针,一种动态改变值的指针。 19.常用的调用webservice方法有哪些? 1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜单选项

转载请注明原文地址: https://www.6miu.com/read-48048.html

最新回复(0)