想换工作的朋友可以试着做一下:1.CLR、CTS、CLS分别是什么意思?公共语言运行库,通用类型系统,公共语言规范2.什么是基元类型?由编译器直接支持的数据类型称为基元类型.
例如:C#中的int,string等等就是,实际运行过程中被映射为FCL中对应的类型(java中叫做包装类)如:System.Int32,System.String.
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxintro/html/7e4c5921-955d-4b06-8709-101873acf157.htm3.值类型和引用类型的区别是什么?为什么要设计值类型?值类型会被GC回收吗?值类型是否能在托管堆分配?
值类型的内容存储在堆栈上分配的内存中
引用类型的变量又称为对象,可存储对实际数据的引用
使用栈效率较高,但值类型的生命周期有限,不适合在不同类之间共享数据。
相反,引用类型(例如,类或数组的实例)在另一个称为“堆”的内存区域中分配
2.设计值类型为了效率高,快速分配空间
3.它在栈上,不会被GC回收.(GC只回收托管堆上的内容)
4.不可以,除非将它装箱.4.Equals、==、ReferenceEquals如何区别使用?
Equals确定指定的实例是否被视为相等,但是如果为空就不能被调用,常被重写override
==:对于预定义的值类型,如果操作数的值相等,则相等运算符(==)返回true,否则返回false。对于string以外的引用类型,如果两个操作数引用同一个对象,则==返回true。对于string类型,==比较字符串的值。
例子:
staticvoidMain(string[]args)
{
ints1=10;
ints2=10;
Console.WriteLine(s1.Equals(s2));
Console.WriteLine(s1==s2);
Console.WriteLine(ReferenceEquals(s1,s2));
strings1=null;
strings2=null;
strings1="A";
strings2="A";
Cs1=newC();
Cs2=newC();
}
classC
publicinti=10;
请仔细比较结果.5.什么是虚方法?如何理解多态?
虚方法就是用virtual修饰的方法.调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员.它是实现多态的途径之一.
通过多态,实现了对象的多样性,并且实现迟绑定,提高程序的灵活性.6.overload和override有什么区别?
Overload:c#没有该关键字,理解为重载,属于运行前,编译时的一种技术.是继承的范畴.
Override:是运行时技术,用它实现多态.7.基于接口编程的目的是什么?什么情况下使用接口,什么情况下使用抽象类?
基于接口编程的目的是为了提高程序的灵活性.
当一个类要准备继承多个类的时候,必须用接口,
当一个类需要被继承且有方法必须要被定义时,用抽象类.8.委托是什么意思?什么叫委托链?我们能在代码中继承MulticastDelegate吗?
1.委托是通过对方法名的调用来调用方法的一种对象,委托类似于C++函数指针,但它们是类型安全的。
委托允许将方法作为参数进行传递。委托可用于定义回调方法。
2.将多个委托链接在一起,供对象使用,构成委托链
3.MulticastDelegate是一个特殊类。编译器和其他工具可以从此类派生,但是不能显式地从此类进行派生
9.实现Iterators一般用到哪些接口?
IEnumerable,IEnumerator
10.请写一个简单泛型类型,要求有两个泛型参数T、K,其中T必须是值类型,K必须实现了IDisposable接口。classcls
whereT:struct
whereK:IDisposable
privatebooldisposed=false;
publiccls()
publicvoidDispose()
Dispose(true);
GC.SuppressFinalize(this);
privatevoidDispose(booldisposing)
if(!this.disposed)
if(disposing)
component.Dispose();
CloseHandle(handle);
handle=IntPtr.Zero;
disposed=true;
}8、简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。(10)remoting是.net中服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置,跨越machine,process,appdomain进行方法调用的技术,对于三层结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM,Remoting可以利用TCP/IP,二进制传送提高效率.
WebService是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。WebService令基于组件的开发和web的结合达到最佳,基于组件的对象模型.WebService主要是可利用HTTP,穿透防火墙.
2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。session(viewstate)简单,但易丢失application全局cookie简单,但可能不支持,可能被伪造inputtype="hidden"简单,可能被伪造url参数简单,显示于地址栏,长度有限数据库稳定,安全,但性能相对弱
Server.Transfer
using(sqlConnection….){}
new实例化一个对像,或修饰一个方法,表示此方法重写父类同名方法
4.谈谈类和结构的区别?类是引用类型,默认修饰符号是private
结构是值类型默认成员访问为public1.在.net(C#orvb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。this(C#)Me(vb.net).2在.net(C#orvb.net)中如何用户自定义消息,并在窗体中处理这些消息。在form中重载DefWndProc函数来处理消息:protectedoverridevoidDefWndProc(refSystem.WinForms.Messagem){switch(m.msg){caseWM_Lbutton:///string与MFC中的CString的Format函数的使用方法有所不同stringmessage=string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam);MessageBox.Show(message);///显示一个消息框break;caseUSER:处理的代码default:base.DefWndProc(refm);///调用基类函数处理非自定义消息。break;}}3.在.net(C#orvb.net)如何启动另一个程序。
Process类的静态方法Start4.在.net(C#orvb.net)中如何取消一个窗体的关闭privatevoidForm1_Closing(objectsender,System.ComponentModel.CancelEventArgse){e.Cancel=true;}5.在.net(C#orvb.net)中,Appplication.Exit还是Form.Close有什么不同?前者是退出整个应用程序,后者是关闭其中一个form,一个应用程序会包含多个form
8.C#中的接口和类有什么异同。答:接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口9.。net中读写数据库需要用到哪些类?他们的作用答:sqlconnection,sqlcommand等都要用到.都在System.Data.SqlClient中(以sql数据源操作为例)
20.请叙述类与结构的区别。重复,见前
序列化是将对象转换为容易传输的格式的过程。
ado.netconnection连接对象Command命令对象,执行SQL命令与存储过程DataReader向前只读的数据流。DataAdapadter功能强大的适配器,支持增删改查的功能DataSet是数据集对象,相当与内存中的数据库,还可存放表这间的关系
.net身份验证formWindowspassport护照none
反射:在运行中得到程序集的信息(包类型,及成员,反射提供了封装程序集、模块和类型的对象。)反射:在运行时找到有关对象、对象的类,方法和变量等信息。System.ReflectionORMO/Rmapping对象关系映射。NEW的方法:newclassPublicNewXX()New约束指定的泛型
控件是.ascx扩展名。可以拖到不同的页面中调用。节省大量的手写代码
virtual虚函数,
QueryStringSessionServer.Transferprivate私有的成员类公为类自己内部使用Protected收保护的成员呀为自己类和继承类使用Public共开类,为使用类共用internal在同一命名空间中使用OOP继承,封装,多态性
重写overrid派生类开基类同名与参数相同。盖掉前面的方法继承的类方法与函数在基类相同这里被重写,名称相同重载函数或方法名相同,后面参数不同系统自动找到对应的值
把函数当着一个参数..委托
他是一个强类型与长期保存与application与session不一样呀.长期保存了支持匿名用户,他配制存在ProviderSystem.Text.Encoding.Default.GetBytes(变量)字码转换转为比特码
2.不定项选择:
(1)以下叙述正确的是:BC
B.一个类可以实现多个接口。C.接口不能被实例化。(2)从数据库读取记录,你可能用到的方法有:BCD
B.ExecuteScalarC.FillD.ExecuteReader
1.在对SQLServer数据库操作时应选用(A)。
a)SQLServer.NETFramework数据提供程序;
2.下列选项中,(C)是引用类型。
a)enum类型b)struct类型c)string类型d)int类型
3.关于ASP.NET中的代码隐藏文件的描述正确的是(C)
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
4.以下描述错误的是(A)
a)在C++中支持抽象类而在C#中不支持抽象类。
c)在C#中可使用new修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
5.C#的数据类型有(B)
b)值类型和引用类型;6.下列描述错误的是(D)
a)类不可以多重继承而接口可以;
b)抽象类自身可以定义成员而接口不可以;
c)抽象类和接口都不能被实例化;
d)一个类可以有多个基类和多个基接口;
7.在DOM中,装载一个XML文档的方法(D)
b)load方法
8.下列关于构造函数的描述正确的是(C)
c)构造函数必须与类名相同
9.以下是一些C#中的枚举型的定义,其中错误的用法有()
a)publicenumvar1{Mike=100,Nike=102,Jike}
b)publicenumvar1{Mike=100,Nike,Jike}
c)publicenumvar1{Mike=-1,Nike,Jike}
d)publicenumvar1{Mike,Nike,Jike}
10.int[][]myArray3=newint[3][]{newint[3]{5,6,2},newint[5]{6,9,7,8,3},newint[2]{3,2}};myArray3[2][2]的值是(D)。
a)9b)2c)6d)越界
a)方法、属性、索引器和事件;b)方法、属性信息、属性;c)索引器和字段;d)事件和字段;
12.ASP.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A)
a)HTML控件和Web控件13.ASP.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为(D)
a)<%@RegisterTagPrefix=“Mike”TagName=“Space2”Src=“myX.ascx”%>
b)<%@RegisterTagPrefix=“Space2”TagName=“Mike”Src=“myX.ascx”%>
c)<%@RegisterTagPrefix=“SpaceX”TagName=“Space2”Src=“Mike”%>
d)以上皆非
14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。
a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;
b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。
c)Select操作的Sql语句只能由ExecuteReader()方法来执行;
d)ExecuteReader()方法返回一个DataReder对象;
15.下列ASP.NET语句(b)正确地创建了一个与SQLServer2000数据库的连接。
b)SqlConnectioncon1=newSqlConnection(“DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=myDB”);16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。
a)Buttons属性表示ToolBar控件的所有工具栏按钮
b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度
c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键
d)ButtonClick事件在用户单击工具栏任何地方时都会触发
17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B),必要时还要设置参数尺寸。
a)大小;b)上限;c)初始值;d)类型;
18.如果将窗体的FormBoderStyle设置为None,则(B)。
b)窗体没有边框但能调整大小;
19.如果要将窗体设置为透明的,则(B)
b)要将Opacity属性设置为小于100%得值;
20.下列关于C#中索引器理解正确的是(B/C)
b)索引器的参数类型必须是整数型
c)索引器没有名字
21.下面描述错误的是(C/D)。
a)窗体也是控件;b)窗体也是类;22.要对注册表进行操作则必须包含(D)。
a)System.ComponentModel命名空间;b)System.Collections命名空间;
c)System.Threading命名空间;d)Microsoft.Win32命名空间;
23.要创建多文档应用程序,需要将窗体的(D)属性设为true。
d)IsMdiContainer;
24.如果设treeView1=newTreeView(),则treeView1.Nodes.Add("根节点")返回的是一个()类型的值。
a)TreeNode;
b)int;
c)string;
d)TreeView;
25.下面关于XML的描述错误的是(D)。
a)XML提供一种描述结构化数据的方法;
b)XML是一种简单、与平台无关并被广泛采用的标准;
c)XML文档可承载各种信息;
1.装箱、拆箱操作发生在:(C)
C.引用类型与值类型之间2.用户类若想支持Foreach语句需要实现的接口是:(A)
A.IEnumerableB.IEnumerator
C.ICollectionD.ICollectData
3..NetFramework通过什么与COM组件进行交互操作?(C)
A.SideBySideB.WebService
C.InteropD.PInvoke
4..Net依靠以下哪一项技术解决COM存在的DllHell问题的?(A)
A.SideBySideB.Interop
C.PInvokeD.COM+
5.装箱与拆箱操作是否是互逆的操作?(B)
A.是B.否
6.以下哪个是可以变长的数组?(D)
A.ArrayB.string[]
C.string[N]D.ArrayList
7.用户自定义异常类需要从以下哪个类继承:(A)
A.Exception8.以下代码段中能否编译通过?请给出理由。
try
catch(FileNotFoundExceptione1)
catch(Exceptione2)
catch(IOExceptione3)
catch
A.CloseB.DisposeC.Finalize
D.using
10.Net依赖以下哪项技术实现跨语言互用性?(C)
C.CLS
11.请问:String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)
12.以下哪个类是int的基类?()
A.Int32D.Int16
二、C#部分*
13.以下哪些可以作为接口成员?(多选)(ABDE)
A.方法B.属性C.字段D.事件E.索引器
F.构造函数G.析构函数
14.以下关于ref和out的描述哪些项是正确的?(多选)(ACD)
A.使用ref参数,传递到ref参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。
15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?(B)
A.publicB.protectedC.internalD.protectedinternal
16.classClass1
privatestaticintcount=0;
staticClass1()
count++;
publicClass1()
Class1o1=newClass1();
Class1o2=newClass1();
请问,o1.Count的值是多少?(C)
A.1B.2C.3D.4
17.abstractclassBaseClass
publicvirtualvoidMethodA()
publicvirtualvoidMethodB()
classClass1:BaseClass
publicvoidMethodA(stringarg)
publicoverridevoidMethodB()
classClass2:Class1
newpublicvoidMethodB()
classMainClass
publicstaticvoidMain(string[]args)
Class2o=newClass2();
Console.WriteLine(o.MethodA());
请问,o.MethodA调用的是:(A)
A.BaseClass.MethodAB.Class2.MethodA
C.Class1.MethodAD.都不是
18.请叙述属性与索引器的区别。
属性索引器通过名称标识。通过签名标识。通过简单名称或成员访问来访问。通过元素访问来访问。可以为静态成员或实例成员。必须为实例成员。属性的get访问器没有参数。索引器的get访问器具有与索引器相同的形参表。属性的set访问器包含隐式value参数。除了value参数外,索引器的set访问器还具有与索引器相同的形参表。
19.请叙述const与readonly的区别。
21.您需要创建一个ASP.NET应用程序,公司考虑使用Windows身份认证。所有的用户都存在于AllWin这个域中。您想要使用下列认证规则来配置这个应用程序:a、匿名用户不允许访问这个应用程序。b、所有雇员除了Tess和King都允许访问这个应用程序。请问您应该使用以下哪一个代码段来配置这个应用程序?(A)A.
22.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?(C)C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。23.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)(CD)C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。。
24.您的公司有一个DBServer,名为AllWin,其上装了MSSQLSERVER2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQLSERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?(B)B.“Server=AllWin;DataSource=PubBase;Database=Test;IntegratedSecurity=SSPI”
76.C#代码实现,确保windows程序只有一个实例(instance)
///
///应用程序的主入口点。
///
[STAThread]
staticvoidMain()
//防止程序多次运行
if(!OneInstance.IsFirst("GetPayInfo"))
MessageBox.Show("警告:程序正在运行中!请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
Application.Run(newForm1());
//*******************防止程序多次执行**************************
publicabstractclassOneInstance
///判断程序是否正在运行
///
///
publicstaticboolIsFirst(stringappId)
boolret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
returnret;
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticexternIntPtrOpenMutex(
uintdwDesiredAccess,//access
intbInheritHandle,//inheritanceoption
stringlpName//objectname
);
privatestaticexternIntPtrCreateMutex(
IntPtrlpMutexAttributes,//SD
intbInitialOwner,//initialowner
2.在下面的例子里usingSystem;classA{publicA(){PrintFields();}publicvirtualvoidPrintFields(){}}classB:A{intx=1;inty;publicB(){y=-1;}publicoverridevoidPrintFields(){Console.WriteLine("x={0},y={1}",x,y);}当使用newB()创建B的实例时,产生什么输出?X=1,Y=03.下面的例子中
usingSystem;classA{publicstaticintX;staticA(){X=B.Y+1;}}classB{publicstaticintY=A.X+1;staticB(){}staticvoidMain(){Console.WriteLine("X={0},Y={1}",A.X,B.Y);}}产生的输出结果是什么?x=1,y=2
一、Web基础知识(HTML、XML、CSS基础语法):1、HTML/XML规范中,元素结束标签是以尖括号括起来,并以/还是\开头再加上元素名称?即body的结束标签是