net面试全攻.docx
- 文档编号:18479389
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:94
- 大小:54.50KB
net面试全攻.docx
《net面试全攻.docx》由会员分享,可在线阅读,更多相关《net面试全攻.docx(94页珍藏版)》请在冰点文库上搜索。
net面试全攻
原创.net面试题1收藏
1.水仙花数
三位正整数、153=1~3+5~3+3~3
For(inti=100;i<1000;i++)
{
Intbai=0;
Intshi=0;
Intge=0;
IntbaiYushu=0;
bai=i/100;
baiYushu=i%100;
shi=baiYushu/10;
ge=baiYushu%10;
if(i==bai*bai*bai+shi*shi*shi+ge*ge*ge)
{
Response.Write(“水仙花数:
”+i+”
”);
}
}
2.斐波数列:
:
:
:
递归
1,1,2,3,5,8,13,21,……….
privateintFun_Feibo(intintN)
{
intintResult=0;
if(intN==1)
{
intResult=1;
}
else
{
if(intN==2)
{
intResult=1;
}
else
{
//这里需要递归
intResult=Fun_Feibo(intN-2)+Fun_Feibo(intN-1);
}
}
returnintResult;
}
3.C#中的委托是什么?
事件是不是一种委托?
委托,顾名思义,就是中间代理人的意思。
[可以把一个方法作为参数代入另一个方法]
委托可以理解为指向一个函数的引用,【指向函数的指针】
是,是一种特殊的委托
//1.声明委托
//delegatevoid(int,string)deleName(参数列表);
//2.声明方法
//修饰符返回类型方法名(参数列表)
//{
//方法体;
//}
//3创建委托对象,指向所希望包含方法
//deleNameobjDele=newdeleName(具体的方法名);
//4,委托对象调用包含在其中的各个方法
//objDele(实参);
//1.声明委托,放到类类边,并且和方法平行,并且不能有【委托体】(不能带一对花括号)
delegateintdeleTwoInt(inta,intb);
//2.声明方法
publicstringAdd(intm,intn)//参数签名:
参数个数、参数类型、参数顺序:
返回类型不能构成重载
{
returnm+n;
}
publicintSurplus(intm,intn)
{
returnm-n;
}
//3创建委托对象,指向所希望包含方法
inta=10;
intb=3;
deleTwoIntdele=newdeleTwoInt(Add);
//4,委托对象调用包含在其中的各个方法
Response.Write(dele(a,b)+'
');
4.重载,覆盖===》多态
Aoverload
【方法的签名】:
参数个数+参数类型+参数顺序
返回类型不能构成重载
Boverride,virtual
子类覆盖父类中对应的虚函数
C,override与overload的区别
a.overload在同一个类里,不同的【方法签名】
b.override在不同的类里边,并且这两个类存在继承关系,并且子类的方法要覆盖父类的同签名的方法,
c.overload是多个方法、override是一个方法
d.继承的时候,子类首先继承父类的构造方法
Override的时候,首先继承父类的构造方法,如果构造方法调用了虚函数,那么紧接着调用子类的覆盖方法
然后,才进入子类的构造方法
5.列举ASP.NET页面之间传递值的几种方式。
A.post,Request.Params[“上一个页面控件的Name”]
Html?
aspx,aspx?
aspx
B.get,Request.QueryString[“参数名”]
abc.aspx?
id=xxx&name=zhangsan,Request.QueryString[“id”]
C.如何在不改变url的情况下转到另一个页面
Server.Transfer(“目的url”,true);
只能是:
apsx?
aspx
Request.Form[“上一个页面控件的ID,属性名,公共方法名”]
D.Session,Application,Cookie,多个页面之间共享【变量】,
webForm1:
protectedSystem.Web.UI.WebControls.TextBoxTextBox1;
protectedSystem.Web.UI.WebControls.TextBoxlblName;
//公共属性
publicstringTime
{
get{returnDateTime.Now.ToString();}
}
//公共方法
publicstringTestFun()
{
return'FunctionofWebForm1Called';
}
WebForm2:
stringstrTxt='';
WebForm1oForm=(WebForm1)this.Context.Handler;
strTxt+='文本框1:
'+Request.Form['TextBox1']+'
';
strTxt+='TimeProperty:
'+oForm.Time+'
';
//strTxt+='ContextString:
'+Context.Items['Context'].ToString()+'
';
strTxt+='姓名:
'+Request.Form['lblName'].Trim()+'
';
strTxt+=oForm.TestFun()+'
';
Literal1.Text=strTxt;
6.请说明Cookie和Session的区别
ACookie是客户端的,Session是服务器端的
B,Session是真正面向对象的概念,它可以存储任何数据类型
C,Cookie安全性低,Session安全性高
DCookie省服务器资源,Session耗服务器资源
E,他们都可以在页面之间传递参数
7.请说明Session和Application的区别
A,他们都可以传递参数,他们都在global中初始化
B,Session是对应于多个客户端,并且每个存放的值都不同
C,Application只要名字相同,存放的值就相同
8.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
只能用在Windows项目里
foreach(System.Windows.Forms.Controlcontrolinthis.Controls)
{
if(controlisSystem.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBoxtb=(System.Windows.Forms.TextBox)control;
tb.Text=String.Empty;
}
}
9.请编程实现一个冒泡排序算法?
Int[]arrAge=newint[5];
给数组元素赋初始值
For(inti=0;i<5;i++)
{
IntintTemp=0;
For(intj=i+1;j<5;j++)
{
If(arrAge[i] { intTemp=arrAge[i]; arrAge[i]=arrAge[j]; arrAge[j]=intTemp; } } } 10.描述一下C#中【索引器】的实现过程,是否只能根据数字进行索引? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 答: 不是。 可以用任意类型。 11.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m StringstrSQL=“”; For(inti=1;i<=m;i++) { If(i==1) { strSQL+=i; } Else { If(i%2==0) { StrSQL+=“-“+I; } Else { StrSQL+=“+”+I; } } } 12.在下面的例子里 usingSystem; classA { publicA() { PrintFields(); } publicvirtualvoidPrintFields(){}//虚方法、 } classB: A { intx=1; inty; publicB() { y=-1; ////2. PrintFields(); } publicoverridevoidPrintFields() { Console.WriteLine('x={0},y={1}',x,y); } 当使用newB()创建B的实例时,产生什么输出? ///1.X=1,y=0,,, ///2.X=1,y=0 X=1,y=-1 13.CTS、CLS、CLR分别作何解释? 答: CTS: 通用语言系统。 CLS: 通用语言规范。 CLR: 公共语言运行库? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CTS: commonlanguagesystem CLS: commonlanguagecriterion: CLR: commonlanguageruntime 14.什么是装箱和拆箱? Boxing,unboxing: : value(结构struct、枚举? ? ? ),ref(string,数组、类、委托) 从值类型转换到引用类型装箱。 从引用类型转换到值类型拆箱。 ObjectobAge=“3”; IntintAge=(unBoxing)obAge;? ? ? ? 15.什么是受管制的代码? 答: unsafe: 非托管代码。 不经过CLR运行。 16.什么是强类型系统? 答: RTTI: 类型识别系统: : 【每一个变量必须有明确的类型】 C#: int,string,char,bool, IntintAge=102; IntintTemp=intAge/100; Javascript: 变量不定义,而直接使用,它的类型根据运算结果来确定! intMM=102/5; 17.net中读写数据库需要用到那些类? 他们的作用? 1)SqlServer: SqlConnection,连接数据库,用到ConnectionString SqlCommand,: 传递sql命令 SqlDataAdapter,: 适配器,将数据库返回的结果(table方式)转换成.Net里的DataSet.Tables[0](DataTable) DataSet: 容器 -------------------------------------------------------- System.Data.SqlClient.SqlConnection; System.Data.SqlClient.SqlCommand; System.Data.SqlClient.SqlDataAdapter; System.Data.DataSet; System.Data.SqlClient.SqlParameter; -------------------------------------------------------- SqlConnectionsqlCn=newSqlConnection(ConnectionString); SqlCommandsqlCmd=newSqlCommand(sql语句,sqlCn); sqlCmd.ExecuteNonQuery(); SqlDataAdaptersqlAdapter=newSqlDataAdapter(Sql语句,sqlCn); sqlAdapter.Fill(DataSet,“名字”); 2)Access,DB2, OleDbConnection: OleDbCommand: OleDbDataAdapter: DataSet 3)Oracle: OracleConnection: OracleCommand: OracleDataAdapter: DataSet 18.在.net中,配件的意思是? 答: 程序集(assembly)。 (中间语言,源数据,资源,装配清单) Dll,CLR(通用语言运行时) 19.常用的调用WebService的方法有哪些 在互联网之间共享dll,? ? ? ? ? ? ? ? 1.使用WSDL.exe命令行工具。 2.使用VS.NET中的AddWebReference菜单选项 创建方法: 第一步,创建webservice文件, 第二步,在另外一个项目中,通过URL来添加web引用 第三步,通过完整命名空间来调用webservice里提供的方法 20.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁? 并简要说明理由。 ? ? ? ? ? ? ? ? publicvoidtest(inti) { lock(this) { if(i>10) { i--; test(i); } } } 答: 不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。 但如果把int换做一个object,那么死锁会发生) 21.给定以下XML文件,完成算法流程图。 请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。 答: voidFindFile(Directoryd) { //System.IO.Directory FileOrFolders=d.GetFileOrFolders(); foreach(FileOrFolderfofinFileOrFolders) { if(fofisFile) YouFoundafile+'FileName'; elseif(fofisDirectory) FindFile(fof); } } 22.GC是什么? 为什么要有GC? : : GalleryCollection 答: GC是垃圾收集器。 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。 要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc() //Ds.Dispose(); //net机制,隔一定的时间,它会自动释放无用的资源(内存) 23.Strings=newString('xyz');创建了几个StringObject? 答: 两个对象,一个是“xyz”,一个是指向“xyz”的引用对像s(指针)。 24.abstractclass和interface有什么区别? 答: 声明方法的存在而不去实现它的类被叫做抽像类(abstractclass), 它用于要创建一个体现某些基本行为的类,抽象类不能被实例化 abstactclassA {} Aa=newA();//这个是错误的 classB: A {} Bb=newB(); Aa=b; ------------------- 然而可以创建一个变量,其类型是一个抽像类, 并让它指向【具体子类】的一个实例。 ------------------- ===》不能有抽像构造函数或抽像静态方法。 抽象类的方法必须全部被子类继承: : 如果子类也是抽象的,那么就不必全部继承 接口(interface)是抽像类的【变体】。 在接口中,所有方法都是抽像的;;在抽象类中,有些方法可以不是抽象的。 多继承性可通过接口实现。 接口中的所有方法都是抽像的,没有一个有【方法体】。 interfaceA {} interfaceB {} abstractclassA1() {} abstractclassA2 {} classc: A1,A,B {} 25.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concreteclass)? 答: 接口可以继承接口。 抽像类可以实现(implements)接口, 抽像类是可继承实体类, 但前提是实体类必须有明确的构造函数。 26.构造器Constructor是否可被override? 答: 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 构造函数可以被重载;每一个类都有一个默认的构造函数,该函数没有参数;它可以不写! ! ////////但是,如果你想重载构造函数,就必须把默认的构造函数明确的写出来! ///// ==》构造函数不能被继承,当然就不能被override 27是否可以继承String类? StringBuilder,int,double,…… 答: String类是final类故不可以继承。 //final类不能被继承 28.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答: switch(expr1)中,expr1是一个整型(int,short,long,byte,ushort,uint,ulong,sbyte),字符或字符串, 因此可以作用在byte和long上,也可以作用在string上。 29.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 答: 都不能。 30.数组有没有length()这个方法? String有没有length()这个方法? 答: 数组和string都没有Length()方法,只有Length属性。 31.shorts1=1;s1=s1+1;有m没有什么错? shorts1=1;s1+=1;有没有错? 答: shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。 可修改为s1=(short)(s1+1)。 shorts1=1; s1+=1正确。 32.谈谈final,finally,finalize的区别。 答: ===【final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。 因此一个类不能既被声明为abstract的,又被声明为final的。 抽象类必须被继承,而final必须不被继承。 。 。 将变量或方法声明为final,可以保证它们在使用中不被改变。 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。 被声明为final的方法也同样只能使用,不能重载;更不更被override】 ===finally【try..catch..finally】-再异常处理时提供finally块来执行任何清除操作。 如果抛出一个异常,那么相匹配的catch子句就会执行, 然后控制就会进入finally块(如果有的话)。 finalize-方法名。 。 ===finalize()方法是在垃圾收集器删除对像之前对这个对象调用的。 33.如何处理几十万条并发数据? 答: 用存储过程或事务。 取得最大标识的时候同时更新.. 注意主键是自增量方式这种方法并发的时候是不会有重复主键的.. 取得最大标识要有一个存储过程来获取.getMaxID()selectmax(id)fromTableName 34.Session有什么重大BUG,微软提出了什么方法加以解决? 【Session会丢失】 答: 是iis中由于有进程回收机制,系统繁忙的话Session会丢失, 可以用Sateserver或SQLServer数据库的方式存储Session不过这种方式比较慢, 而且无法捕获Session的END事件。 35.堆和栈的区别? 答: 栈是编译期间就分配好的内存空间, 因此你的代码中必须就栈的大小有明确的定义; inta=0;a=5; 堆是程序运行期间动态分配的内存空间, 你可以根据程序的运行情况确定要分配的堆内存的大小 System.Text.StringBuildstrValue=newSystem.Text.StringBuild(); strValue.Append(@'hello,world'+'\r\n'); strValue.Append(@'张三你好! '+'\r\n'); 36.成员变量和成员函数前加static的作用? 答: 它们被称为,又称为类成员变量和类成员函数。 分别用来反映类的状态。 比如类成员变量可以用来统计类实例的数量, 类成员函数负责这种统计的动作。 ====>静态的,它就是不能被实例化,每次运行的时候,直接用类名来调用。 37.ASP。 NET与ASP相比,主要有哪些进步? 答: asp解释形,aspx编译型,性能提高,(前、后台代码分离,幕后代码)可以跟美工的工作分开进行,更有利于团队开发。 38.产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 int[]intArr=newint[100]; Arr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- net 面试