1、一.填空题 1.c#中的三元运算符是__?:___? 2.当整数a赋值给一个object对象时,整数a将会被__装箱(封装)___? 3.类成员有_____种可访问形式? this.;new Class().Method; 4.public static const int A=1;这段代码有错误么?是什么? const不能用static修饰 5.float f=-123.567F; int i=(int)f; i的值现在是_____? 123 6.利用operator声明且仅声明了“==”,有什么错误么? 7.委托声明的关键字是______? delag
2、ete 8.用sealed修饰的类有什么特点?密封,不能继承 9.在A中所有的自定义用户控件都必须继承自________?Control 10.在.Net中所有可序列化的类都被标记为_____? 11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?gc 12.下面的代码中有什么错误吗?_______ using System; class A { public virtual void F(){ Console.WriteLine("A.F");
3、} } abstract class B:A { public abstract override void F(); // new public abstract void F(); } 13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以 or 不可以)从T派生出新的类,不可以____(可以 or 不可以)直接创建T的任何实例。 14.下面这段代码有错误么? switch (i){ case(): CaseZero();
4、 break; case 1: CaseOne(); break; case 2: dufault; //wrong CaseTwo(); break; } 15.在.Net中,类System.Web.UI.Page 可以被继承么?可以 二.简答题 1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实例 new 隐藏基类中方法 4.谈谈类和结构的区别?类是引用类型、结构是值类型 5.
5、一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。 6.对于这样的一个枚举类型: enum Color:byte{ Red, Green, Blue, Orange } string[] ss=Enum.GetNames(typeof(Color)); byte[] bb=Enum.GetValues(typeof(Color)); 试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应
6、的数值。 7.您了解设计模式么?请列出您所知道的设计模式的名称。 // 8.请在SQL Server中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路? 9.什么叫做SQL注入,如何防止?请举例说明。 10.下面这段代码输出什么?为什么? int i=5; int j=5; if (Object.ReferenceEquals(i,j)) Console.WriteLine("Equal"); else
7、 Console.WriteLine("Not Equal"); //不相等,因为比较的是对象 1. 填空: (1)面向对象的语言具有________性、_________性、________性。 (2)能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 (3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。 2. 不定
8、项选择: (1) 以下叙述正确的是: A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 (2) 从数据库读取记录,你可能用到的方法有: A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader 3. 简述 private、 protected、 public、 internal 修饰符的访问权限。 4
9、 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。) 5 .列举ASP.NET 页面之间传递值的几种方式。 6. 写出程序的输出结果 class Class1 { private string str = "Class1.str"; private int i = 0; static void StringConvert(string str) { str = "string being converted.";
10、 } 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;
11、 int i2 = 20; string str = "str"; Class1 c = new Class1(); Add(i1); AddWithRef(ref i2); Add(c.i); StringConvert(str); StringConvert(c); Console.WriteLine(i1); Console.WriteLi
12、ne(i2); Console.WriteLine(c.i); Console.WriteLine(str); Console.WriteLine(c.str); } } 7.写出程序的输出结果 public abstract class A { public A() { Console.WriteLine('A'); } public virtual void Fun()
13、 { 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()
14、 { A a = new B(); a.Fun(); } } 8. 写出程序的输出结果: public class A { public virtual void Fun1(int i) { Console.WriteLine(i); } public void Fun2(A a) { a.Fun1(1); Fun
15、1(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);
16、 } } 9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。(C#语言) 10. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求: 1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。 .net笔试题 姓名: 日期: 1. 填空: (1)面向对象的语言具有________性、_________性、________性。
17、 (2)能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 (3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。 2. 不定项选择: (1) 以下叙述正确的是: A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 (2
18、) 从数据库读取记录,你可能用到的方法有: A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader 3. 简述 private、 protected、 public、 internal 修饰符的访问权限。 4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。) 5 .列举ASP.NET 页面之间传递值的几种方式。 6. 写出程序的输
19、出结果 class Class1 { 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."; }
20、 static void Add(int i) { i++; } static void AddWithRef(ref int i) { i++; } static void Main() { int i1 = 10; int i2 = 20; string str = "str"; Class1 c = new Class1(); Add(i1)
21、 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
22、str); } } 7.写出程序的输出结果 public abstract class A { public A() { Console.WriteLine('A'); } public virtual void Fun() { Console.WriteLine("A.Fun()"); } } public class B: A { public B()
23、 { Console.WriteLine('B'); } public new void Fun() { Console.WriteLine("B.Fun()"); } public static void Main() { A a = new B(); a.Fun(); } } 8. 写出程序的输出结果: public class
24、A { public virtual void 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) {
25、 base.Fun1 (i + 1); } public static void Main() { B b = new B(); A a = new A(); a.Fun2(b); b.Fun2(a); } } 9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。(C#语言) 10. 程序设计:
26、猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言) 要求: 1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。 参考答案: 1. (1) 继承性、封装性、多态性。(考基本概念) (2) IEnumerable 、 GetEnumerator (对foreach机制的理解,本来不想出这题的,凑分) (3) ... (送分题, 对ADO.net的了解) 评分标准:一空1分,满分10分。 2. (1) B、C (考对接口的理解) (2) B、C、D (考查对ADO.net的熟练程度) 评分标准:
27、 一题5分,不选或者错选均不得分。漏选得2分。满分10分。 3. . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 评分标准:答对1题2分,2题5分,3题7分。全对10分。 (送分题) 4. 解1: select top 10 * from A where id not in (select top 30 id from A) 解2: s
28、elect top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 评分标准: 写对即10分。(答案不唯一,datagrid 分页可能需要用到) 5. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer ....等等 评分标准: 答对1点得3分, 两点7分, 3点10分。 6. (考查值引用和对象引用)
29、 10 21 0 str string being converted. 评分标准:答对一点得2分,满分10分。 7. A B A.Fun() 评分标准: 写出A.B 得5分,写出A.Fun()得5分,满分10分。 (考查在继承类中构造函数, 以及new 方法, ) 8. 2 5 1 6 评分标准: 答对一点得2分,两点得5分,3点得7分。全对得10分。 (一些人做这题,头都晕了.... ^_^ ) 9. public class MainClass { pub
30、lic 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 -
31、2); } } 评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。 写出if(i > 0 && i <= 2) return 1; 得5分。 方法参数过多需要扣分(扣除分数 = 参数个数 - 1) 不用递归算法扣5分 (递归算法在树结构建立等方面比较常用) 10 要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象 评分标准: <1>.构造出Cat、Mouse、Master三个类
32、并能使程序运行(2分) <2>从Mouse和Master中提取抽象(5分) <3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分) public interface Observer { void Response(); //观察者的响应,如是老鼠见到猫的反映 } public interface Subject { void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---
33、老鼠 } public class Mouse : Observer { private string name; public Mouse(string name, Subject subj) { this.name = name; subj.AimAt(this); } public void Response() { Console.
34、WriteLine(name + " attempt to escape!"); } } public class Master : Observer { public Master(Subject subj) { subj.AimAt(this); } public void Response() { Console.WriteLine("Host wake
35、n!"); } } public class Cat : Subject { private ArrayList observers; public Cat() { this.observers = new ArrayList(); } public void AimAt(Observer obs) { this.observers.Add(obs); }
36、 public void Cry() { Console.WriteLine("Cat cryed!"); foreach (Observer obs in this.observers) { obs.Response(); } } } class MainClass { static void Main(string[] args)
37、 { Cat cat = new Cat(); Mouse mouse1 = new Mouse("mouse1", cat); Mouse mouse2 = new Mouse("mouse2", cat); Master master = new Master(cat); cat.Cry(); } } //----------------------------------------------------------
38、 设计方法二: 使用event -- delegate设计.. public delegate void SubEventHandler(); public abstract class Subject { public event SubEventHandler SubEvent; protected void FireAway() { if (this.SubEvent != null)
39、 this.SubEvent(); } } public class Cat : Subject { public void Cry() { Console.WriteLine("cat cryed."); this.FireAway(); } } public abstract class Observer { public Observer(Subject sub)
40、 { sub.SubEvent += new SubEventHandler(Response); } public abstract void Response(); } public class Mouse : Observer { private string name; public Mouse(string name, Subject sub) : base(sub) { this.nam
41、e = name; } public override void Response() { Console.WriteLine(name + " attempt to escape!"); } } public class Master : Observer { public Master(Subject sub) : base(sub){} public override void Response() {
42、 Console.WriteLine("host waken"); } } class Class1 { static void Main(string[] args) { Cat cat = new Cat(); Mouse mouse1 = new Mouse("mouse1", cat); Mouse mouse2 = new Mouse("mouse2", cat); Master
43、 master = new Master(cat); cat.Cry(); } } 第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 第二十三,启动一个线程是用run()还是start()? 第二十四,构造器Constructor是否可被override? 第二十五,是否可以继承String类? 第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 第二十七,try {}里有一个r
44、eturn语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 第二十八,编程题: 用最有效率的方法算出2乘以8等於几? 第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 第三十二,编程题: 写一个Singleton出来。
45、 数据库方面: 1.存储过程和函数的区别 2.事务是什么? 3.游标的作用?如何知道游标已经到了最后? 4.触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 1。用C#实现以下功能 a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 b 对上面生成的数组排序,需要支持升序、降序两种顺序 2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 3。请说明.net中的错误处理机制,并举例 4。请说出强名的含义 5。请列出c#中几种循环的方法,并指出他们的不同 6。请
46、指出.net中所有类型的基类 7。请指出GAC的含义 8。SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 您在什么情况下会用到虚方法?它与接口有什么不同? Q:Override与重载有什么区别? Q:值类型与引用类型有什么区别? Q:怎样理解静态变量? Q:向服务器发送请求有几种方式? Q:DataReader与Dataset有什么区别? Q:如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? Q:用.net做B/S结构的系统,您是用几层结构来开发,每
47、一层之间的关系以及为什么要这样分层? Q:软件开发过程一般有几个阶段?每个阶段的作用? Q:微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用? Q:请列举一些您用到过的设计模式以及在什么情况下使用该模式? Q:您对WebService的体会? Q:您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平? Q:您离职的原因是什么? Q:通过超链接怎样传递中文参数? Q:请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? Q:请编程实现一个冒泡排序算法?
48、 1、override与重载的区别 2、.net的错误处理机制是什么 3、C#中接口和类的异同 4、DataReader和DataSet的异同 1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析. 2.如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明. 3.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程. 4.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超
49、过一个. 一.填空题 二.简答题 1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using 指令 和语句 new 创建实例 new 隐藏基类中方法 4.谈谈类和结构的区别?类是引用类型、结构是值类型 5.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来实现。 6.对于这样的一个枚举类型: enum Color:byte{ Red, Green, Blue, Orange } string[] ss=Enum.GetNames(typeof(Color)); byte[] bb=Enum.GetValues(typeof(Color)); 试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。 7.您了解设计模式么?请列出您所知道的设计模式的名称。 // 8.请在SQL Server中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路? 9.什么叫做SQL注入,如何防止?请举例说明。 10.下面这段代码输出






