.NET面试题
附件2 常见.NET面试问题集锦
1. 您需要创建一个https://www.360docs.net/doc/1110672173.html, 应用程序,公司考虑使用Windows 身份认证,所有的用户都存在于AllWin这个域中,您想要使用下列认证规则来配置这个应用程序:匿名用户不允许访问这个应用程序。
所有雇员除了Tess和King都允许访问这个应用程序。
请问您应该使用哪一个代码段来配置这个应用程序?
2. 您要创建https://www.360docs.net/doc/1110672173.html,应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?
在配置文件web.config中添加如下配置节:
defaultRedirect="GenericErrorPage.htm"> 3. 您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择哪一个字符串? "Server=AllWin\PubBase;Database=Test; Integrated Security=SSPI" 4. 您为AllWin公司创建了一个https://www.360docs.net/doc/1110672173.html,应用程序。这个应用程序调用一个Xml Web Service。这个Xml Web Service将返回一个包含了公司雇员列表的DataSet对象。请问您如何在这个程序中使用这个Xml Web Service? 在“Web引用”对话框中输入这个XML Web Service的地址。 5. 在下面的例子里 Using System; Class A{ Public A(){ PrintFields(); } Public virtual void PrintFields(){} } Class B:A{ int x=1; int y; public B(){ y=-1; } Public override void PrintFields(){ Console.WriteLine("x={0},y={1}",x,y); } } 当使用new B()创建B的实例时,产生什么输出? X=1,Y=0 6. 下面的例子中 using System; class A{ public static int X; static A(){ X=B.Y+1; } } class B{ public static int Y=A.X+1; static B(){} static void Main(){ Console.WriteLine("X={0},Y={1}",A.X,B.Y); } } 产生的输出结果是什么? x=1,y=2 7. new有几种用法 第一种:new Class(); 第二种:覆盖方法 public new XXXX(){} 第三种:new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数 8. 如何把一个array复制到arrayList里? 调用Clone()方法 9. DataGrid.DataSource可以连接什么数据源? IList接口,包括一维数组。 IListSource接口,例如,DataTable和DataSet类。 IBindingList接口,例如,BindingList类。 IBindingListView接口,例如,BindingSource类。 10. 概述反射和序列化 反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。 序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。 11. 概述o/r mapping的原理。 主要是利用反射等技术手段,自动生成SQL,将业务对象持久化到关系数据库中。 12. 类成员有()种可访问形式。 实例成员通过类的实例访问,静态成员通过类访问。 13. 用sealed修饰的类有什么特点。 sealed修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。 密封类不能同时为抽象类。 14. 执行下面代码后: String strTemp="abcdefg某某某"; Int i System.Text.Encoding.Default.GetBytes(strTemp).Length; Int j =strTemp.Length; 问:i=(14);j=(11) i=(14);j=(11)中文两个字节 15. C# 中,string str = null与string str="",请尽量用文字说明区别。 (要点:说明详细的内存空间分配) 前者只声明变量不分配内存;后者指向一个值为空字符串的实例,分配内存空间。 16. 详述.NET里class和struct的异同。 类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“堆栈上”或“内联上”。 17. 概述.NET里对remoting和webservice两项技术的理解和实际中的应用。 都可以实现程序逻辑的远程调用,从而创建分布式应用,但remoing接口只能在.net 平台上实现。remoting支持tcp/ip协议、二进制序列化、事件,webservice都不支持。 18. 什么是中的用户控件? 用户控件就是扩展名为.ascx的特殊页面,它不能象.aspx页面一样直接访问,用户控件用于在同一应用程序中实现功能和外观的重用。 19. 列举一下你所了解的XML技术及其应用。 XML用以在异构系统间传递或保存数据,比如:配置文件、RSS、WEB SERVICE。 20. 值类型和引用类型的区别?写出C#的样例代码。 两者的主要区别在于:值类型变量间赋值是值拷贝,引用类型变量间赋值是地址拷贝。代码略。 21. https://www.360docs.net/doc/1110672173.html,中常用的对象有哪些?分别描述一下。 Connection Command DataReader DataAdapter DataSet DataTable DataView等等。描述略。 22. 如何解释委托?事件是不是一种委托? (1)相当于C和C++的函数指针,委托使得方法可以做为参数传递,并且可以提高程序的可拓展性; msdn2005中,委托具有以下特点: 委托类似于C++ 函数指针,但它是类型安全的。 委托允许将方法作为参数进行传递。 委托可以链接在一起。例如,可以对一个事件调用多个方法。 方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。 C#2.0版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。 (2)事件是一种特殊的委托。 23. UDP连接和TCP连接的异同。 都可以实现远程通信,主要区别在于TCP需要保持连接而UDP不需要,因此UDP具有更高的效率和更少的资源占用,而TCP传输数据更加可靠。 24. 什么是code-Behind技术。 代码后置,即HTML代码与C# 代码写在不同的文件中,使得代码更整洁和便于维护。 25. .net中读写XML的类都归属于哪些命名空间? System.Xml。 26. 什么是SOAP,有哪些应用? SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象和代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:https://www.360docs.net/doc/1110672173.html,/2521621.html。 27. 如何部署一个https://www.360docs.net/doc/1110672173.html,页面。 直接复制文件、复制网站、发布网站。 28. 简述private、protected、public、internal修饰符的访问权限。 private:私有成员,在类的内部才可以访问。 protected:保护成员,该类内部和继承类中可以访问。 public:公共成员,完全公开,没有访问限制。 internal:在同一命名空间内可以访问。 29. 列举https://www.360docs.net/doc/1110672173.html,页面之间传递值的几种方式。 (1)使用QueryString; (2)使用Form提交,如:Server.Transfer方法; (3)使用Application/Session/Cookie等系统对象。 30. 一列数的规则如下:1、1、2、3、5、8、13、21、34……求第30位数是多少,用递归算法实现。 Public class MainClass { Public static void Main() { Console.WriteLine(Foo(30)); } Public static int Foo(int i) { if(i==1||i==2) return 1; return Foo(i-1)+Foo(i-2); } } 31. override与重载的区别。 override与重载的区别。重载是方法的名称相同,参数个数或参数类型不同,进行多次重载以适应不用的需要 Override是对基类中成员的重写,实现多态。 32. 如果一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 公开的静态变量、基于文件、基于数据库。 33. 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? foreach(Control control in this.form1.Controls) { If(control is TextBox) ((TextBox)control).Text = string .Empty; } 34.请编程实现一个冒泡排序算法? int [] array = new int [*]; int temp = 0; for(int i = 0; i { for( int j = array.length-1;j>=1;j--) { if(array[j+1] < array[j]) { temp = array[j+1]; array[j+1] = array[j]; array[j] = temp; } } } 35.描述一下C#中索引器的实现过程,是否只能根据数字索引? ArrayList al =new ArrayList(); Public object this [int index]{ Get{ return al[indext]; } Set{ al[indext] = value; } } 不是,可以用任意类型。 36.用.net做B/S结构的系统,您是用几层结构来开发的,每一层之间的关系以及为什么要这样分层? 一般分为3层:数据访问层,业务层,表现层。数据访问层实现对数据库的数据操作。业务逻辑层为业务逻辑的具体实现。表现层实现与用户之间的交互,负责数据的输入与输出。 关系:业务逻辑层调用数据访问层;表现层调用业务逻辑层。 优点:使软件具有良好的可扩展性和可维护性;分工明确,易于团队开发,降低了开发难度。 37.在下面的例子里 using System; class A { Public A() { PrintFields(); } Public virtual void PrintFields(){ } class B { int x=1; int y; public B() { y=-1; } Public override void PrintFields() { Console.WriteLine(“x={0},y={1}”,x,y); } } 当使用New B()创建B的实列时,产生什么输出? X=1,Y=0; x=1, y=-1; 38.什么叫做应用程序域? 应用程序域是在进程中承载程序集的一个逻辑分区,进程通过应用程序域实现隔离以保护进程安全。 39.CTS,CLS,CLR分别作何解释? CTS:通用类型系统。CLS:通用语言规范。CLR公共语言运行时。 40.什么是拆箱和装箱? 从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 41.什么是受管制的(托管)代码?非托管代码? 即托管代码。由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,列如自动回收垃圾, 运行库检查和安全支持等。这些服务帮助提供独立平台和语言的,统一的托管代码应用程序行为。 非托管代码。在公共语言运行坏境的外部,有操作系统直接运行代码。非托管代码必须提供自己的垃圾回收,类型检查和安全支持等服务,他与托管代码不同,后者从公共语言中获得这些服务。 42.什么是强类型系统? 每个变量和对象都必须具有声明类型。 强类型和弱类型的区别在于,在编码过程中是否要指明数据类型,作为强类型必须要指定数据类型,编译器为其分配相应的存储空间(如C/C#,pascal)否则编译出错。而弱类型不一定需要指定数据类型,编译器会用相同的空间去分配各中数据类型,除非你指定了。强类型语言在编译阶段的安全性上要高于弱语言型。 43.在.net中,配件的意思是? Assembly(程序集),程序集的结构:程序集清单,类型元数据,MSIL代码和资源或程序集(中间语言,源数据,资源,装配清单)。 44.常用的调用WebService的方法有那哪些? (1)使用WSDL.exe命令行工具; (2)使用https://www.360docs.net/doc/1110672173.html,中的Add Web Reference菜单选项。 https://www.360docs.net/doc/1110672173.html, Remoting 的工作原理是什么? 服务器端向客户端发送一个进程编号,一个程序或编号,以确定对象的位置。 46.根据(delegate)委托的知识,请完成以下用户控件中代码片段的填写: Namespace test { Public delegate void OnDBOpeate(); Public class UserControlBase; https://www.360docs.net/doc/1110672173.html,erControl { Public event OnDBOperate OnNew; privatevoidtoolBar_ButtonClick(objectsender, System.Windows.Forms.TooBarButtonClicklEventArgs e) { If(e.Button.Equals(BtnNew)) { //请在以下补齐代码用来调用OnDBOperate 委托签名的OnNew事件} } } If(OnNew !=null) OnNew(); 47.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。 Public void test(int i) { lock(this) { if(i>10) { i--; test(i); } } } 不会发生死锁,因为是同一线程内部的调用。 48.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击的每行值进行排视图中所有行(排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路。 创建自定义控件,继承自ListView类,重写相应事件以实现重新排列Item。 49.写出一条SQL语句:取出表A中第1条到40条的记录(SQLServer,以自动增长的ID作为主键,注意ID可能不是连续的。) select top 10 * from A where id not in (select top 30 id from A) 50.面向对象的语言有封装性, 继承性, 多态性。 51.能用foreach遍历访问的对象需要实现_________接口或声明________方法的类型。 Ienumerable , GetEnumerator. 52.GC是什么?为什么要有GC? GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。需要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc() 53.String s=new String(“xyz”);创建了几个String Object? 两个对象,一个是”xyx”,一个是指向”xyx”的引用对象s。 54.abstract class 和interface 有什么区别? 抽象类可以有具体的实现的成员,而接口没有;接口可以多重继承而抽象类不可以;抽象类的子类使用override 关键字对父类成员进行重写,而接口的派生类直接实现接口成员。 55.启动一个线程是用run()还是start()? start()。 56.接口是否可以继承接口?抽象类是否可以实现(implements)接口?抽象类是否可以继承实体类(concrete class)? 接口可以继承接口。抽象类可以实现()接口?抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。 57.构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写override,但可以被重载。 58.是否可以继承String 类? String类是sealed类故不可以继承。 59.try{} 里有一个return语句,那么紧跟着在这个try后的finally{}里的code会不会被执行,在return 前执行。 会执行,在return前执行 60.两个对象值相同(x.eauals(y)==true),但却可有不同的hash code,这句话对不对? 不对,有相同的hash code。 61.stich 是否能作用在byte上,是否能作用在long上,是否能作用在String上? 都可以。 62.sleep()和wait(0有什么区别? Sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在哪个时刻,其它线程可能正在运行而且没有被调度未放弃执行,除非以下两种情况: (1)”醒来”的线程具有更高的优先级 (2)正在运行的线程因为其他原因而阻塞。 Wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 63.short s1=1; s1=s1+1;有什么错?short s1=1;s1 +=1;有什么错? short s1=1; s1=s1+1;有错,s1是short型,s1+1是int型,不能显示转换为short型。可修改为s1=(short)(s1+1)。Short s1+=1正确。 64如何处理几十万条并发数据? 在工作中,我们经常处理某一行记录时发现有多个线程同时处理的现象(SQLSERVER),尽管系统采取相应的锁的策略来防止争用时死锁的现象,但对于一个频繁的处理记录来说,由于系统的多线程机制,所以多个事务处理同一记录时由于事务的大小不同而时间还是有先后的,这就可能造成对数据库的脏读,通过对多种方法的研究发现使用timestamp是比较好的解决方法,即在使用最频繁的表中添加一列字段,类型timestamp,添加完毕后系统会自动生成相应的唯一值,如果数据记录有任何改动,timestamp值也会做相应的调整,采用这种方法,我们在事务处理开始时,先记录旧的timestamp值,等真正修改数据时,检查timestamp是否相同,如果相同,说明数据不是脏的继续处理,如果不同则说明处理之前有其他线程进行了修改,本次可以放弃,以确保数据的安全一致。 65.Session有什么重大BUG,微软提出了什么方法加以解决? 是iis中由于有进程回收机构,系统繁忙的话Session会丢失,可以用Sate server 或SQL Server数据库的方式存取Session 不过这种方式比较慢,而且无法捕获Session的END 事件。 66.进程和线程的区别? 进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个可以有多个线程,这些线程共享这个进程的资源。 67.堆和栈的区别? 堆和栈是程序内存管理的两种方式。 栈:由编译器自动分配,释放。 堆:一般有程序员分配释放。 68.成员变量和成员函数前加static的作用? 他们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实列的数量,类成员函数负责这种统计的动作。 https://www.360docs.net/doc/1110672173.html, 与ASP相比主要有哪些进步? asp解释执行;aspx编译执行,性能提高。基于.net平台,线程能力强大,丰富的服务器控件,方便调试。 70产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 Int[] intArr=new int[100]; ArryList myList = new ArryList(); Random md = new Random(); While(myList.Count <100) { Int num=rnd.Next(1,101); If(!myList.Contains(num)) myList.Add(num); } For(int i=0; i<100; i++) intArr[i] = (int)myList[i]; 71.请说明在.net中常用的几种页面间传递参数的方法,并说出它们的优缺点。 Session 简单,但容易丢失 Application 全局,占用资源 Cookie 简单,但可能不支持,可能被伪造 Input type=”hidden”简单,可能被伪造 url参数简单,显示于地址栏,长度有限 数据库稳定,安全,但性能相对弱 72.请指出GAC的含义? 全局程序集缓存。 73.向服务器发送请求有几种方式? Get, post。Get不提交表单,post提交表单。 74.DataReader与DataSet有什么区别? 一个是只能向前的只读游标,一个是内存中的表。 75.软件开发过程中一般有几个阶段?每个阶段的作用? 需求分析,概要/详细设计,代码编写,测试,部署。 https://www.360docs.net/doc/1110672173.html,ing的用法。 77.需要实现对一个字符的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话。仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一 个。 string inputStr=”xx xx”; inputStr=Regex.Replace(inputStr.Trim(),”[ ]*”,””); 78.下面这段代码输出什么?为什么? int i=5; int j=5; if(Object。ReferenceEquals(i,j)) Console.WriteLine(“Equal”); Else Console.writeLine(“Not Equal”); 不相等,因为比较的是对象 79.什么叫做SQL注入,如何防止?请举例说明。 利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL 注入的标准释义。就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。 防止: (1)对输入内容进行过滤,去掉有可能的威胁; (2)对于用来执行查询的数据库账户,限制其权限; (3)在查询语句中使用参数; (4)用存储过程来执行所有的查询; (5)将用户登录名称、密码等数据加密保存; 80.什么是反射? 通过对MSIL的查询,动态获取程序集信息。可实现程序的动态绑定、类型的动态实例及调用以及运行期定义类型。 81.Singleton设计模式 Public class SingleTom { Private staic SingleTom_instance; Private SingleTom(){} Public staic SingleTom CreateInstance() { If(_instance=null) _instance=new SingleTom(); Return_instance; } } 82.什么是Application Pool? 应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。 Windows2003同时支持两种工作模式,默认为ISS6.0工作进程隔离模式。工作进程隔离模式防止一个应用程序或站点停止了而影响另一个应用程序或站点,大大增强了IIS的可靠性。 83.什么是虚函数?什么是抽象函数? 虚函数:有实现,可以被子类重写;抽象函数:无实现,必须被非抽象子类重写。 84.什么是XML? XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符合,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL 和XPath等。 85.什么是Web’ Service?UDDI? Web Service 便是基于网络的、分布式的模式化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。 UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service 提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service 注册,以使别的企业能够发现的访问协议的实现标准。 86.列举一下你所了解的XML技术及其应用。 Xml用于配置,用于保存静态数据类型.接触XML最多的是wen Services..和config。 87.什么是SOAP,有哪些应用。 Simple object access protocol,简单对象接受协议,以xml为基本编号结构,建立在已有通信协议上(如http,不过据说ms在搞最低层的架构在tcp/ip上的soap)的一种规范WebService 使用的协议。 88.C#中property与attribute的区别,她们各有什么用处? 一个是属性,用于存取类的字段,一个特性,用来标识类,方法等的附加性质。 89.XML与HTML的注意区别。 (1)XML是区分大小写字母的,HTML不区分; (2)在HTML中,如果上下文清楚地显示出段落或者列表链在何处结尾,那么你可以省略 (3)在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/字符作为结尾。这样分析器就知道不用查找结束标记了; (4)在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不能的; (5)在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。 90.C#中的三元运算符是? ?: 91.当整数a赋值给一个object对象时,整数a将会被? 装箱 92.类成员有_____种可访问形式? 2 93.public static const int A=1;这段代码有错误么?是什么? Const不能用static修饰。 94.fioat f=-123.567F;int i=(int)f;i的值现在是______? -123。 95委托声明是关键是____? delegate。 96.用sealed修饰的类有什么特点? 97.在https://www.360docs.net/doc/1110672173.html,中所有的用户控件都必须继承自__https://www.360docs.net/doc/1110672173.html,erControl___? 98.在.Net中所有可序列化的类都被标记为____[serializable]___? [serializable]。 99.在.Net托管代码中我们不用担心内存漏洞,这是因为有了__gc___? GC https://www.360docs.net/doc/1110672173.html,ing System; class A { Public virtual void F(){ Console.WriteLine(“A.F”) } } Abstract class B:A { Public abstract override void F(); 答:abstract override 是不可以一起修饰. }//new public abstract void F(); 101.当类T只声明了私有实例构造函数时,则在T的程序文本外部,____可以_____(可以or 不可以)从T派生出新的类,不可以___(可以or不可以)直接创建T的任何实例。 不可以,不可以。 102.下面这段代码有错误么? switch(i){ case():答://case()条件不能为空 CaseZero(); break; case 1: CaseOne(); break; case 2: default;答://wrong,格式不正确 CaseTwo(); break; } 103.在.Net中,类System.Web.UI.Page可以被继承么? 可以。 104.在.net的错误处理机制是什么? .net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。 105.利用operator声明且仅声明了=,有什么错误么? 重载了“=”就必须重载“!=” 106.在.net(C#https://www.360docs.net/doc/1110672173.html,)中如何取消一个窗体的关闭。 private void form1_Closing(object sender, https://www.360docs.net/doc/1110672173.html,ponentModel.CancelEventArgs e) { e.Cancel=true; } 107.在.net(C# or https://www.360docs.net/doc/1110672173.html,)中,Appplication.Exit还有Form.Close有什么不同? 一个是退出整个应用程序,一个是关闭其中一个form。 108.在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。 比如美国用$10,321.50和$122,235,401.22而在英国则为&10321.50和£122 235和£122 235 401.22. System.Globalization.CultureInfo MyCulture=new System.Global-ization.CultureInfo(“en-US”) //System.Globalization.CultureInfo MyCulture=new System.Global-ization.CultureInfo(“en-GB”;为英国货币类型 decimal y=99999999999999999999999999999m; string str=String.Format(MyCulture,”My amount={0:c}”,y)); 109.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则: (1)密码单词的最小长度是两个字母,可以相同,也可以不同; (2)K不可能是单词的第一个字母; (3)如果L出现,则出现次数不止一次; (4)M不能使最后一个也不能使倒数第二个字母; (5)K出现,则N就一定出现; (6)O如果是最后一个字母,则L一定出现。 问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词? A)K B)L C)M D)N 答案:B 问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少? A)1个B)3个C)6个D)9个 答案:A 问题三:下列哪一个是单词密码? A)KLLN B)LOML C)MLLO D)NMKO 答案:C 110.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动? 62移动成2的6次方。 111.对于这样的一个枚举类型: enum Color:byte { Red, Green, Blue, Orange } 答案:string[] ss=Enum.GetNames(typeof(Color)); Byte[] bb=Enum.GetValues(typeof(Color)); 112.C#可否对内存进行直接的操作? 在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法。 https://www.360docs.net/doc/1110672173.html,相对于ADO等主要有什么改进? 1:https://www.360docs.net/doc/1110672173.html,不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游4:,可以断开connection而保留当前数据集可用5:强类型转换6:xml支持。 114.写一个HTML页面,实现以下功能,左键点击页面是显示“您好”,右键点击时显示“禁 止右键”。并在2分钟后自动关闭页面。 setTimeout(’window.close();’,3000); function show() { If(window.event.button=1) { Alert(“左”); } else if(window.event.button=2) { Alert(“右”); } } 注:S为script 115.大概描述一下https://www.360docs.net/doc/1110672173.html,服务器控件的生命周期。 初始化加载视图状态处理回发数据加载发送回发更改通知处理回发事件预呈现保存状态呈现处置卸载 116.&和&&的区别 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 117.Overloaded的方法是否可以改变返回值的类型? Overloaded的方法是可以改变返回值的类型。 118.<%#%>和<% %>有什么区别? <%#%>表示绑定的数据源; <% %>是服务器端代码块。 119.你觉得https://www.360docs.net/doc/1110672173.html,2.0(VS2005)和你以前使用的开发工具(.Net1.0或其他)有什么最大的区别?你在以前的平台上使用的哪些开发思想(pattern/architecture)可以移植到https://www.360docs.net/doc/1110672173.html,2.0上(或者已经内嵌在ASP。NET2.0中) (1)https://www.360docs.net/doc/1110672173.html,2.0把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码;(2)同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无法在页面嵌入服务器端代码获得帮助提示; (3)代码和设计界面切换的时候,2.0支持光标定位,这个我比较喜欢; (4)在绑定数据,做表的分页。UPDATE,DELETE等操作都可以可视化操作,方便了初学者;(5)在https://www.360docs.net/doc/1110672173.html,中增加了40多个新的控件,减少了工作量。 120.重载与覆盖的区别? (1)方法的覆盖是子类和父类的关系,是垂直的关系;方法的重载是同一个类中方法之间的关系,是水平关系; (2)覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间 的关系; (3)覆盖要求参数列表相同;重载要求参数列表不同; (4)覆盖关系中,调用哪个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。 121.什么是WSE?目前最新的版本是多少? Web Services Enhancements 2.0 for https://www.360docs.net/doc/1110672173.html,(WSE)是一个用来建设Web服务的.NET 类库,它支持最新的Web服务协议。WSE可使开发人员跨安全平台建设可升级的、安全的Web服务。目前最新版本2.0。 122.以下代码能否通过编译?如果不能,请改成正确代码,并说明原因。 <%> int subtract(int num1,int num2){ return num1-num2; } <%>
<%>
int number=100;
while(number>0){
Response. Write(“value:” +number+”
”);
number=subtract(number,1);
}
<%>
123. DataReader与DataSet的异同。
DataReader与DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库。任何对SqlConnection的操作都会引发DataReader的异常。因为DataReader每次只在内存在加载一条数据,所以占用的内存是很小的。因为DataReader的特殊性和高能性,所以DataReader是只进的,你读了第一条后就不能再去读取第一条了。
DataSet则是将数据一次性加载在内存中。抛弃数据库连接,读取完毕即放弃数据库连接,因为DataSet将数据全部加载在内存中,所以比较消耗内存。但是确比DataReader要灵活,可以动态的添加行、列、数据,对数据库进行回传更新操作。
124.在.net(C# or https://www.360docs.net/doc/1110672173.html,)如何启动另一个程序。
125.手写js清空页面中所有TextBox的值。
Function clearTextbox ()
{
var boxes=document.getElementsByTagName(“input”);
for(var i=0; i { If(boxes[i].type==”text”) boxes[i].value=””; } } 126.手写js省市级联 function changeCity() { var province=document.myform.selProvince.value; var cityList=new Array(); cityList[‘山东省’]=[‘济南’,’青岛’,’淄博’,’枣庄’,’东营’,’烟台’]; cityList[‘四川省’]=[‘成都’,’绵阳’,’德阳’,’自贡’,’内江’,’乐山’]; cityList[‘湖北省’]=[‘武汉’,’宜昌’,’荆州’,’襄樊’,’黄石’,’荆门’]; document.myform.selCity.options.length=0; //获得省份选择的索引,这里使用标识 var pIndex=document.myform.selProvince.value; var newOption1; document.myform.selCity,options.length=0; for(var j in cityList[pIndex]) { newOption1=new Option(cityList[pIndex][j] ,cityList[pIndex][j]); document.myform.selCity.options.add(newOption1); } } 127.写一个html页面,实现以下功能:当一个文件获得焦点时弹出“2分钟关闭”确认框,点击确定后2分钟后制动关闭。 JS: function doConfirm(){ if(confirm(“按下确认2分钟后自动关闭?”)) setTimeout(“window.close()”,120000); } 页面标记: 128.使用JS验证以13开头的手机号码 function chkPhoneNo(phone) { var reg=/^13\d{9}$/; return reg.test(phone); } 129.用存储过程实现分页 CREATE PROCEDURE select_paged_books @pageIndex int,--开始索引(从1开始) @pageSize int –分页尺寸 AS BEGIN select top(@pageSize)*from books where id not in (select top((@pageIndex-1)*@pageSize) id from books order by id)order by id END GO 130.求2个数的最大公约数。 static void Main(string [] args) { //求两个数的最大公约数 int num1=int.Parse(Console.ReadLine()); int num2=int.Parse(Console.ReadLine()); int min=num1 for(int i=min-1;i>1;i++) { if(num1%i==0&&num2%i==0) { Console.WriteLine(“{0}和{1}的最大公约数是:{2}”,num1,num2,i); break; } } } 131.T表: Id Type Num D es 1 A 9 a1 2 B 5 b1 3 C 7 c1 4 A 6 a2 5 B 8 b2 6 B 4 c2 要求:使用一条语句,查询出该表中的每个Type类型的Num值最大的那条的信息(该表中的结果应该为Id是1、3、5的记录) SELECT Id,Type,Num,Des FROM T AS t1 1. 简要说一下.Net的编译过程. 答: NET平台中代码的物理单元是可移植可执行程序(protable executable,PE)格式,编译程序和库时,和平常一样生成EXE与DLL 文件,但在.NET框架下,任何可执行程序项目都链接到公共语言运行库,并由它代理编译和执行。 .NET中程序编译的最主要部分是汇编(assembly),汇编包括一个manifest,它是一组元数据,标识汇编向其他应用程序提供的文件和类型;manifest还可以包含强名称(strong name)、组合汇编名、版本信息和可选文化信息。在使用强名称的汇编中,元数据包含一个公用密钥签名,公共语言运行库用其验证汇编自编译之后是否发生改变。 汇编还可以包括数字签名,例如用验证码(authenticode certificate)验证代码源,以解决在公共语言运行库保证汇编签名的真实性问题。汇编分为专用汇编和共享汇编。专用汇编只在安装这个汇编的应用程序中使用,而共享汇编则安装在全局汇编缓冲区(global assembly cache,GAC)中,全局汇编缓冲区用汇编的引用计数和版本信息管理库,包括框架的基类库(base class library,BCL),并通过公共语言运行库避免因库的版本冲突而形成DLL Hell的情形。123 选择专用汇编和共享汇编是一个重要决策。将汇编安装到全局缓冲区后,就可以在多个应用程序中使用汇编的一个备份,但是还需要用Windows Installer之类的安装程序将应用程序安装到计算机上。如果使用专用汇编,则得到Microsoft所谓的"XCOPY部署",这样用户可以将应用程序复制到目标计算机上,方便地进行安装。 .NET程序编译过程如图1.2所示。 2. https://www.360docs.net/doc/1110672173.html,与ASP的区别 .NET开发人员试题(综合) 每题5分 1、用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 2、软件开发过程一般有几个阶段?每个阶段的作用? 3、请列举一些您用到过的设计模式以及在什么情况下使用该模式? 4、您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平? 5、您离职的原因是什么? .NET开发人员试题(基础) 一、填空:每题2分 1.面向对象的语言具有继承性、封装性、多态性。 2. 能用foreach遍历访问的对象需要实现 IEnumerable _接口或声明 3.委托声明的关键字是delegate ? 4.在.Net托管代码中我们不用担心内存漏洞,这是因为有了gc __? 5.当类T只声明了私有实例构造函数时,则在T的程序文本外部,不可以(可以or 不可以)从T派生出新的类,不可以(可以or 不可以)直接创建T的任何实例。 二、单选:每题2分 6.在对SQL Server 数据库操作时应选用(A)。 a)SQL Server .NET Framework 数据提供程序; b)OLE DB .NET Framework 数据提供程序; c)ODBC .NET Framework 数据提供程序; d)Oracle .NET Framework数据提供程序; 7.以下描述错误的是(A) a)在C++中支持抽象类而在C#中不支持抽象类。 b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。 c)在C#中可使用new 修饰符显式隐藏从基类继承的成员。 d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。 8.C#的数据类型有(A) a)值类型和调用类型; b)值类型和引用类型; c)引用类型和关系类型; d)关系类型和调用类型; 9.下列描述错误的是(D) a)类不可以多重继承而接口可以; b)抽象类自身可以定义成员而接口不可以; c)抽象类和接口都不能被实例化; d)一个类可以有多个基类和多个基接口; 10.在DOM中,装载一个XML文档的方法(D) a)save方法b)load方法c)loadXML方法d)send方法 NET面试题一 想看答案往下翻 .NET技术题 1.类成员有几种可访问性? 2.用sealed修饰的类有什么特点 3.执行下面代码后: String strTemp ="abcdefg 某某某"; Int i System.Text.Encoding.Default.GetBytes(strTemp).Length; Int j = strTemp.Length; 1.问:i,j分别为多少并说明理由 4.概述三层结构体系? https://www.360docs.net/doc/1110672173.html,中读写XML的类都归属于哪些命名空间? 6.a=10,b=15,在不用第三方变量的前提下,把a,b的值互换? 7.对数据的并发采用什么办法进行处理较好。 8.override与重载的区别? 9.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您 有几种方法进行处理? 10.什么叫应用程序域 11.CTS、CLS、CLR分别作何解释 12.什么是装箱和拆箱 13.什么是Code-Behind技术 14.GC是什么? 为什么要有GC 15.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 16.数组有没有length()这个方法? String有没有length()这个方法? 17.堆和栈的区别? 18.请指出GAC的含义 19.DataReader与Dataset有什么区别 20.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义? 21.C/S结构模式与B/S结构模式的主要区别是什么 22.C#中的数组类型有何特点? 23.ASP。NET与ASP相比,主要有哪些进步? 24.结构和类的区别是什么? 25.&和&&的区别 26.<%#%>和<%%>有什么区别? 27.在https://www.360docs.net/doc/1110672173.html,中,下列代码运行后的输出结果是? DataTable dt = new DataTable(); dt.Columns.Add(“编号“,typeof(System.Int16)); dt.Columns.Add(“成绩“,typeof(System.Int16)); for(int i=1; i<=3;i++){ dataRow dr = dt.NewRow(); dr[0]=i; 1.下面有关用户控件与aspx页面区别说法错误的是(B) A.用户控件不能再包含 Net面试题 NET 面试题一 .NET 技术题 1. 类成员有几种可访问性? 答:4 种, private : 私有成员, 在类的内部才可以访问。公共成员,完全公开,没有访问限制。 在同一命名空间内可以访问 protected : 保护成员,该类内部和继承类中可以访问。 public : internal: 2. 用 sealed 修饰的类有什么特点 sealed 修饰符用于防止从所修饰的类派生出 其它类。如果一个密封类被指定为其他类的基类,则会发生编 译时错 3. 执行下面代码后: String strTemp ="abcdefg 某某某"; Int i System.Text.Encoding.Default.GetBytes(strTemp).Length; Int j = strTemp.Length; 1. 问:i,j 分别为多少并说明理由 答:i=(14 ) ;j=(11 ) 中文两个字节 4. 5. 6. 概述三层结构体系? 答:web/business/dataaccess net 中读写 XML 的类都归属于哪些命名空间, 答:System.Xml a=10,b=15,在不用第三方变量的前提下,把 a,b 的值互换, 答:a=a+b;b=a-b;a=a-b 7. 对数据的并发采用什么办法进行处理较好答: 可以控 制连接池的连接数量条件好的话可以用负载平衡 8. override 与重载的区别, 重写是方法名与返回类型一致,而重载是方法名与返回类型一致,参数个数不同 答:重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需 要 Override 是进行基类中函数的重写。为了适应需要 9. 如果在一个 B/S 结构 的系统中需要传递变量值,但是又不能使用 Session、Cookie、Application,您 1. 简述private、protected、public、internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举https://www.360docs.net/doc/1110672173.html, 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、3 4...... 求第30位数是多少,用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i == 0) return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#中的委托是什么?事件是不是一种委托? 答: 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答: override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。 1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举https://www.360docs.net/doc/1110672173.html, 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、3 4...... 求第30位数是多少,用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i <= 0) return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#中的委托是什么?事件是不是一种委托? 答: 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答: override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。 6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答: this.Server.Transfer 最新的.Net面试题及答案 文章分类:.net编程 引用 最新的.Net面试题及答案 1.a=10,b=15,在不用第三方变题的前提下,把a,b的值互换 a=a+b;b=a-b;a=(a-b)/2;b=b+a 2:已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组public class TestQuickSort { private int[] array = null; private void quickSort(int lowest, int highest) { if (array == null || lowest < 0 || lowest >= highest || highest >= array.length) { return; } int low = lowest; int high = highest; int key = low++; for (; low <= high;) { if (key < high) { if (array[key] > array[high]) { array[high] = array[key] + (array[key] = array[high]) * 0; key = high; } high--; } if (key > low) { if (array[key] < array[low]) { array[low] = array[key] + (array[key] = array[low]) * 0; key = low; } low++; } } quickSort(lowest, key - 1); quickSort(key + 1, highest); } /** * @param args */ .net软件工程师面试题 基础题: 1.简述string[]、ArrayList、List的区别。 数组: 优点: o数组在内存中是连续存储的,索引速度非常快; o赋值和修改元素也很简单; 不足: o两个数据之间插入数据比较麻烦; o声明数组的时候,必须指明数组的长度,数组长度过长会造成内存浪费,数组的长度过短,会造成数据溢出错误。 ArrayList: 优点: https://www.360docs.net/doc/1110672173.html, framework 提供的用于数据存储和检索的专用类 o大小依据存储的数据来动态扩展和收缩 o继承IList,可以方便的进行数据的添加、插入和删除 缺点: o允许插入不同类型的数据,都当做object类型处理 o数据处理时可能出现类型不匹配的错误 o存在装箱(值=》引用)拆箱的操作,会带来很大的性能损耗 List: 优点: o声明List集合时,需要声明集合内数据的对象类型 o避免了类型安全问题和装箱拆箱的性能问题 2.简述装箱和拆箱操作中的性能损耗是如何产生的。 3.简述对https://www.360docs.net/doc/1110672173.html,中的事件机制的理解。 4.在一个https://www.360docs.net/doc/1110672173.html,的三层结构系统中,以登录操作为例,简述在各层中如何组织代码。 5.简述相比DATASET,实体类在WEB项目中的优点与缺点。 6.简述GC是如何工作的。 Java采用VM(Virtual Machine)机制,由VM来管理程序的运行当然也包括对GC管理。90年代末期.NET出现了,.NET采用了和Java类似的方法由CLR(Common Language Runtime)来管理。 Garbage Collector(垃圾收集器,在不至于混淆的情况下也成为GC)以应用程序的root 为基础,遍历应用程序在Heap上动态分配的所有对象[2],通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是GC工作的原理。为了实现这个原理,GC有多种算法。比较常见的算法有Reference Counting,Mark Sweep,Copy Collection等等。目前主流的虚拟系统.NET CLR,Java VM和Rotor都是采用的Mark Sweep算法。 NET软件工程师48个面试题目 .NET软件工程师48个面试题目 一.填空题 1.面向对象的语言具有(继承)性、(多态)性、(封装)性。 2.能用foreach遍历访问的对象需要实现(IEnumberable)接口或声明(GetEnumberator)方法的类型。 3.列举https://www.360docs.net/doc/1110672173.html,中的五个主要对象(Command)、(Connection)、(DataReader)、(DataSet)、(DataAdapter)。 4.C#中的三元运算符是__(?:)__ 5.当整数a赋值给一个object对象时,整数a将会被__(装箱)___ 6.类成员有__(3)__种可访问形式 7.float f=-123.567F;int i=(int)f;i的值现在是_(-123)__ 8.委托声明的关键字是___(delegate)_ 9.在https://www.360docs.net/doc/1110672173.html,中所有的自定义用户控件都必须继承自_ (https://www.360docs.net/doc/1110672173.html,erControl) __ 10.在.Net中所有可序列化的类都被标记为__[serializable]___ 11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ GC __ 12.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不能够_(能够or 不能够)从T派生出新的类,_不能够_(能够or 不能够)直接创立T的任何实例。 二.选择题 1.以下叙述正确的是:BC A. 接口中能够有虚方法。 B. 一个类能够实现多个接口。 C. 接口不能被实例化。 D. 接口中能够包含已实现的方法。 2.从数据库读取记录,你可能用到的方法有:BCD A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader 3.对于一个实现了IDisposable接口的类,以下哪些项能够执行与释放或重置非托管资 相关的应用程序定义的任务?(多 选) ( ABC ) A.Close B.Dispose C.Finalize D. using E.Quit 4.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD ) A.使用ref参数,传递到ref参数的参数必须最先初始化。 B.使用out参数,传递到out参数的参数必须最先初始化。 C.使用ref参数,必须将参数作为ref参数显式传递到方法。 .net软件工程师面试题 3 .软件测试方法分为()()。 4 . .NET通过对各语言先编译成(),然后再执行时用()将其编译成本地平台代码,来实现异构平台下对象的互操作 5 .在SQL SERVER中游标的声明的语句是()释放的语句是()。 6 . SQL SERVER的编程语言是()语言 7 .委托声明的关键字是()。 8 .在MS SQL Server中,用来显示数据库信息的系统存储过程是()9. SQL语言中,用于事务回滚的语句是()。10 .如果两个实体之间具有M : N联系,则将它们转换为关系模型的结果是()个表。11 . Codebehind 主要是通过把()和()放在不同的文件中来实现代码分离的。12 .在C#中由值类型转换为引用类型称为(),有引用类型转换为值类型称为()13 . SQL SERVER 中索引类型包括的三种类型分别是()()()。14 .软件工程的三大文档()()()。15.在SQL SERVER2000 中的四中约束()()() ()。二.简答题1.什么是中间语言(IL) ?它的作用? 2 . C#中与 基类通信的关键字什么?作用是什么? 3 .什么是元数据?4. ASP。NET和ASP的主要优势?5. Override与重载有什么区别?6 . SQL SERVER中的触发器的理解?7. ref与out有什么区别?8 .大概描述下ASP。NET中服务器控件的生命周期?9 .什么是强类型系统? 10 .触发器分为事前触发和事后触发,有何区别?11 .谈谈final, fin ally, fin alize 的区别。12 .在.n et (C# or https://www.360docs.net/doc/1110672173.html, )中, 一套.net面试题及答案 1、a=10,b=15,在不用第三方变量的前提下,把a,b的值互换 2、已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组 3、请简述面向对象的多态的特性及意义! 4、session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法 5、对数据的并发采用什么办法进行处理较好。 6、已知Oracle数据库有GD和ZS两个数据库,GD数据库v_s表有数据写入时,从v_s表中提取最新数据到ZS数据库的D_E表中。请问用什么办法解决这一问题?如果又碰到不能互访的问题时,又用什么办法解决? 7、已知Oracle数据库a,b现在在a用户权限下,访问b 数据库sql语句为select a.* From b a,请改正这一句Sql的写法 8、当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,以你的经验谈谈你的解决办法 9、算法分析AH 20060625 12 44 01 CAD001AH 20060625 12 44 01 CAD001AH 20060625 13 44 02 CAD001AH 2原理2、public class TestQuickSort {private int[] array = null;private void quickSort(int lowest, int highest) {if (array == null || lowest = highest|| highest >= array.length) {return;}int low = lowest;int high = highest;int key = low++;for (; low array[high]) {array[high] = array[key] + (array[key] = array[high]) * 0;key = high;}high–;}if (key > low) n e t高级工程师面试题集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN] .net软件工程师面试题 基础题: 1.简述string[]、ArrayList、List的区别。 数组: 优点: o数组在内存中是连续存储的,索引速度非常快; o赋值和修改元素也很简单; 不足: o两个数据之间插入数据比较麻烦; o声明数组的时候,必须指明数组的长度,数组长度过长会造成内存浪费,数组的长度过短,会造成数据溢出错误。 ArrayList: 优点: https://www.360docs.net/doc/1110672173.html, framework 提供的用于数据存储和检索的专用类 o大小依据存储的数据来动态扩展和收缩 o继承IList,可以方便的进行数据的添加、插入和删除 缺点: o允许插入不同类型的数据,都当做object类型处理 o数据处理时可能出现类型不匹配的错误 o存在装箱(值=》引用)拆箱的操作,会带来很大的性能损耗 List: 优点: o声明List集合时,需要声明集合内数据的对象类型 o避免了类型安全问题和装箱拆箱的性能问题 2.简述装箱和拆箱操作中的性能损耗是如何产生的。 3.简述对https://www.360docs.net/doc/1110672173.html,中的事件机制的理解。 4.在一个https://www.360docs.net/doc/1110672173.html,的三层结构系统中,以登录操作为例,简述在各层中如何组织代码。 5.简述相比DATASET,实体类在WEB项目中的优点与缺点。 6.简述GC是如何工作的。 Java采用VM(Virtual Machine)机制,由VM来管理程序的运行当然也包括对GC管理。90年代末期.NET出现了,.NET采用了和Java类似的方法由CLR(Common Language Runtime)来管理。 Garbage Collector(垃圾收集器,在不至于混淆的情况下也成为GC)以应用程序的root 为基础,遍历应用程序在Heap上动态分配的所有对象[2],通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是GC工作的原理。为了实现这个原理,GC有多种算法。比较常见的算法有Reference Counting,Mark Sweep,Copy Collection等等。目前主流的虚拟系统.NET CLR,Java VM和Rotor都是采用的Mark Sweep算法。 Java的内存管理实际就是对象的管理,其中包括对像的分配和释放。对于程序员来说,分配对象使用new关键字,释放对象时只是将对象赋值为null,让程序员不能够再访问到这个对象,该对象被称为“不可达”。GC将负责回收所有“不可达”对象的内存空间。 .NET 开发人员试题(综合) 每题 5 分 1用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 2、软件开发过程一般有几个阶段?每个阶段的作用? 3、请列举一些您用到过的设计模式以及在什么情况下使用该模式? 4、您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平? 5、您离职的原因是什么? .NET开发人员试题(基础) 一、填空:每题2分 1?面向对象的语言具有继承性、封装性、多态性。 2.能用foreach遍历访问的对象需要实现回umerable _ 接口或声明 3?委托声明的关键字是delegate ? 4.在.Net托管代码中我们不用担心内存漏洞,这是因为有了gc __? 5?当类T只声明了私有实例构造函数时,则在T的程序文本外部,不可以(可以or不可 以)从T派生出新的类,不可以(可以or不可以)直接创建T的任何实例。 二、单选:每题2分 6.在对SQL Server数据库操作时应选用(A)。 a)S QL Server .NET Framework 数据提供程序; b)O LE DB .NET Framework 数据提供程序; c)O DBC .NET Framework 数据提供程序; d)O racle .NET Framework 数据提供程序; 7.以下描述错误的是(A) a)在C++中支持抽象类而在C#中不支持抽象类。 b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并 且在同一处声明和定义类的成员。 c)在C#中可使用new修饰符显式隐藏从基类继承的成员。 d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。 8.C#的数据类型有(A) a)值类型和调用类型; b)值类型和引用类型; c)引用类型和关系类型; d)关系类型和调用类型; 9.下列描述错误的是(D) a)类不可以多重继承而接口可以; b)抽象类自身可以定义成员而接口不可以; c)抽象类和接口都不能被实例化; d)一个类可以有多个基类和多个基接口; 2 .列举https://www.360docs.net/doc/1110672173.html, 页面之间传递值的几种方式。 答: QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。 如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。 Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。 Session变量想必这个肯定是大家使用中最常见的用法了,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。 Cookie对象变量这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合https://www.360docs.net/doc/1110672173.html,内置对象Request来使用。 Server.Transfer方法这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer 方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、3 4...... 求第30位数是多少,用递归算法实现。 答:publicstaticint Calculate(int x) { int retInt = 1; if (x > 2) { return Calculate(x - 2) + Calculate(x - 1); } else return retInt; } 4.C#中的委托是什么?事件是不是一种委托? 答:委托是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联。可以通过委托调用方法。委托用于将方法作为参数传递给其他方法。 委托具有以下特点: 委托类似于C++ 函数指针,但它们是类型安全的。 委托允许将方法作为参数进行传递。 委托可用于定义回调方法。 委托可以链接在一起;例如,可以对一个事件调用多个方法。 方法不必与委托签名完全匹配。 事件是一种特殊的委托。 5.override与重载的区别 答: Override:要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,重写的基方法必须与override方法具有相同的签名。 net软件工程师面试题 基础题: 1.简述string[]、ArrayList、List的区别。 数组: 优点: o数组在内存中是连续存储的,索引速度非常快; o赋值和修改元素也很简单; 不足: o两个数据之间插入数据比较麻烦; o声明数组的时候,必须指明数组的长度,数组长度过长会造成内存浪费,数组的长度过短,会造成数据溢出错误。 ArrayList: 优点: https://www.360docs.net/doc/1110672173.html, framework 提供的用于数据存储和检索的专用类 o大小依据存储的数据来动态扩展和收缩 o继承IList,可以方便的进行数据的添加、插入和删除 缺点: o允许插入不同类型的数据,都当做object类型处理 o数据处理时可能出现类型不匹配的错误 o存在装箱(值=》引用)拆箱的操作,会带来很大的性能损耗 List: 优点: o声明List集合时,需要声明集合内数据的对象类型 o避免了类型安全问题和装箱拆箱的性能问题 2.简述装箱和拆箱操作中的性能损耗是如何产生的。 3.简述对https://www.360docs.net/doc/1110672173.html,中的事件机制的理解。 4.在一个https://www.360docs.net/doc/1110672173.html,的三层结构系统中,以登录操作为例,简述在各层中如何组织代码。 5.简述相比DATASET,实体类在WEB项目中的优点与缺点。 6.简述GC是如何工作的。 Java采用VM(Virtual Machine)机制,由VM来管理程序的运行当然也包括对GC管理。90年代末期.NET出现了,.NET采用了和Java类似的方法由CLR(Common Language Runtime)来管理。 Garbage Collector(垃圾收集器,在不至于混淆的情况下也成为GC)以应用程序的root 为基础,遍历应用程序在Heap上动态分配的所有对象[2],通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是GC工作的原理。为了实现这个原理,GC有多种算法。比较常见的算法有Reference Counting,Mark Sweep,Copy Collection等等。目前主流的虚拟系统.NET CLR,Java VM和Rotor都是采用的Mark Sweep算法。 .Net 基础知识 什么是面向对象 面向对象OO(object oriented) = 面向对象的分析OOA(Object Oriented Analysis) + 面向对象的设计OOD(Design) +......OOP; 通俗的解释就是万物皆对象,把所有的事物都看作一个个可以独立的对象(单元),它们可以自己完 成自己的功能,而不是像C 那样分成一个个函数; 现在纯正的OO 语言主要是java 和C#,C++也支持OO,C 是面向过程的。 阐述面向接口、面向对象、面向方面编程的区别面向对象不好解释,可以理解为以一切元素都是对象,在设计时以 对象为单位,考虑它的属性及 方法。设计中采用了封装、继承、抽象的手法 面向接口本身就是面向对象的,无所谓区别,只不过面向接口的好处是耦合性低 面向方面Aspect-Oriented Programming (AOP)就是大名鼎鼎的AOP。其实有点象struts里的拦截。 举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为D ata Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据 对象。 为了完成上述并发访问同一资源的功能,需要引入锁Lock 的概念,也就是说,某个时刻,当有 一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立即解锁unLocked,再 供其它访问类访问。 面向对象的思想主要包括什么?继承:子类拥有父类的所有数据和操作。 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内。多态:一个程序 中同名的不同方法共存的情况。有两种形式的多态–重载与重写。 抽象类是否可以继承实体类?抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数。 当类T 只声明了私有实例构造函数时,则在T 的程序文本外部,是否可以从T 派生出新的类,是否可以直接创 建T 的任何实例。 不可以,不可以 C#中有没有静态构造函数,如果有是做什么用的? 有. 静态构造函数用于初始化类。在创建第一个实例或引用任何静态成员之前,将自动调用静态 构造函数来初始化类。静态构造函数既没有访问修饰符,也没有参数。在创建第一个实例或引用任何静 态成员之前,将自动调用静态构造函数来初始化类。无法直接调用静态构造函数。在程序中,用户无法 控制何时执行静态构造函数。静态构造函数的典型用途是:当类使用日志文件时,将使用这种构 造函数向日志文件中写入项。 什么是.net? .net 是一种平台和框架, .net 不是单纯的语言也不是单纯的工具,它是从底层平台开始构建起来 的一个整体框架 .NET软件工程师48个面试题目 一.填空题 1.面向对象的语言具有(继承)性、(多态)性、(封装)性。 2.能用foreach遍历访问的对象需要实现(IEnumberable)接口或声明(GetEnumberator)方法的类型。 3.列举https://www.360docs.net/doc/1110672173.html,中的五个主要对象(Command)、(Connection)、(DataReader)、(DataSet)、(DataAdapter)。 4.C#中的三元运算符是__(?:)__ 5.当整数a赋值给一个object对象时,整数a将会被__(装箱)___ 6.类成员有__(3)__种可访问形式 7.float f=-123.567F;int i=(int)f;i的值现在是_(-123)__ 8.委托声明的关键字是___(delegate)_ 9.在https://www.360docs.net/doc/1110672173.html,中所有的自定义用户控件都必须继承自_ (https://www.360docs.net/doc/1110672173.html,erControl) __ 10.在.Net中所有可序列化的类都被标记为__[serializable]___ 11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ GC __ 12.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以or 不 可以)从T派生出新的类,_不可以_(可以or 不可以)直接创建T的任何实例。二.选择题 1.以下叙述正确的是:BC A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 2.从数据库读取记录,你可能用到的方法有:BCD A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader 3.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资相关的应用程序定义的任务?(多选) ( ABC ) A.Close B.Dispose C.Finalize https://www.360docs.net/doc/1110672173.html,ing E.Quit 4.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD ) A.使用ref参数,传递到ref参数的参数必须最先初始化。 B.使用out参数,传递到out参数的参数必须最先初始化。 C.使用ref参数,必须将参数作为ref参数显式传递到方法。 D.使用out参数,必须将参数作为out参数显式传递到方法。 5.在对SQL Server 数据库操作时应选用(A) A.SQL Server .NET Framework 数据提供程序; B.OLE DB .NET Framework 数据提供程序; C.ODBC .NET Framework 数据提供程序; D.Oracle .NET Framework数据提供程序; 常见.NET技术面试题 C# 什么是委托?委托和事件是什么关系? 答:简单的说:委托是一种方法容器,里面可以装载若干个具有相同签名的方法引用地址,那么调用委托,就相当于同时调用了该容器内的所有方法。 委托可以将方法作为参数传递给方法. ?事件是一种特殊的委托 什么是反射? ?答:反射提供了封装程序集,模块和类型对象,可以用反射动态地创建类型的实例,将类型绑定到现有对象,或者从现有对象类型里获取类型,然后调用类型的方法或访问字段和属性。 C#中是否可以从多个类中继承?如何实现多重继承? ?答:不能,要想实现多继承,就用接口 什么是密封类? ?答:密封类是类的一种,用sealed修饰,不能用作基类。因此,它也不能是抽象类。密封类主要用于防止派生。 using关键字有几种用途? ?答:两种 ?(1)应用命名空间; ?(2)定义一个范围,在范围结束时处理对象 #warning和#error分别的用途是什么? string和StringBuilder有什么区别? ?答:String 对象是不可改变的。StringBuilder对象是动态对象 string 是常量,定义后不能改变, stringbuilder定义后可以改变,且线程不安全 const和readonly的区别? ?答:const声明常量,raadonly是运行是的常量 new、virtual、abstract、override、sealed的区别? ?New :(1)new 一个对象(2)隐藏基类中的方法(3)在泛型时,new一个泛型类 ?Virtual:virtual关键字用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。virtual修饰符不能与static、abstract, private或override修饰符一起使用。 Abstract:abstract修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。 ?Override:重写:重写基类中的方法,不能重写非虚方法或静态方法。重写的基方法必须是vi rtual、abstract或override的。override声明不能更改virtual方法的可访问性。override方法和virtual方法必须具有相同的访问级别修饰符。 ?Sealed:密封类不能作为基类,密封类不能同时为抽象类 abstract class和interface有什么区别? ?答:区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系; ?而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。 ?区别二,抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出; 而对于接口来说,其中所定义的方法都不能给出实现部分。 ?区别三,继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法; ?而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属.net面试题.
.NET开发人员面试题(含答案)
net面试题(程序员必看 附答案)
DoNet面试题(选择题)原题
Net面试题
(完整word版)https://www.360docs.net/doc/1110672173.html,面试题132道
.Net程序员面试题大全
最新的。net面试题及答案
.net高级工程师面试题
NET软件工程师48个面试题目
.net软件工程师面试题
一套.net面试题及答案
net高级工程师面试题完整版
.NET开发人员面试题(含答案)
.Net面试题大全(个人整理)
NET高级工程师面试题题目
Net史上最全的面试题及.NET基础知识
NET软件工程师48个面试题目
常见.NET技术面试题