C#试题127道题.docx
- 文档编号:17880324
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:29
- 大小:32.74KB
C#试题127道题.docx
《C#试题127道题.docx》由会员分享,可在线阅读,更多相关《C#试题127道题.docx(29页珍藏版)》请在冰点文库上搜索。
C#试题127道题
1.简述private、protected、public、internal修饰符的访问权限。
答.private:
私有成员,在类的内部才可以访问。
protected:
保护成员,该类内部和子类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
2.列举ASP.NET页面之间传递值的几种方式。
答.
1.使用QueryString.
2.使用Session变量
3.使用Server.Transfer
3.一列数的规则如下:
1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。
答:
publicclassMainClass
{
publicstaticvoidMain()
{
Console.WriteLine(Foo(30));
}
publicstaticintFoo(inti)
{
if(i<=0)
return0;
elseif(i>0&&i<=2)
return1;
elsereturnFoo(i-1)+Foo(i-2);
}
}
4.C#中的委托是什么?
事件是不是一种委托?
答:
委托是一种类型,该类型专门存储方法的地址
委托可以理解为指向一个方法的引用。
是,事件是一种特殊的委托
5.override与overload的区别
答:
override与overload的区别。
overload是在同一个类中方法的名称相同,参数列表不同,进行多次重载以适应不同的需要
Override是在父子类中,子类的方法重写父类的同名方法,以此形成多态
6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答:
1.URL传值
2.Cache(缓存)传递
3.存入配置文件,下一个页面取出来
7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
答:
foreach(System.Windows.Forms.Controlcontrolinthis.Controls)
{
if(controlisSystem.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;
tb.Text=String.Empty;
}
}
8.请编程实现一个冒泡排序算法?
答:
int[]array=newint[]{34,5,6,7,81,11,23,4};
inttemp=0;
for(inti=0;i { for(intj=i+1;j { if(array[j] { temp=array[i]; array[i]=array[j]; array[j]=temp; } } } 9.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答: 1.在类中创建一个特殊的属性,名称为this,可以设定参数,并提供get和set访问器 2..不是,可以用任意类型进行索引,而且可以进行重载 10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m 答: intNum=this.TextBox1.Text.ToString(); intSum=0; for(inti=0;i { if((i%2)==1) { Sum+=i; } else { Sum=Sum-I; } } System.Console.WriteLine(Sum.ToString()); System.Console.ReadLine(); 11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答: 一般为3层 数据访问层,业务层,表示层。 数据访问层对数据库进行增删查改。 业务层处理系统的业务逻辑,并对数据访问层的操作进行中转 表示层为了与用户交互例如用户添加表单。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。 12.在下面的例子里 usingSystem; classA { publicA() { PrintFields(); } publicvirtualvoidPrintFields(){} } classB: A { intx=1; inty; publicB() { y=-1; PrintFields(); } publicoverridevoidPrintFields() { Console.WriteLine("x={0},y={1}",x,y); } 当使用newB()创建B的实例时,产生什么输出? 答: X=1,Y=0;x=1y=-1 13.什么叫应用程序域? 答: 应用程序域可以理解为一种轻量级进程。 起到安全的作用。 占用资源小。 14.CTS、CLS、CLR分别作何解释? 答: CTS: 通用类型系统。 CLS: 公共语言规范。 CLR: 公共语言运行时。 CTS和CLS是CLR的子集 15.什么是装箱和拆箱? 答: 从值类型转换到引用类型装箱。 从引用类型转换到值类型拆箱。 16.什么是受管制的代码? 答: 指的是非托管代码(不安全代码)。 不经过CLR运行。 17.什么是强类型系统? 答: 指的是类型识别系统,一般使用泛型来规定类型的称为强类型,使用object未对类型进行约束的称为弱类型。 中读写数据库需要用到那些类? 他们的作用? 答: DataSet: 数据存储器。 DataCommand: 执行语句命令。 DataAdapter: 数据的集合,用语填充。 DataConnection: 数据连接对象 DataReader: 结果集 19.ASP.net的身份验证方式有哪些? 分别是什么原理? 答: 1.Windwos验证: 指的是使用Windows系统的认证 2.Passport验证: 连接到Passport服务站点去进行验证 3.From验证: 通过颁发票证来进行验证 20.什么是Code-Behind技术? 答: 显示和代码的分离技术,实现代码后置. 21.在.net中,配件的意思是? 答: 程序集。 (中间语言,源数据,资源,装配清单) 22.常用的调用WebService的方法有哪些? 答: 1.使用WSDL.exe命令行工具。 2.使用.NET中的AddWebReference菜单选项 Remoting的工作原理是什么? 答: 服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。 24.在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别。 答: stringstr=null是不给他分配内存空间,而stringstr=""给它分配长度为空字符串的内存空间。 25.请详述在中类(class)与结构(struct)的异同? 答: Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的,所以struct可以不用new来开辟空间,也不可以被继承. 26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespacetest { publicdelegatevoidOnDBOperate(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse); publicclassUserControlBase: System.Windows.Forms.UserControl { publiceventOnDBOperateOnNew; privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse) { if(e.Button.Equals(BtnNew)) { //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。 } } } 答: if(OnNew! =null) OnNew(this,e); 27.分析以下代码,完成填空 stringstrTmp="abcdefg某某某"; inti=System.Text.Encoding.Default.GetBytes(strTmp).Length; intj=strTmp.Length; 以上代码执行完后,i=j= 答: i=13,j=10 28.SQLSERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号 答: SelectIDFROMtable1WhereLastUpdateDate=(SelectMAX(LastUpdateDate)FROMtable1) 29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁? 并简要说明理由。 publicvoidtest(inti) { lock(this) { if(i>10) { i--; test(i); } } } 答: 不会发生死锁,(因为lock锁的方法中的代码段,递归调用的时候已经跳出的lock锁定的代码段,不会造成死锁) 30.简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。 答: WS主要是可利用HTTP,穿透防火墙。 而Remoting可以利用TCP/IP,二进制传送提高效率。 31.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能: 点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行(排序的方式如DataGrid相似)。 根据您的知识,请简要谈一下您的思路 答: 根据点击的列头,将该列的ID取出,按照该ID排序后,在给绑定到ListView中。 32.给定以下XML文件,完成算法流程图。 请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。 答: voidFindFile(Directoryd) { FileOrFolders=d.GetFileOrFolders(); foreach(FileOrFolderfofinFileOrFolders) { if(fofisFile) YouFoundafile; elseif(fofisDirectory) FindFile(fof); } } 33.写出一条Sql语句: 取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意: ID可能不是连续的。 答: 解1: selecttop10*fromAwhereidnotin(selecttop30idfromA) 解2: selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA) 34.面向对象的语言具有________性、_________性、________性 答: 封装、继承、多态。 35.能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。 答: IEnumerable、GetEnumerator。 36.GC是什么? 为什么要有GC? 答: GC是垃圾收集器。 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。 要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc() 37.Strings=newString("xyz");创建了几个StringObject? 答: 两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。 38.abstractclass和interface有什么区别? 答: 本质上有区别,abstract仍然是一个类,拥有类的行为和属性,只是有的行为是抽象的 Interface已经不再是一个类,是一种约束类的规范,他里面只有抽象的行为对实现类进行约束 39.启动一个线程是用run()还是start()? 答: 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。 这并不意味着线程就会立即运行。 run()方法可以产生必须退出的标志来停止一个线程。 40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concreteclass)? 答: 接口可以继承接口。 抽象类可以实现(implements)接口,抽象类可继承实体类。 41.构造器Constructor是否可被override? 答: 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 42.是否可以继承String类? 答: String类是final类故不可以继承。 43.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? 答: 会执行,在return跳转前执行。 44.C#当中两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对? 答: 不对,值相对hashcode一定相对 45.C#中swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答: 都可以. 47.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的该方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 51.数组有没有length()这个方法? String有没有length()这个方法? 答: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 52.sleep()和wait()有什么区别? 答: sleep()方法是使线程停止一段时间的方法。 在sleep时间间隔期满后,线程不一定立即恢复执行。 这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。 wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 53.shorts1=1;s1=s1+1;有什么错? shorts1=1;s1+=1;有什么错? 答: shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。 可修改为s1=(short)(s1+1)。 shorts1=1;s1+=1正确。 54.谈谈final,finally,finalize的区别。 答: final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。 因此一个类不能既被声明为abstract的,又被声明为final的。 将变量或方法声明为final,可以保证它们在使用中不被改变。 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。 被声明为final的方法也同样只能使用,不能重载 finally—再异常处理时提供finally块来执行任何清除操作。 如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。 finalize—方法名。 Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。 这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。 它是在Object类中定义的,因此所有的类都继承了它。 子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。 finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 55.如何处理几十万条并发数据? 答: 用存储过程或事务。 取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取. 56.Session有什么重大BUG,微软提出了什么方法加以解决? 答: 是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sateserver或SQLServer数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。 57.进程和线程的区别? 答: 进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。 58.堆和栈的区别? 答: 栈: 由编译器自动分配、释放。 值类型通常在栈上。 堆: 一般由程序员分配释放。 用new、malloc等分配内存函数分配得到的就是在堆上。 59.成员变量和成员函数前加static的作用? 答: 它们被称为常量成员,只能使用类名来调用,整个程序中只有一个空间 60.ASP。 NET与ASP相比,主要有哪些进步? 答: asp解释形,aspx编译型,性能提高,有利于保护源码。 61.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 int[]intArr=newint[100]; ArrayListmyList=newArrayList(); Randomrnd=newRandom(); while(myList.Count<100) { intnum=rnd.Next(1,101); if(! myList.Contains(num)) myList.Add(num); } for(inti=0;i<100;i++) intArr[i]=(int)myList[i]; 62.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 答: session(viewstate)简单,但易丢失 application全局 cookie简单,但可能不支持,可能被伪造 inputttype="hidden"简单,可能被伪造 url参数简单,显示于地址栏,长度有限 数据库稳定,安全,但性能相对弱 63.请指出GAC的含义? 答: 全局程序集缓存。 64.向服务器发送请求有几种方式? 答: get,post。 get一般为链接方式,post一般为按钮方式。 65.DataReader与Dataset有什么区别? 答: 一个是只能向前的只读游标,一个是内存中的表。 66.软件开发过程一般有几个阶段? 每个阶段的作用? 答: 需求分析,架构设计,代码编写,QA,部署 67.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义? using指令和语句new创建实例new隐藏基类中方法。 答: using引入名称空间或者使用非托管资源 new新建实例或者隐藏父类方法 68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个. 答: stringinputStr="xxxx"; inputStr=Regex.Replace(inputStr.Trim(),"*",""); 69.下面这段代码输出什么? 为什么? inti=5; intj=5; if(Object.ReferenceEquals(i,j)) Console.WriteLine("Equal"); else Console.WriteLine("NotEqual"); 答: 不相等,因为比较的是对象 70.什么叫做SQL注入,如何防止? 请举例说明。 答: 利用sql关键字对网站进行攻击。 过滤关键字’等 71.什么是反射? 答: 动态获取程序集信息 72.用Singleton如何写设计模式 答: static属性里面new,构造函数private 73.什么是ApplicationPool? 答: Web应用,类似ThreadPool,提高并发性能。 74.什么是虚函数? 什么是抽象函数? 答: 虚函数: 没有实现的,可由子类继承并重写的函数。 抽象函数: 规定其非虚子类必须实现的函数,必须被重写。 75.什么是XML? 答: XML即可扩展标记语言。 eXtensibleMarkupLanguage.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。 如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 试题 127 道题