面试题及部分答案.docx
《面试题及部分答案.docx》由会员分享,可在线阅读,更多相关《面试题及部分答案.docx(33页珍藏版)》请在冰豆网上搜索。
![面试题及部分答案.docx](https://file1.bdocx.com/fileroot1/2022-12/13/6aacb804-5091-47cd-af57-818cb98b696a/6aacb804-5091-47cd-af57-818cb98b696a1.gif)
面试题及部分答案
任何一个使用.NET的人
描述线程与进程的区别?
答:
线程是进程的一部分,进程是程序的一部分。
什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
答:
WindowsService是主要用于服务器环境而长期运行的应用程序,这类程序不需要有用户界面或者任何模拟输出。
任何的用户消息通常都是记录在Windows事件日志里。
WindowsService可以在操作系统启动的时候开始,一直在后台运行,当有需要时也可以手动启动,我们可以通过管理工具里面的服务进行统一管理。
当系统启动完毕后,Windows服务并不需要通过登陆页面后才能启动,而我们启动一般的exe文件却要先登陆Windows后才能启动它
EXE和DLL之间的区别是什么?
答:
现在的Windows中,exe和dll都是基于PE格式,exe是通常的可执行文件,包含数据和代码,而dll是动态链接文件,也有可能是纯资源文件,只包含数据,不含程序代码。
ddl的目的之一就是提供能被许多不同的应用程序所使用的函数和资源。
dll中的函数和资源为软件开发提供了复用。
它们是在运行时由磁盘物理映像载入被调用者的内存空间或共享内存空间执行。
什么是强类型,什么是弱类型?
哪种更好些?
为什么?
答案:
弱类型语言允许将一块内存看做多种类型。
比如直接将整型变量与字符变量相加。
CandC++是静态语言,也是弱类型语言;PerlandPHP是动态语言,但也是弱类型语言。
强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。
Java、C#和Python等都是强类型语言。
使用哪种语言还是要按需而定。
编写简单小应用,使用弱类型语言可节省很多代码量,有更高的开发效率。
而对于构建大型项目,使用强类型语言可能会比使用弱类型更加规范可靠。
PID是什么?
在做系统的故障排除时如何使用它?
答案:
PID=ProcessIdentifier,是一个全局唯一的用来标识进程的整数。
在多任务系统中,可用来诊断系统中发生错误的进程。
单个TCP/IP端口上能够侦听多少个进程?
答:
可能只有一个。
如果你需要创建另一个TCP/IP监听,你必须建立另一个不同的端口
什么是GAC?
它解决了什么问题?
答案:
作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。
这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面
中级.NET开发人员
阐述面向接口、面向对象、面向方面编程的区别
什么是Interface?
它与Class有什么区别?
答:
接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,一个类能实现多个接口,但只能继承一个父类
什么是反射?
答:
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。
还可以获得每个成员的名称、限定符和参数等。
有了反射,即可对每一个类型了如指掌。
如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。
DateTime是否可以为null?
答:
不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null
Finalize()和Dispose()之间的区别?
using()语法有用吗?
什么是IDisposable?
它是如何实现确定性终结的。
tasklist/m"mscor*"这句命令是干嘛的?
in-proc和out-of-proc的区别
.NET里的哪一项技术能够实现out-of-proc通讯?
当你在ASP.NET中运行一个组件时,它在WindowsXP,Windows2000,Windows2003上分别跑在哪个进程里面?
高级开发人员/架构师
DateTime.Parse(myString);这行代码有什么问题?
PDB是什么东西?
在调试中它应该放在哪里?
什么叫圈复杂度(cyclomaticcomplexity)?
为什么它很重要?
写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查",
什么叫FullTrust?
放入GAC的assembly是否是FullTrust的?
代码加上需要安全权限的特性有什么好处?
gacutil/l|find/i"Corillian"这句命令的作用是什么?
sn-tfoo.dll这句命令是干嘛的?
DCOM需要防火墙打开哪些端口?
端口135是干嘛用的?
对比OOP和SOA,它们的目的分别是什么?
XmlSerializer是如何工作的?
使用这个类的进程需要什么ACL权限?
为什么不提倡catch(Exception)?
Debug.Write和Trace.Write有什么不同?
何时应该使用哪一个?
DebugBuild和ReleaseBuild的区别,是否会有明显的速度变化?
请说明理由。
JIT是以assembly为单位发生还是以方法为单位发生?
这对于工作区有何影响?
对比抽象基类和接口的使用
a.Equals(b)和a==b一样吗?
在对象比较中,对象一致和对象相等分别是指什么?
在.NET中如何实现深拷贝(deepcopy)?
请解释一下IClonable
什么叫装箱?
string是值类型还是引用类型?
XmlSerializer使用的针对属性的模式有什么好处?
解决了什么问题?
为什么不应该在.NET中使用out参数?
它究竟好不好?
特性能够放到某个方法的参数上?
如果可以,这有什么用?
什么时候使用override?
什么时候使用new?
什么叫shadowing?
解释virtual、sealed、override和abstract的区别
Foo.Bar,Version=2.0.205.0,Culture=neutral,PublicKeyToken=593777ae2d274679d解释这个字符串每个部分的重要性和作用
解释public、protected、private和internal的区别
使用PrimaryInteropAssembly(PIA)有什么好处?
NUnit是通过什么机制获知需要测试哪些方法的?
catch(Exceptione){throwe;}和catch(Exceptione)的区别
typeof(foo)和myFoo.GetType()的区别?
publicclassc{publicc(stringa):
this();publicc()}解释第一个构造函数中发生了什么?
这个构造函数有什么用?
this是干嘛用的?
能够用在static方法中?
ASP.NET(UI)开发人员
阐述一个基于浏览器的FormPOST如何变成一个服务器端的事件,如Button1_OnClick。
什么是PostBack?
什么是ViewState?
它是否被编码过?
是否被加密过?
谁会使用ViewState?
元素是干嘛用的?
它用于哪两项ASP.NET技术?
说出ASP.NET1.1中的3种SessionState提供程序以及它们的优缺点?
什么叫WebGardening?
在设计中如何使用它?
假设有一个ASP.NET应用程序,那么单独一个进程中允许多少应用程序对象?
那两个进程呢?
启用了WebGardening的2个进程呢?
这对设计有何影响?
ASP.NET会重用多个请求之间的线程吗?
是否每个HttpRequest都有自己的线程?
你是否应该用ASP.NET的ThreadLocal存储?
[ThreadStatic]属性在ASP.NET中有用吗?
它有没有副作用?
是好是坏?
如何使用HttpHandler简化现有的为.aspx页面提供验证图片的设计
HttpModule订阅的是什么类型的事件?
这对于实现有何影响?
如果不打算重新编译ASP.NE应用程序,应该怎么做?
说出表示任意一个终端(URL)的方式,以及ASP.NET中把请求路由到那个终点的方式
解释cookie的工作原理。
给出一个滥用Cookie的例子。
解释HttpRequest.ValidateInput()的重要性?
哪些数据是通过HTTPHeader传递的?
对比HTTP动词GET和POST?
什么是HEAD?
说出至少6个HTTP状态码以及它们的含义
if-not-modified-since的工作原理是什么?
用ASP.NET如何实现它?
解释<@OutputCache%>和如何使用VaryByParam、VaryByHeader.
VaryByCustom是如何工作的?
如何通过q=?
(除了q=5)来实现ASP.NETHTML输出缓冲和缓冲过期(比如http:
//localhost/page.aspx?
q=5)?
XML开发人员
XML命名空间的作用?
何时适合使用DOM?
何时不适合?
有没有尺度限制?
什么是WS-I基本配置?
它重要在哪里?
写一个小XML文档,其中使用的是默认的命名空间,以及一个合法的(前缀)命名空间,其中要有分别属性这两个命名空间的元素
元素和特性的基本区别在哪里?
格式完好的XML和有效的XML有什么区别?
.NET中如何验证XML?
myXmlDocument.SelectNodes("//mynode");为什么这句代码不好?
什么时候它是好的?
拉式解析(XmlReader)与事件读取器(Sax)的区别
XPathDocument和XmlDocument的区别?
在何种情况下应该用哪一个?
“XML片断”与“XML文档”有什么区别
什么叫格式规范的XML?
XMLInfoSet规范与XmlDOM有什么不同?
InfoSet是要解决什么问题?
比较DTD和XSD,它们的相似点与区别分别是什么?
哪个更好些?
为什么?
System.Xml支持DTD吗?
如果支持,如何使用?
XMLSchema能够表示为对象图?
对象图能够表示为XMLSchema?
B.“Server=AllWin;DataSource=PubBase;Database=Test;IntegratedSecurity=SSPI”
C.“DataSource=AllWin\PubBase;InitialCategory=PubBase;IntegratedSecurity=SSPI”
D.“DataSource=AllWin\PubBase;Database=Test;IntegratedSecurity=SSPI”
25.您为AllWin公司创建了一个ASP.NET应用程序。
这个应用程序调用一个XmlWebService。
这个XmlWebService将返回一个包含了公司雇员列表的DataSet对象。
请问您该如何在这个程序中使用这个XmlWebService?
( ?
)
A.在“引用”对话框的.Net标签中选择System.Web.Services.dll。
B.在“Web引用”对话框中输入这个XMLWebservice的地址。
C.在您的Global.asax.cs中添加一条using语句并指定这个XMLWebservice的地址。
D.在您的Global.asax.cs中写一个事件处理器导入这个XmlWebService相应的.wsdl和.disco文件。
26.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。
产品数据被存放于一个名为PubBase的MicrosoftSQLServer数据库。
每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。
您使用一个SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。
您将SqlCommand对象的CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。
您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。
您打算显示以相反的字母顺序排列的ProductName,请问该怎么做?
( B )
A.将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为”SELECT*FROMprocProductListORDERBYProductNameDESC”。
然后将这个DataTable对象绑定到DataGrid控件。
B.创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductNameDESC”。
然后将这个DataView对象绑定到DataGrid控件。
C.将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为“ProductNameDESC”.以显示ProductName。
然后将这个DataTable对象绑定到DataGrid控件。
D.将DataTable对象的DisplayExpression属性设置为“ORDERBYProductNameDESC”.。
然后将这个DataTable对象绑定到DataGrid控件。
76.C#代码实现,确保windows程序只有一个实例(instance)
///
///应用程序的主入口点。
///
[STAThread]
staticvoidMain()
{
//防止程序多次运行
if(!
OneInstance.IsFirst("GetPayInfo"))
{
MessageBox.Show("警告:
程序正在运行中!
请不要重复打开程序!
可在右下角系统栏找到!
","程序错误提示:
",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
Application.Run(newForm1());
}
//******************* 防止程序多次执行 **************************
publicabstractclassOneInstance
{
///
///判断程序是否正在运行
///
///程序名称
///如果程序是第一次运行返回True,否则返回False
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
);
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticexternIntPtrCreateMutex(
IntPtrlpMutexAttributes, //SD
intbInitialOwner, //initialowner
stringlpName //objectname
);
}
3.简述private、protected、public、internal修饰符的访问权限。
private:
私有成员,在类的内部才可以访问。
protected:
保护成员,该类内部和继承类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
4.写出一条Sql语句:
取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键, 注意:
ID可能不是连续的。
)
selecttop10*fromAwhereidnotin(selecttop30idfromA)
解2:
selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)
oracle的写法,取出表A中第31到第40记录
select*
from(selectrownumrn,t.*from(selectA.*fromAorderbyidasc)t)
wherernbetween31and40
5.列举ASP.NET页面之间传递值的几种方式。
1. 使用QueryString,如....?
id=1;response.Redirect()....
2.使用Session变量
3.使用Server.Transfer
2。
请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate)简单,但易丢失
application全局
cookie简单,但可能不支持,可能被伪造
inputttype="hidden"简单,可能被伪造
url参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱
2.override与重载的区别
Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数
3、.net的错误处理机制是什么
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
4、C#中接口和类的异同
接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。
接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。
4、DataReader和DataSet的异同
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
1. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
Using引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New实例化一个对像,或修饰一个方法,表此方法完全重写此方法
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=0
3.下面的例子中
usingSystem;
classA
{
publicstaticintX;
staticA(){
X=B.Y+1;
}
}
classB
{
publicstaticintY=A.X+1;
staticB(){}
staticvoidMain(){
Console.WriteLine("X={0},Y={1}",A.X,B