1、.net 笔试题姓名: 日期:1. 填空: (1)面向对象的语言具有_ 封装_ 性、_继承_性、_多态_性。(2)能用 foreach 遍历访问的对象需要实现 _IEnumerable_接口或声明_GetEnumerable_方法的类型。(3)列举 ADO.net 中的五个主要对象_Command_、_Connection_、_DataAdapter_、_DataSet_、_DataReader_。2. 不定项选择:(1) 以下叙述正确的是: bc A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。(2) 从数据库读取记录,你
2、可能用到的方法有:bcdA. ExecuteNonQuery B. ExecuteScalarC. Fill D. ExecuteReader3. 简述 private、 protected、 public、 internal 修饰符的访问权限。答:public 不受限制的访问Private 只能在本类中访问Protected 本类和继承与他的类中的都能访问Internal 同一个应用程序或类库中4. 写出一条 Sql 语句: 取出表 A 中第 31 到第 40 记录(SQLServer, 以自动增长的 ID 作为主键, 注意:ID 可能不是连续的。)答:select top 10 from
3、a where id not in(select top 30 from a)或:select top 10 from a where id (select max(id) from (select top 30 from a) as b)5 .列举 ASP.NET 页面之间传递值的几种方式。答:session(viewstate) 简单,但易丢失application 全局cookie 简单,但可能不支持,可能被伪造input type=“hidden“ 简单,可能被伪造url 参数 简单,显示于地址栏,长度有限数据库 稳定,安全,但性能相对弱6. 写出程序的输出结果class Class1
4、 private string str = “Class1.str“;private int i = 0;static void StringConvert(string str) str = “string being converted.“;static void StringConvert(Class1 c) c.str = “string being converted.“;static void Add(int i) i+;static void AddWithRef(ref int i) i+;static void Main() int i1 = 10;int i2 = 20;s
5、tring str = “str“;Class1 c = new Class1();Add(i1);AddWithRef(ref i2);Add(c.i);StringConvert(str); StringConvert(c);Console.WriteLine(i1);Console.WriteLine(i2);Console.WriteLine(c.i);Console.WriteLine(str);Console.WriteLine(c.str); 答:10,21,0,str,string being converted.7.写出程序的输出结果public abstract class
6、 A public A() Console.WriteLine(A);public virtual void Fun() Console.WriteLine(“A.Fun()“);public class B: A public B() Console.WriteLine(B);public new void Fun() Console.WriteLine(“B.Fun()“);public static void Main() A a = new B();a.Fun();答:A,B ,A.Fun()8. 写出程序的输出结果:public class A public virtual void
7、 Fun1(int i) Console.WriteLine(i);public void Fun2(A a) a.Fun1(1);Fun1(5);public class B : A public override void Fun1(int i) base.Fun1 (i + 1);public static void Main() B b = new B();A a = new A();a.Fun2(b);b.Fun2(a); 答:2, 5,1,69. 一列数的规则如下: 1、1、 2、3、5 、8、13、21、34 求第 30 位数是多少, 用递归算法实现。(C#语言)答:privat
8、e int Add(int i)if (i 0); / throws an Assertionerror if a Function FindTextBox()var controls = document.getElementsByTagName(input);for(var i=0;i listi + 1)done = false;temp = listi;listi = listi + 1;listi + 1 = temp;j+;return list;1、override 与重载的区别答:其实很本质的区别就是看函数特征:覆写(Override)的两个函数的函数特征相同,重载(Overl
9、oad)的两个函数的函数名虽然相同,但函数特征不同。 函数特征包括函数名,参数的类型和个数。Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。2、.net 的错误处理机制是什么答:try可能要出错的代码catch出错后如何处理finally不论是否出错都要执行3、C中接口和类的异同答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract 和 sealed,有 protected 修饰符,必须使用 new 初始化。接口可以说是比抽象
10、类更抽象的类,只能继承接口,是一种规范4、DataReader 和 DataSet 的异同答:dataset 是保存数据的数据结构,断开模式,而 DataReader 不承担保存数据的责任,需要自己手动关闭连接数据库,它只负责从数据源读取数据到本地而已,是只读向前的,它不是数据结构,而是网络通讯组件的高层封装。1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.答:反射,base2.如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.答:static int num 0;在构造函数里 num+。3.A 类是 B 类的基类 ,并且都有自己的构造,析构
11、函数,请举例证明 B 类从实例化到消亡过程中构造, 析构函数的执行过程.答:A 构造 B 构造 B 析构 A 析构4.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.答:string a = “ a b c d e c d “;string d = a.Replace(“ “, “ “);while (true)d = d.Replace(“ “,“ “);if (d.IndexOf(“ “) = -1)break;一. 填空题1.c#中的三元运算符是_?:_?2.当整数 a 赋值
12、给一个 object 对象时,整数 a 将会被_ 装箱 (封装)_?3.类成员有_种可访问形式? (public,private,protected,internal)4.public static const int A=1;这段代码有错误么?是什么? const 不能用 static 修饰5.float f=-123.567F;int i=(int)f;i 的值现在是_? 答:123 6.利用 operator 声明且仅声明了 “=”,有什么错误么?答: 还要声明“!=”7.委托声明的关键字是_? 答:delegate8.用 sealed 修饰的类有什么特点?答:密封,不能继承9.在 A
13、中所有的自定义用户控件都必须继承自_?答:Control10.在.Net 中所有可序列化的类都被标记为_ serializable _? 11.在.Net 托管代码中我们不用担心内存漏洞,这是因为有了_?垃圾回收器12.下面的代码中有什么错误吗?_using System;class Apublic virtual void F()Console.WriteLine(“A.F“);abstract class B:Apublic abstract override void F(); / new public abstract void F(); 13.当类 T 只声明了私有实例构造函数时,则
14、在 T 的程序文本外部,_不可以_ (可以 or 不可以)从 T 派生出新的类,不可以_ (可以 or 不可以)直接创建 T 的任何实例。14.下面这段代码有错误么?switch (i)case():CaseZero();break;case 1:CaseOne();break;case 2:dufault; /错误CaseTwo();break;15.在.Net 中,类 System.Web.UI.Page 可以被继承么?可以二. 简答题1.在 c#中 using 和 new 这两个关键字有什么意义,请写出你所知道的意义? 答:1) . using 指令。using + 命名空间名字,这样可
15、以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间。2).using 别名。using + 别名 = 包括详细命名空间信息的具体的类型。当一个 cs 引用多个命名空间时,而有相同的类型时可以这样做。比如 namespace1 和 namespace2 下面都有 myClass 类时,可以 using class1 namespace1.myClass;using class2 = namespace2.myClass。3).using 语句,定义一个范围,在范围结束时处理对象。(1)new 运算符 用于创建对象和调用构造函数。(2)new 修饰符 用于向基类成员隐藏继承成员。(3)
16、new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。4.谈谈类和结构的区别?答:类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract 和 sealed,有 protected 修饰符,必须使用 new 初始化。结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用 abstract 和 sealed,没有 protected 修饰符,可以不用 new 初始化。如何选择使用结构还是类: 1)堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些 2)结构表示如点、矩形和颜色这样的轻量对象,例如,如
17、果声明一个含有 1000 个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本较低。 3)在表现抽象和多级别的对象层次时,类是最好的选择 4)大多数情况下该类型只是一些数据时,结构是最佳的选择5.一个长度为 10000 的字符串,通过随机从 a-z 中抽取 10000 个字符组成。请用 c语言编写主要程序来实现。答: using System.Text;StringBuilder sb = new StringBuilder(0, 10000);string strABC = “a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,
18、y,z“;string ABC = strABC.Split(,);int len = ABC.Length;Random rd = new Random();for (int i = 0; i = 0; m-)sb.Append(inputCharm);2.对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯) 开发语言概念题 3.什么是反射? 答:动态获取程序集信息。反射公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型
19、的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。4.用 Singleton 如何写设计模式 答:public class Singleton private static Singleton instance; public string name; private Singleton()/将 singleton 函数变为 private,防止直接调用 new 来创建它. name=“guqi“; Console.WriteLine(“你只可以看到我一次哦“); public static Singleton
20、 GetInstance() if (instance=null) instance=new Singleton(); return instance; else return instance; 5.C#中的垃圾回收机制是怎样的? 答:.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它
21、检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。6.什么是 Application Pool? 答:Web 应用,类似 Thread Pool,提高并发性能7.链表和数组的区别,各有什么优缺点.答:一个可以动态增长,一个固定,性能数组教好8.Remoting 在客户端服务器怎么实现 ?答:创建一个 TcpClientChannel 对象,在 ChannelServices 中注册,然后使用 Activator类把代理对象返回给远程对象。9.什么是友元函数? 答:friendly 声明,可以访问 protect 级别方法10.用标准 C 如何实现多态? 答:虚方法11.
22、什么是虚函数? 答:可以被重写12.什么是抽象函数? 答:必须被重写13.什么是内存泄漏,怎样最简单的方法判断被存泄漏 ?答:C+,C 中忘了释放内存,内存不会再次分配英语题 14.用英文介绍一下使用 C#/C+做的项目,主要功能 15.如果要与美国开电话会议,会如何与美国的工程师沟通 16.如果老板认为你的技术落后,你会怎么回答 数据库知识题 17.使用什么工具来调用存储过程 答:ADO.Net18.SQL Server 的两种索引是何形式?索引的作用?索引的优缺点?答:集聚索引,非聚集索引。提高查询速度。但是会过多的占用磁盘空间。 19.触发器的作用 答:保证数据库操作变更能接到通知其它知
23、识题及问题 20.什么是 Web Service? 答:web 服务,是利用 SOAP(简单对象访问协议,Simple Object Access Protocol)在HTTP 上执行远程方法调用的一种方法,也可以使用 WSDL(Web Service Description Language,Web 服务描述语言)来完整的描述 Web 服务,基于 XML 标准。21.什么是 XML? 答:可扩展标记语言,可以做配置文件,可以传输数据,可以存储数据。22.Socket 怎么实现?答:Socket 类为网络通信提供了一套丰富的方法和属性。Socket 类允许您使用 ProtocolType 枚举
24、中所列出的任何一种协议执行异步和同步数据传输。Socket 类遵循异步方法的 .NET Framework 命名模式;例如,同步 Receive 方法对应于异步 BeginReceive 和 EndReceive 方法。如果应用程序在执行期间只需要一个线程,请使用下面的方法,这些方法适用于同步操作模式。 如果当前使用的是面向连接的协议(如 TCP),则服务器可以使用 Listen 方法侦听连接。Accept 方法处理任何传入的连接请求,并返回可用于与远程主机进行数据通信的 Socket。可以使用此返回的 Socket 来调用 Send 或 Receive 方法。如果要指定本地 IP 地址和端口
25、号,请在调用 Listen 方法之前先调用 Bind 方法。如果您希望基础服务提供程序为您分配可用端口,请使用端口号 0。如果希望连接到侦听主机,请调用 Connect 方法。若要进行数据通信,请调用 Send 或 Receive 方法。 如果当前使用的是无连接协议(如 UDP),则根本不需要侦听连接。调用 ReceiveFrom 方法可接受任何传入的数据报。使用 SendTo 方法可将数据报发送到远程主机。若要在执行过程中使用单独的线程处理通信,请使用下面的方法,这些方法适用于异步操作模式。 如果当前使用的是面向连接的协议(如 TCP),则可使用 Socket、BeginConnect 和
26、EndConnect 方法来连接侦听主机。通过使用 BeginSend 和 EndSend 方法,或者使用 BeginReceive 和 EndReceive 方法,可以进行异步数据通信。可以使用 BeginAccept 和 EndAccept 处理传入的连接请求。 如果您使用的是 UDP 等无连接协议,则可以使用 BeginSendTo 和 EndSendTo 来发送数据报,而使用 BeginReceiveFrom 和 EndReceiveFrom 来接收数据报。如果对一个套接字执行多个异步操作,它们不一定按启动时的顺序完成。当数据发送和数据接收完成之后,可使用 Shutdown 方法来禁用 Socket。在调用 Shutdown 之后,可调用 Close 方法来释放与 Socket 关联的所有资源。通过 Socket 类,您可以使用 SetSocketOption 方法来配置 Socket。可以使用 GetSocketOption 方法来检索这些设置。