C#100个经典⾯试题
摘抄:
1. .NET和C#有什么区别
答:.NET⼀般指 .NET FrameWork框架,它是⼀种平台,⼀种技术。
C#是⼀种编程语⾔,可以基于.NET平台的应⽤。
2.⼀列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,⽤递归算法实现。
答:public class MainClass
{
public static void Main()
字符串长度web{
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);
}
}
递归详细介绍:
3. C#中的委托是什么?事件是不是⼀种委托?
答 : 委托可以把⼀个⽅法作为参数代⼊另⼀个⽅法。
委托可以理解为指向⼀个函数的引⽤。
是,是⼀种特殊的委托
4. 简述 private、 protected、 public、internal 修饰符的访问权限。
答 . private : 私有成员, 在类的内部才可以访问。
protected: 保护成员,该类内部和继承类中可以访问。
public: 公共成员,完全公开,没有访问限制。
internal:在同⼀命名空间内可以访问。
5. override与重载的区别
答:override 与重载的区别。重载是⽅法的名称相同。参数或参数类型不同,进⾏多
次重载以适应不同的需要
Override是进⾏基类中函数的重写。为了适应需要。
6.如果在⼀个B/S结构的系统中需要传递变量值,但是⼜不能使⽤Session、Cookie、Application,您有⼏种⽅法进⾏处理?答:  this.Server.Transfer
7. 请编程遍历页⾯上所有TextBox控件并给它赋值为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. 请编程实现⼀个冒泡排序算法?
答:
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 (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
9. 描述⼀下C#中索引器的实现过程,是否只能根据数字进⾏索引?
答:不是。可以⽤任意类型。
10. 求以下表达式的值,写出您想到的⼀种或⼏种实现⽅法:1-2+3-4+……+m 答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum - I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
11. 在下⾯的例⼦⾥
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;x= 1 y = -1
12. CTS、CLS、CLR分别作何解释?
答:CTS:通⽤语⾔系统。CLS:通⽤语⾔规范。CLR:公共语⾔运⾏库。
13. 什么是装箱和拆箱?
答:从值类型接⼝转换到引⽤类型装箱。从引⽤类型转换到值类型拆箱。14. 什么是受管制的代码?
答:unsafe:⾮托管代码。不经过CLR运⾏。
15.什么是强类型系统?
答:RTTI:类型识别系统。
16中读写数据库需要⽤到那些类?他们的作⽤?
答:DataSet:数据存储器。
DataCommand:执⾏语句命令。
DataAdapter:数据的集合,⽤语填充。
17.列举ASP.NET页⾯之间传递值的⼏种⽅式。
答. 1).使⽤QueryString, 如....?id=1; response. Redirect()....
2).使⽤Session变量
3).使⽤Server.Transfer
18.什么是Code-Behind技术?
答:代码后植。
19.在中,配件的意思是?
答:程序集。(中间语⾔,源数据,资源,装配清单)
20.常⽤的调⽤WebService的⽅法有哪些?
答:1.使⽤命令⾏⼯具。
2.使⽤VS.NET中的Add Web Reference菜单选项
21.Remoting 的⼯作原理是什么?
答:服务器端向客户端发送⼀个进程编号,⼀个程序域编号,以确定对象的位置。
22.在C#中,string str = null 与 string str = “” 请尽量使⽤⽂字或图
象说明其中的区别。
答:string str = null 是不给他分配内存空间,⽽string str = "" 给它分配
长度为空字符串的内存空间。
23.请详述在dotnet中类(class)与结构(struct)的异同?
答:Class可以被实例化,属于引⽤类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
24.分析以下代码,完成填空
stringstrTmp = "abcdefg某某某";
inti= System.Text.Encoding.Default.GetBytes(strTmp).Length;
intj= strTmp.Length;
以上代码执⾏完后,i= j=
答:i=13,j=10
25.SQLSERVER服务器中,给定表table1 中有两个字段 ID、LastUpdateDate,ID表⽰更新的事务号,LastUpdateDate表⽰更新时的服务器时间,请使⽤⼀句SQL语句获得最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX (LastUpdateDate)FROM table1)
26.简要谈⼀下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应⽤。
答:WS主要是可利⽤HTTP,穿透防⽕墙。⽽Remoting可以利⽤TCP/IP,⼆进制传送提⾼效率。
27.公司要求开发⼀个继承System.Windows.Forms.ListView类的组件,要求达到
以下的特殊功能:点击ListView各列列头时,能按照点击列的每⾏值进⾏重排视
图中的所有⾏ (排序的⽅式如DataGrid相似)。根据您的知识,请简要谈⼀下您的
思路
答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。
28.写出⼀条Sql语句:取出表A中第31到第40记录(SQLServer,以⾃动增长的ID
作为主键,注意:ID可能不是连续的。
答:解1: select top 10 * from A where id not in (select top 30 id
fromA)
解2: select top 10 * from A where id >(select max(id) from (select
top30 id from A )as A)
29.⾯向对象的语⾔具有________性、_________性、________性
答:封装、继承、多态。
30.能⽤foreach遍历访问的对象需要实现 ________________接⼝或声明
________________⽅法的类型。
答:IEnumerable 、 GetEnumerator。
31.GC是什么? 为什么要有GC?
答:GC是垃圾收集器。程序员不⽤担⼼内存管理,因为垃圾收集器会⾃动进⾏管理。要请求垃圾收集,可以调⽤下⾯的⽅法之⼀:
<()
32.Strings = new String("xyz");创建了⼏个String Object?
答:两个对象,⼀个是“xyx”,⼀个是指向“xyx”的引⽤对象s。
33.启动⼀个线程是⽤run()还是start()?
答:启动⼀个线程是调⽤start()⽅法,使线程所代表的虚拟处理机处于可运⾏状
态,这意味着它可以由JVM调度并执⾏。这并不意味着线程就会⽴即运⾏。run()
⽅法可以产⽣必须退出的标志来停⽌⼀个线程。
34.接⼝是否可继承接⼝? 抽象类是否可实现(implements)接⼝? 抽象类是否可
继承实体类(concrete class)?
答:接⼝可以继承接⼝。抽象类可以实现(implements)接⼝,抽象类是否可继承
实体类,但前提是实体类必须有明确的构造函数。
35.构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
36.是否可以继承String类?
答:String类是final类故不可以继承。
<{}⾥有⼀个return语句,那么紧跟在这个try后的finally {}⾥的code会
不会被执⾏,什么时候被执⾏,在return前还是后?
答:会执⾏,在return前执⾏。
38.两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句
话对不对?
答:不对,有相同的hash code。
39.swtich是否能作⽤在byte上,是否能作⽤在long上,是否能作⽤在String上?答:switch(expr1)中,expr1是⼀个整数表达式。因此传递给 switch 和
case语句的参数应该是 int、 short、 char 或者 byte。long,string 都不
能作⽤于swtich。
40.当⼀个线程进⼊⼀个对象的⼀个synchronized⽅法后,其它线程是否可进⼊此对象的其它⽅法?
不能,⼀个对象的⼀个synchronized⽅法只能由⼀个线程访问。
41.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能。
42.List,Set, Map是否继承⾃Collection接⼝?
答:List,Set是Map不是
43.Set⾥的元素是不能重复的,那么⽤什么⽅法来区分重复与否呢? 是⽤==还是equals()?它们有何区别?
答:Set⾥的元素是不能重复的,那么⽤iterator()⽅法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==⽅法决定引⽤值是否指向同⼀对象equals()在类中被覆盖,为的是当两个分离的对象的内容
和类型相配的话,返回真值。
44.数组有没有length()这个⽅法? String有没有length()这个⽅法?
答:数组没有length()这个⽅法,有length的属性。String有有length()这个⽅
法。
45.sleep()和 wait() 有什么区别?
答:sleep()⽅法是使线程停⽌⼀段时间的⽅法。在sleep 时间间隔期满后,线程不⼀定⽴即恢复执⾏。这是因为在那个时刻,其它线程可能正在运⾏⽽且没有被调度为放弃执⾏,除⾮(a)“醒来”的线程具有更⾼的优先级
(b)正在运⾏的线程因为其它原因⽽阻塞。
wait()是线程交互时,如果线程对⼀个同步对象x 发出⼀个wait()调⽤,该线程
会暂停执⾏,被调对象进⼊等待状态,直到被唤醒或等待时间到。
46.shorts1 = 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; s1 += 1正

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。