已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一填空题(每空1分,共12分)1面向对象的语言具有_封装_性、_继承_性、_多态_性。2能用foreach遍历访问的对象需要实现 _Ienumerable_接口或声明_GetEnumerator_方法的类型。3当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,在T的内部_可以_(可以 or 不可以)直接创建T的任何实例,在T的外部_不可以_(可以 or 不可以)直接创建T的任何实例。4. 委托声明的关键字是_Delegate_ 5. override与重载的区别: override覆盖是基类中函数的重写。重载:方法或函数的名称相同,参数或许参数类型不同,进行多次重载实现功能。 二. 不定项选择(每题2分,共18)Question 1 以下叙述正确的是: A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。Question 2 以下描述错误的是()1. 在C+中支持抽象类而在C#中不支持抽象类。2. C+中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。3. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。Question 3声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是1. void myCallBack(int x)2. int receive(int num)3. string receive(int x)4. 不确定的Question 4下列描述错误的是() a) 类不可以多重继承而接口可以; b) 抽象类自身可以定义成员而接口不可以; c) 抽象类和接口都不能被实例化; d) 一个类可以有多个基类和多个基接口;Question 5下列关于构造函数的描述正确的是() a) 构造函数可以声明返回类型。 b) 构造函数不可以用private修饰 c) 构造函数必须与类名相同 d) 构造函数不能带参数Question 6 接口是一种引用类型,在接口中可以声明( ),但不可以声明公有的域或私有的成员变量。 a) 方法、属性、索引器和事件; b) 方法、属性信息、属性; c) 索引器和字段; d) 事件和字段;Question 7以下的C#代码,试图用来定义一个接口: public interface IFile int A; int delFile() A = 3; void disFile(); 关于以上的代码,以下描述错误的是( )。 a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误; b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数; c) 代码void disFile();声明无错误,接口可以没有返回值; d) 代码void disFile();应该编写为void disFile(); Question 8.class Class1public static int Count = 0;static Class1()Count+;public Class1()Count+;Class1 o1 = new Class1();Class1 o2 = new Class1();请问,Class1.Count的值是多少?( )1. 12. 23. 34. 4Question 9abstract class BaseClasspublic virtual void MethodA()Console.WriteLine(BaseClass);public virtual void MethodB()class Class1: BaseClasspublic void MethodA()Console.WriteLine(Class1);public override void MethodB()class Class2: Class1new public void MethodB()class MainClasspublic static void Main(string args)Class2 o = new Class2();o.MethodA();请问,此程序输出结果是:1. BaseClass2. BassClass Class13. Class14. Class1 BassClass (解析,三重继承问题,孙类只是继承父类,而不是直接继承祖父类)三问答题(每题3分,共15分)1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 private:私有访问,它只能在声明自身的类中进行访问。protected:表示受保护的访问,该类内部和继承类中可以访问.public :表示公共访问,在代码任何位置都可对其进行访问 internal表示内部成员,在同一命名空间内可以访问。2. C#中的委托是什么?事件是不是一种委托?委托是指具有相同属性(也称具有相同的函数签名:返回类型相同,参数类型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。主要用途是三个:1)函数回调;2)传递方法;3)事件机制 事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托,对事件的声明, 实际是声明一个私有的委托变量,对委托变量进行封装,即委托变量加上event关键字后,不管其前面的访问修饰符是public还是private,编译器都会将其编译为private。委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。以委托为参数的函数具有一定的通用性。使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。3. abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗? 不可以一起使用,但是可以和override一起使用。4. 请叙述属性与索引器的区别。属性:它是存取类的字段,索引器:Indexer它是特殊的属性,用它可以使用户像访问数组一样访问类的成员。5. 请详述在dotnet中类(class)与结构(struct)的异同。类class可以进行实例化,它是引用类型,内存分配在栈中,效率高,它有默认的构造函数,有析构函数可以使用 abstract 和 sealed, protected 修饰符。要用new进行初始化,结构它是属于值类型,内存分配在堆中,效率低,它没有默认的构造函数,但是可以添加构造函数,没有析构函数没有 abstract 和 sealed(因为不能继承)不能有protected 修饰符 可以不使用new 初始化,但是可以在结构中初始化实例字段。 四分析程序(每题5分,共25分) (此题不能调试,若发现调试,扣除分数)1. 写出程序的输出结果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.; 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); 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); 10210strstring being converted2.写出程序的输出结果public abstract class A public A() Console.WriteLine(A); public virtual void Fun() Console.WriteLine(A.Fun(); public class B: A public B() Console.WriteLine(B); public override void Fun() Console.WriteLine(B.Fun(); public static void Main() A a = new B(); a.Fun(); 解析:主函数 A a = new B();首先声明了一个A的对象a,但被赋给不同于A的对象B,在此期间分别调用了A类的构造函数和B类的构造函数,然后调用a的fun()函数,因为a的fun()函数是虚函数,被b的fun()的函数覆盖,所以实际执行的是b的fun().答案:ABB.Fun()3.写出程序的输出结果:public class 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) base.Fun1 (i + 1); public static void Main() B b = new B(); A a = new A(); b.Fun2(a); a.Fun2(b); 输出结果为:2516(一个函数的执行必须在一个具体的对象中实现,如果函数明确告诉是哪个对象,则在改该对象下执行;如果没有,则在默认的对象下执行)4. 在下面的例子里using System;class A public A() PrintFields(); public virtual void PrintFields()class B:A int x=4; int y; public B() y=-1; public override void PrintFields() x += 1; Console.WriteLine(x=0,y=1,x,y);y += 1; 当使用B b = new B()创建的实例时,产生什么输出?b. PrintFields();结果是什么?X=5,y=0 b. PrintFields 结果是x=6;y=1 5. 下面的例子中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=2,Y=1五程序设计(每题7分,共28分)1. 请编程实现一个冒泡排序算法?/比较法using System;using System.Collections.Generic;using System.Text; namespace test1 class Program static void Main(string args) int Array = 6,18,12,23,19,28,30; Console.WriteLine(排序前的数组:); foreach(int n in Array) Console.Write(n+ ); Console.WriteLine(); for (int i = 1; i Array.Length; i+) /控制趟数 for (int j = 0; j Arrayj + 1) /交换 int temp = Arrayj; Arrayj = Arrayj + 1; Arrayj + 1 = temp; /排序后 Console.WriteLine(排序后的数组:); for (int n = 0; n Array.Length; n+) Console.Write(Arrayn + ); Console.WriteLine(); 2. 编程程序实现委托,事件。using System;using System.Collections.Generic;using System.Text; namespace delegateDemo class Program static void Main(string args) Cat cat = new Cat(); Mouse mouse = new Mouse(); Master master = new Master(); cat.Calling += new EventHandler(mouse.Escape); cat.Calling += new EventHandler(master.Wakened); cat.Call(); public sealed class Cat /猫类 public event EventHandler Calling; public void Call() Console.WriteLine(猫开始叫了); if(Calling!=null) /检查事件是否被注册 Calling(this,EventArgs.Empty);/调用事件注册的方法 public sealed class Mouse /老鼠类 public void Escape(object sender, EventArgs e) Console.WriteLine(老鼠逃跑了.); public sealed class Master /主人 public void Wakened(object sender, EventArgs e) Console.WriteLine(主人惊醒了.); 3. 写一个程序,语言不限,打印出100的阶乘(即1*2*3*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120。using System;using System.Collections.Generic;using System.Text;/,打印出100的阶乘(即1*2*3*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120namespace shuzu class Program static void Main(string args) Console.WriteLine(请输入一个正数); int n = int.Parse(Console.ReadLine(); Console.WriteLine(0的阶乘1*2*3*1=2, n,n,Fn(n); public static double Fn(int n) if (n=1) return 1; else return n * Fn(n - 1); 4. 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。using System;using System.Collections.Generic;using System.Text; namespace ConsoleApplication1 class Program static void Main(string args) Console.WriteLine(请输入数字:); string s = Console.ReadLine(); Console.Write(转换后¥:); for (int i = 0; i s.Length; i+) /switch(Convert.ToInt32(Console.ReadLine() switch (si - 48) case 0: Console.Write(零); break; case 1: Console.Write(壹); break; case 2: Console.Write(贰); break; case 3: Console.Write(叁); break; case 4: Console.Write(肆); break; case 5: Console.Write(伍); break; case 6: Console.Write(陆); break; case 7: Console.Write(柒); break; case 8: Console.Write(捌); break; case 9: Console.Write(玖); break; case 10: Console.Write(拾); break; default: Console.Write(输入其他字符); break; Console.WriteLine(); Console.Read(); 六附加题(12分) 一列数的规则如下: 1、1、2、3、5、8、13、21、34. 求第30位数是多少, 用递归算法实现。(C#语言)using System;using System.Collections.Generic;using System.Text;/ 一列数的规则如下: 1、1、2、3、5、8、13、21、34. 求第30位数是多少, 用递归算法实现namespace rabbit class Program static void Main(string args) Console.WriteLine(请输入个正数:); int I= int.Parse(Console.ReadLine(); Console.WriteLine(第0个数字是1, I, Fn(I); static int Fn(int n) if ( n = 1 | n = 2 ) return 1; else return Fn(n - 1) + Fn(n - 2); 1、权限控制方面问题:从面向对象的角度讲,如果一个程序中,没有应用角色及角色组的话,那么这个程序是不合格的.一般来说,权限是由权限及流程角色组合而来的,如果仅有权限而没有角色,那么这个控制不灵活;如果仅有角色没有权限,那么这个控制不细致.当然,用SESSION肯定是要的,但这个SESSION,应当只记录当前用户的个人信息,比如他的用户名.在需要判断的时候,根据他的用户名(唯一),至数据库中去取他的权限,或在类中编写权限/角色,根据此用户的用户号及当前模块号,计算当前用户是否对当前页面有操作权限.不过,如果把用户的权限也取出来放在SESSION中的话,这种做法一般仅在很小的网站中使用,稍大一点的系统,基本不允许这么做,而且也做不到 2. PID是什么?在做系统的故障排除时如何使用它?PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visual 等ide将故障进程附加到进程中进行调试(debug)3. XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?答:我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限.4.为什么不提倡catch(Exception)?答:原因可能有两点:1. trycatch在出现异常的时候影响性能 2.应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等5. Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?答:Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。6. Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。答:Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略7. JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响?答:方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么8. a.Equals(b)和a = b一样吗?答:不一样。a.Equals(b)表示a与b一致, a=b表示a与b的值相等9. 在对象比较中,对象一致和对象相等分别是指什么?答:对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同10.在.NET中如何实现深拷贝(deep copy)? 答:实现IClonable接口11.请解释一下IClonable答:IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是 Object.MemberWiseClone().深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较!Code highlighting produced by Actipro CodeHighlighter (freeware)http:/www.CodeH/public class Namepublic string FirstName;public string LastName;public class Person : ICloneablepublic Name PersonName;public string Email;/ / Deep Copy的例子/ / public Object Clone()Person p = new Person();p.Email = this.Email;p.PersonName = new Name();p.PersonName.FirstName = this.PersonName.FirstName;p.PersonName.LastName = this.PersonName.LastName;return p;public void ChangLastName(string lastName)this.PersonName.LastName = lastName;public static void Main()Person p = new Person();p.PersonName = new Name();p.PersonName.LastName = ”san”;p.PersonName.FirstName = ”zhang”;p.Email = ””;Person sameNamePerson = p.Clone() as Person;sameNamePerson.ChangLastName(“clr_”);Console.WriteLine(p.PersonName.LastName);Console.WriteLine(sameNamePerson.PersonName.LastName);Person samePerson = p.MemberwiseClone() as Person;samePerson.ChangLastName(“Shadow”);Console.WriteLine(p.PersonName.LastName);Console.WriteLine(sameNamePerson.PersonName.LastName);Console.Read();12.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。13.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?不能,一个对象的一个synchronized方法只能由一个线程访问。14.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?答:都不能。15.List, Set, Map是否继承自Collection接口?答:List,Set是Map不是16.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用=还是equals()? 它们有何区别?答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和=方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。17.数组有没有length()这个方法? String有没有length()这个方法?答:数组没有length()这个方法,有length的属性。String有有length()这个方法。18.sleep()和 wait() 有什么区别?答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。一填空题1面向对象的语言具有(继承)性、(多态)性、(封装)性。2能用foreach遍历访问的对象需要实现 (IEnumberable)接口或声明(GetEnumberator)方法的类型。3列举ADO.net中的五个主要对象(Command)、(Connection)、(DataReader)、(DataSet)、(DataAdapter)。4C#中的三元运算符是_(?:)_5当整数a赋值给一个object对象时,整数a将会被_(装箱)_6类成员有_(3)_种可访问形式7float f=-123.567F;int i=(int)f;i的值现在是_(-123)_8委托声明的关键字是_( delegate) _9在A中所有的自定义用户控件都必须继承自_ (System.Web.UI.UserControl) _10在.Net中所有可序列化的类都被标记为_serializable_11在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ GC _12当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。二选择题1以下叙述正确的是: BCA. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。2从数据库读取记录,你可能用到的方法有: BCD A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader3对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资相关的应用程序定义的任务?(多选) ( ABC )A.Close B.Dispose C.Finalize D.using E.Quit4以下关于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数据提供程序;6下列选项中,(C)是引用类型。 A.enum类型 B.struct类型 C.string类型 D.int类型7关于ASP.NET中的代码隐藏文件的描述正确的是(C) A.Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C创建,该文件将具有“.ascx.cs”扩展名。B.项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。C.项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。D.以上都不正确。8以下描述错误的是(A)A.在C+中支持抽象类而在C#中不支持抽象类。B.C+中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。C.在C#中可使用 new 修饰符显式隐藏从基类继承的成员。D.在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。9C#的数据类型有(B) A.值类型和调用类型 B.值类型和引用类型C.引用类型和关系类型 D.关系类型和调用类型10下列描述错误的是(D)A.类不可以多重继承而接口可以B.抽象类自身可以定义成员而接口不可以C.抽象类和接口都不能被实例化D.一个类可以有多个基类和多个基接口11在DOM中,装载一个XML文档的方法(D) A.save方法 B.load方法 C.loadXML方法 D.send方法12下列关于构造函数的描述正确的是(C)A.构造函数可以声明返回类型。B.构造函数不可以用private修饰C.构造函数必须与类名相同D.构造函数不能带参数13以下是一些C#中的枚举型的定义,其中错误的用法有(A)A.public enum var1 Mike = 100, Nike = 102, Jike B.public enum var1 Mike = 100, Nike, Jike C.public enum var1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026海南旅投招聘部长1人备考题库及答案详解(真题汇编)
- 2026广西贵港桂平市社步镇卫生院招聘编外工作人员的1人备考题库附答案详解(基础题)
- 2026上海市金山区第一实验小学英语教师招聘备考题库含答案详解(模拟题)
- 2026四川宜宾江安县扶残助残协会社会招聘办公文员2人备考题库及一套完整答案详解
- 2026湖南长沙岳麓区云西府幼儿园招聘备考题库及完整答案详解1套
- 2026山东临沂市沂水县政府专职消防队员招录备考题库附答案详解(满分必刷)
- 2026陕西铜川市招聘国家公费师范毕业生及优师计划毕业生36人备考题库及答案详解(易错题)
- 2026河南省商丘市第一人民医院招聘博士研究生备考题库及答案详解(名校卷)
- 2026江苏无锡市惠山区教育局招聘教师41人备考题库带答案详解(完整版)
- 运动设施性能测试与评估方案
- 2026年春人教版(2024)八年级下册英语期末检测试卷(含答案)
- 2026江苏南京师范大学专业技术人员招聘10人备考题库附答案详解【考试直接用】
- 2026届高考语文复习:“立人者自立成人者成己”作文写作指导 课件
- 哈尔滨市第三中学 2026 年高三学年第二次模拟考试英语+答案
- 2026年金华永康市粮食收储有限责任公司公开招聘合同制员工9人考试备考试题及答案解析
- 重庆市康德2026届高三高考模拟调研卷(三)政治试卷(含答案详解)
- 项目部防汛责任制度
- 2025年09月湖北省农村信用社联合社网络信息中心度招考35名劳务派遣科技专业人才笔试历年常考点试题专练附带答案详解试卷2套
- 工程检测机构质量手册、程序文件、质量记录、作业指导书及操作规程等
- 学校工会活动考核制度
- (2026春新版)部编版八年级语文下册全册教案
评论
0/150
提交评论