刚毕业1年2年3年工作经验都可用的C#面试题及答案(设计模式在后面)参考模板_第1页
刚毕业1年2年3年工作经验都可用的C#面试题及答案(设计模式在后面)参考模板_第2页
刚毕业1年2年3年工作经验都可用的C#面试题及答案(设计模式在后面)参考模板_第3页
刚毕业1年2年3年工作经验都可用的C#面试题及答案(设计模式在后面)参考模板_第4页
刚毕业1年2年3年工作经验都可用的C#面试题及答案(设计模式在后面)参考模板_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#面试题(设计模式在后面)2. const和readonly有什么区别?答:const可以用于类的成员常量和局部常量,必须在声明时赋值,之后不可以对常量进行赋值。而readonly只能用于类的成员变量不能用于局部变量,在声明时可以不赋值,除了在构造函数中可以再次赋值外,其它的地方和const一样也不能赋值。5. 接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?答答:区别如下(1) 抽象类可以有抽象成员(无具体实现),也可以有非抽象成员(有具体实现);接口只有抽象成员。(2) 一个类不能同时继承多个抽象类,一个类可以同时实现多个接口。如果多个子类中有很多代码是重复的,这时采用抽象类

2、,因为可以将这些代码放到抽象类的非抽象方法中,这样可以达到代码复用。当实现多个接口时因为抽象类不支持,只能使用接口。6. struct和class有什么区别答:两者都可以有成员变量、属性、索引器、事件、函数、构造函数,主要区别如下:区别点 结构 类类型 值类型 引用类型成员变量 在声明时不能赋值 可以赋值也可以不赋值构造函数 可以不写,系统提供默认构造函数,默认构造函数中会将所有成员值设为0,如果写了构造函数则构造函数必须有参数,且在构造函数中必须为每一个成员赋值。 可以不写,系统提供默认构造函数,写了也没有结构中的限制。析构函数 不能有析构函数 可以有析构函数继承性 自定义的结构不能从类继承

3、,但可以实现接口,结构都是密封(sealed),不能从结构继承 类没有限制7. try后面一个finally,try中有一个return,那么finally中的代码会不会运行?如果运行,是在return后还是return前。答:会运行,并且在return 后运行。8. 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。答:该题解题思路有很多,主要是看运行效率如何,下面提供一种方法。int array = new int100;int temp = new int100;for (int i = 0; i < 100; i+)tempi=i+1;1 / 50Ran

4、dom rand = new Random();for (int i = 0; i < 100; i+)int index = rand.Next(100-i-1);arrayi = tempindex;tempindex=temp100-i-1;9. C#中要使一个类支持foreach遍历,实现过程怎样?答:必须实现IEnumerable,IEnumerator这两个接口,如下:public class MyList : IEnumerable,IEnumeratorprivate int position = -1;string array = new string4;public

5、MyList()array0 = "a"array1 = "b"array2 = "c"array3 = "d"#region IEnumerable 成员/每次使用foreach时都会调用它得到一个枚举器public IEnumerator GetEnumerator()Reset();return (this as IEnumerator);#endregion#region IEnumerator 成员/遍历时通过这个属性得到值public object Currentget return arrayposi

6、tion; /访问下一个元素时使用MoveNext移动位置public bool MoveNext()if (position < array.Length-1)position+;return true;elsereturn false;/遍历前要使位置归位public void Reset()position = -1;#endregion以下不用foreach遍历集合MyList list=new MyList();While(list.MoveNext()Object o=list.Current;10. 以下程序有什么错?public class TestClassprivat

7、e int count;private static int y;public static void setvalue ()count=1;y=1;答:在静态函数中只能访问静态成员变量;以上代码访问了实例成员。11. net中什么类不能被继承?答:如果在类前加上sealed关键字,则表示该类为密封类,密封类不能被继承。sealed 除了可以应用于类外,还可以应用于实例方法和属性。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与override一起使用。如:/下面这个sealed使用正确,表示该类不能继承public sea

8、led class Testprivate int myVar;/下面这个sealed错误,编译不会通过,因为sealed必须和override一起使用public sealed int MyPropertyget return myVar; set myVar = value; /下面这个sealed使用正确,表示如果该类不是密封类,/那么在派生类中也不可以重写该方法public sealed override string ToString()return base.ToString();12. is 和as 有什么区别?答:is用来判断一个实例是否属于某个类。如:Dog d=new Do

9、g();If(d is Dog)Console.WriteLine(“d是一只狗”);以上语句Console.WriteLine(“d是一只狗”);会运行,因为d is Dog返回true,如果Dog从Animal类继承并实现了IPet接口,则d is Animal和d is IPet都会返回true;as用于在兼容的引用类型之间执行转换,如果转换失败则返回null,它等价于如下语句:expression is type ? (type)expression : (type)null13. net中函数传递参数有那些方式?有什么区别?答:传值和传引用,传引用又两种方式,ref和out,ref要

10、求变量在传参前赋值,out可以不赋值。传引用必须是一个地址,传值是指将栈中的值拷贝到函数的参数,传引用表示传入的变量和接收参数是同一个变量public class Testpublic int myVar;public int MyPropertyget return myVar; set myVar = value; 以上这个类中有字段和属性private void F(ref int i)i = 100;有一个方法传递引用,调用方式如下:Test t = new Test();F(ref t. MyProperty);以上代码编译不能通过,因为属性不是变量,其实质是函数,如下则可通过Tes

11、t t = new Test();F(ref t. myVar);因为字段是变量14. 一列数的规则如下: 1、1、2、3、5、8、13、21、34. 求第30位数是多少, 用递归算法实现。答:public class MainClasspublic static void Main()Console.WriteLine(Foo(30);public static int Foo(int i)if (i <= 0)return 0;else if( i <= 2)return 1;elsereturn Foo(i -1) + Foo(i - 2);15. C#中的委托是什么?事件是

12、不是一种委托?答 :委托封装了函数指针的集合,它可以指向一组函数。事件也是委托,是一种特殊的委托。16. 请编程实现一个冒泡排序算法?答:int array = new int * ;int temp = 0 ;for (int i = 0 ; i < array.Length - 1 ; i+)for (int j = i + 1 ; j < array.Length ; j+)if (arrayj < arrayi)temp = arrayi ;arrayi = arrayj ;arrayj = temp ;17. 在下面的例子里using System;class Ap

13、ublic A()PrintFields();public virtual void PrintFields()class B:Aint 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当使用New创建B的实例时,因为B继承了A类,A的构造函数首先会被运行,但应当注意的是,虽然运行的是A的构造函数,但在A的构造函数中调用的函数首先是在B类中查找,因为PrintFields已

14、被重写,所以最终运行B类中的PrintFields函数。18. CTS、CLS、CLR分别作何解释?答:CTS:Common Type System 通用系统类型。CLS:Common Language Specification 通用语言规范。CLR:Common Language Runtime 公共语言运行库。20. net Remoting 的工作原理是什么?答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。21. 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+m答:int m = Convert.ToInt32(this.TextBox1.

15、Text) ;int sum = 0 ;for (int i = 0 ; i < m + 1 ; i+)if(i%2) = 1)sum += i ;Elsesum = Sum - I ;System.Console.WriteLine(sum.ToString();System.Console.ReadLine() ;其实还有一个很简单的方式,上面的表达式,把它分成1-2、3-4、5-6可以看出,如果m是偶数,那么结果就是m/2*(-1),如果m是奇数,结果就是m-m/222. 列举ASP.NET 页面之间传递值的几种方式。答. 1).使用QueryString, 如.?id=1; re

16、sponse. Redirect().2).使用Session变量3).使用Server.Transfer4).Application5).<input type="hidden"></input>6).数据库7).ViewStat8).cookie23. 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?答:在页面中调用下面的函数,SetTextBox(this);public void SetTextBox(Control ctrl)if (ctrl is TextBox)(ctrl as TextBox).Text=s

17、tring.Empty;elseforeach (Control child in ctrl.Controls)SetTextBox(ctrl);24. 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。Class Apublic void Test(int i)lock(this)if (i>10)i-;Test(i);答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)25. 简要谈一下您对微软.NET 构架下remoting和web

18、service两项技术的理解以及实际中的应用。答:WebSevice使用HTTP协议,因此可以穿透防火墙。而Remoting使用TCP/IP,二进制传送提高效率。remoting是.net中用来跨越machine, process, appdomain进行方法调用的技术,对于三层结构的程序,就可以使用remoting技术来构建它是分布应用的基础技术.相当于以前的DCOM;Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型26. 公司要求开发一个继承System

19、.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路答:根据点击的列头,包该列的ID取出,按照该ID排序后,在绑定到ListView中。28. String s = new String("xyz");创建了几个String Object?答:两个对象,一个是“xyx”字符串常量,一个是值为“xyx”的引用对像s。29. String s=”;和string s=string.Empty;有什么区别,

20、哪一种方式更好?String s=”;先分配一块内存存放”文字常量,s引用该内存,string s=string.Empty;s引用string类中的静态变量地址(静态变量开始会被初始化,所以无论引用多少次,只会分配一次内存),两者比较,后者少了一次内存分配,所以效率更高。30. 构造函数是否可被override?答:不能。31. 是否可以继承String类?答:string 是密封类,所以不能被继承。32. Session有什么重大BUG,微软提出了什么方法加以解决?答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的

21、方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。33. 进程和线程的区别?答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。34. 堆和栈的区别?答:栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小35. 成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员

22、函数负责这种统计的动作。ASP。NET与ASP相比,主要有哪些进步?答:asp解释型,aspx编译型,性能提高,可以跟美工的工作分开进行,更有利于团队开发。36. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?using:A. 引入名称空间B. 放入实现了IDisposable接口的对象,在作用域过后会自动调用该对象的Dispose方法。new :A. 新建实例B. 覆盖父类方法C. 对泛型类型进行约束,规定该类型必须具有无参的公共构造函数37. 需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间

23、有多个空格,但连续的空格数不可超过一个.答:string inputStr=" xx xx "inputStr=inputStr.Trim();inputStr=Regex.Replace(inputStr.Trim()," 2,"," ");注:Replace的第二个参数的”2,”前有一个空格,第三个参数是一个空格,表示,出现了2个或多个空格时将其替换成1个空格。38. 下面这段代码输出什么?为什么?int i=5;int j=5;if (Object.ReferenceEquals(i,j)Console.WriteLine(&q

24、uot;Equal");elseConsole.WriteLine("Not Equal");答:不相等,因为比较的是装箱后堆中的地址;39. 什么叫做SQL注入,如何防止?请举例说明。答:利用sql语言漏洞获得合法身份登陆系统。如身份验证的程序设计成:SqlCommand com=new SqlCommand("Select * from users where username='"+t_name.text+"' and pwd='"+t_pwd.text+"'");o

25、bject obj=com.ExcuteScale();if(obj!=null)/通过验证这段代码容易被sql注入。如用户在t_name中随便输入,在t_pwd中输入abc' or 1='1 就可以进入系统了。可以使用参数方式解决这个问题。40. 什么是反射?答:动态获取程序集、类型等的信息,并可根据这些信息动态的加载程序集、创建类型、动态调用方法,访问类型的成员等。41. 如何写Singleton设计模式答:static属性里面new ,构造函数privatepublic class Singletonprivate static Singleton singleton;p

26、rivate Singleton()public static Singleton CreateInstance()if(singleton=null)singleton=new Singleton();return singleton;43. 什么是虚函数?什么是抽像函数?答:虚函数:可由子类继承并重写的函数。抽像函数:规定其非虚子类必须实现的函数,必须被重写。45. 什么是ASP.net中的用户控件?答:用户控件一般用在内容多为静态,或者少许会改变的情况下.用的比较大.类似ASP中的include.但是功能要强大的多。46. 列举一下你所了解的XML技术及其应用答:xml用于配置,用于保存

27、静态数据类型.接触XML最多的是web Services.和config47. ADO.net中常用的对象有哪些?分别描述一下。答:Connection 数据库连接对像Command 数据库命令DataReader 数据读取器DataAdapterf 数据适配器,用于填充DataSetDataSet 数据集1. 传入某个属性的set方法的隐含参数的名称是什么?value,它的类型和属性所声名的类型相同。2. 如何在C#中实现继承?在类名后加上一个冒号,再加上基类的名称。3. C#支持多重继承么?不支持。可以用接口来实现。4. 被protected修饰的属性/方法在何处可以访问?在继承或间接继承

28、与这个类的子类中可以访问。5. 私有成员会被继承么?会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。6. 请描述一下修饰符protected internal。被protected internal修饰的属性/方法只能在它的在同一个程序集(Assembly)中的子类被访问。7. C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数?两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。8. C#中所有对象共同的基类是什么?System.Ob

29、ject.9. 重载和覆写有什么区别?重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。10. 在方法定义中,virtual有什么含意?被virtual修饰的方法可以被子类覆写。11. 能够将非静态的方法覆写成静态方法么?不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。12. 可以覆写私有的虚方法么?不可以,甚至子类中无法访问父类中的私有方法。13. 能够阻止某一个类被其他类继承么?可以,使用关键字sealed。14. 能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?可以,标记这个类为public,并标

30、记这个方法为sealed。15. 什么是抽象类(abstract class)?一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。16. 何时必须声明一个类为抽象类?当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。17. 接口(interface)是什么?只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。18. 为什么不能指定接口中方法的修饰符?接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。19. 可以继

31、承多个接口么?当然。20. 那么如果这些接口中有重复的方法名称呢?这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。21. 接口和抽象类的区别是什么?接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。22. 如何区别重载方法?不同的参数类型,不同的参数个数,不同的参数顺序。6. 如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?答:this.Server.Transfer7. 请编程遍历页面上所有TextBox控件并给它赋

32、值为string.Empty?答: foreach (System.Windows.Forms.Control control in this.Controls)if (control is System.Windows.Forms.TextBox)System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;tb.Text = String.Empty ;8. 请编程实现一个冒泡排序算法?答: void BubbleSort(SeqList R) /R(l.n)是待排序的文件,采用自下向上扫描,对R做冒泡排序

33、int i,j;Boolean exchange; /交换标志for(i=1;i<n;i+) /最多做n-1趟排序exchange=FALSE; /本趟排序开始前,交换标志应为假for(j=n-1;j>=i;j-) /对当前无序区Ri.n自下向上扫描if(Rj+1.key<Rj.key) /交换记录R0=Rj+1; /R0不是哨兵,仅做暂存单元Rj+1=Rj;Rj=R0;exchange=TRUE; /发生了交换,故将交换标志置为真if(!exchange) /本趟排序未发生交换,提前终止算法return; /endfor(外循环) /BubbleSort9. 描述一下C#中

34、索引器的实现过程,是否只能根据数字进行索引?答:C#中的索引器通常用于索引数组。索引器不单能索引数字(数组下标),还能索引一些HASHMAP的字符串,所以,通常来说,C#中类的索引器通常只有一个,就是THIS,但也可以有无数个,只要你的参数列表不同就可以了索引器和返回值无关不是。可以用任意类型。10. 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+mint n = Convert.ToInt32(TextBox1.Text);int sum = 0;for (int i = 0; i < n + 1;i+ )if (i % 2 = 1)sum = sum + i;e

35、lsesum = sum - i;Response.Write(sum.ToString();11. 用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?答:一般为3层,数据访问层,业务层,表示层。数据访问层对数据库进行增删查改。业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。表示层为了与用户交互例如用户添加表单。优点:分工明确,条理清晰,易于调试,而且具有可扩展性。缺点:增加成本。13. 什么叫应用程序域?答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。15. 什么是装箱和拆箱?答:装箱:用于在垃圾回

36、收堆中存储值类型。装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。拆箱:从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。16. 什么是受管制的代码?答:unsafe:非托管代码。不经过CLR运行。17. 什么是强类型系统?答: RTTI:类型识别系统。18. .net中读写数据库需要用到那些类?他们的作用?答: Connection 数据库连接对象DataSet:数据存储器。DataCommand:执行语句命令。DataAdapter:数据的集合,用语填充。19. ASP.net的身份验证方式有哪些?分别是什么原理?答:提供了3种认证方式

37、: windows身份验证, Forms验证和Passport验证.windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问.Forms验证:用Cookie来保存用户凭证,并将未经身份验证的用户重定向到自定义的登录页.Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务.20. 什么是Code-Behind技术?答:ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写整理.21. 在.net中,配件的意思是?答:程序集。(中间语

38、言,源数据,资源,装配清单)22. 常用的调用WebService的方法有哪些?答:1.使用WSDL.exe命令行工具。2.使用VS.NET中的Add Web Reference菜单选项23. .net Remoting 的工作原理是什么?答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。25. 请详述在dotnet中类(class)与结构(struct)的异同?答:Class可以被实例化,属于引用类型,是分配在内存的堆上的。Struct属于值类型,是分配在内存的栈上的.26. 根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:namespace t

39、estpublic delegate void OnDBOperate();public class UserControlBase : System.Windows.Forms.UserControlpublic event OnDBOperate OnNew;privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)if(e.Button.Equals(BtnNew)/请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。答:if( OnNe

40、w != null )OnNew( this, e );27. 分析以下代码,完成填空string strTmp = "abcdefg某某某"int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;int j= strTmp.Length;以上代码执行完后,i= j=答:i=13,j=1028. SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号答

41、:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)29. 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。public void test(int i)lock(this)if (i>10)i-;test(i);答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生)30. 简要谈一下您对微软.NET 构架下remoti

42、ng和webservice两项技术的理解以及实际中的应用。答: WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。31. 公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。32. 给定以下XML文件,完成算法流程图。<FileSystem>&l

43、t; DriverC ><Dir DirName=”MSDOS622”><File FileName =” C” ></File></Dir><File FileName =”MSDOS.SYS” ></File><File FileName =” IO.SYS” ></File></DriverC></FileSystem>请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。答:void FindFile( Directory d )FileOrFol

44、ders = d.GetFileOrFolders();foreach( FileOrFolder fof in FileOrFolders )if( fof is File )You Found a file;else if ( fof is Directory )FindFile( fof );33. 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。答: 解1: select top 10 * from A where id not in (select top 30 id from A)解2: select top

45、 10 * from A where id > (select max(id) from (select top 30 id from A )as A)34. 面向对象的语言具有_性、_性、_性答:封装、继承、多态。35. 能用foreach遍历访问的对象需要实现 _接口或声明_方法的类型。答:IEnumerable 、 GetEnumerator。36. GC是什么? 为什么要有GC?答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc()或者 Runtime.getRuntime().gc()37. S

46、tring s = new String("xyz");创建了几个String Object?答:两个对象,一个是"xyz",一个是指向"xyz"的引用对象s。39. 启动一个线程是用run()还是start()?答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class

47、)?答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。41. 构造器Constructor是否可被override?答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。42. 是否可以继承String类?答:String类是final类,故不可以继承。43. try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后?答:会执行,在return前执行。44. 两个对象值相同(x.

48、equals(y) = true),但却可有不同的hash code,这句话对不对?答:不对,有相同的hash code。45. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。46. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?答:不能,一个对象的一个synchronized方法只能由

49、一个线程访问。47. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?答:都不能。50. 数组有没有length()这个方法? String有没有length()这个方法?答:数组没有length()这个方法,有length的属性。String有length()这个方法。52. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。

50、可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。53. 谈谈final, finally, finalize的区别。答:final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally再异常处理时提供 finally 块来执行任何清除

51、操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。finalize方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。54. 如何处理几十万条并发数据?答:用存储过程或事务。取得最大标识的时候同时更新.注意

52、主键不是自增量方式这种方法并发的时候是不会有重复主键的.取得最大标识要有一个存储过程来获取.55. Session有什么重大BUG,微软提出了什么方法加以解决?答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。56. 进程和线程的区别?答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。57. 堆和栈的区别?答:栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上

53、。堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。58. 成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。61. 请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。答: session(viewstate) 简单,但易丢失application 全局cookie 简单,但可能不支持,可能被伪造input type="hidden" 简单,可能被伪造url参数简单,显示

54、于地址栏,长度有限255个字符数据库稳定,安全,但性能相对弱62. C中接口和类的异同答:接口和类都是类,不同的是,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。63. DataReader和DataSet的异同答:DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库.任何对SqlConnection的操作都会引发DataReader的异常.因为DataRe

55、ader每次只在内存中加载一条数据,所以占用的内存是很小的.因为DataReader的特殊性和高性能.所以DataReader是只进的.你读了第一条后就不能再去读取第一条了.DataSet则是将数据一次性加载在内存中.抛弃数据库连接.读取完毕即放弃数据库连接.因为DataSet将数据全部加载在内存中.所以比较消耗内存.但是确比DataReader要灵活.可以动态的添加行,列,数据.对数据库进行回传更新操作.64. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?答:Using 引入一个命名空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写65. 下面的例子中using System;class Apublic static int X;static A()X=B.Y+1;class Bpublic static int Y=A.X+1;static B()static void Main()Console.WriteL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论