1、面试题及部分答案任何一个使用.NET的人 描述线程与进程的区别?答:线程是进程的一部分,进程是程序的一部分。什么是Windows服务,它的生命周期与标准的EXE程序有什么不同答:Windows Service 是主要用于服务器环境而长期运行的应用程序, 这类程序不需要有用户界面或者任何模拟输出。 任何的用户消息通常都是记录在Windows 事件日志里。Windows Service可以在操作系统启动的时候开始,一直在后台运行,当有需要时也可以手动启动,我们可以通过管理工具里面的服务进行统一管理。当系统启动完毕 后,Windows服务并不需要通过登陆页面后才能启动,而我们启动一般的exe文件却要
2、先登陆Windows后才能启动它EXE和DLL之间的区别是什么?答:现在的Windows中,exe 和 dll 都是基于PE格式,exe 是通常的可执行文件,包含数据和代码,而 dll 是动态链接文件,也有可能是纯资源文件,只包含数据,不含程序代码。ddl 的目的之一就是提供能被许多不同的应用程序所使用的函数和资源。dll 中的函数和资源为软件开发提供了复用。它们是在运行时由磁盘物理映像载入被调用者的内存空间或共享内存空间执行。什么是强类型,什么是弱类型?哪种更好些?为什么?答案:弱类型语言允许将一块内存看做多种类型。比如直接将整型变量与字符变量相加。C and C+ 是静态语言,也是弱类型语
3、言;Perl and PHP 是动态语言,但也是弱类型语言。强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。Java、C# 和 Python 等都是强类型语言。使用哪种语言还是要按需而定。编写简单小应用,使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型语言可能会比使用弱类型更加规范可靠。PID是什么?在做系统的故障排除时如何使用它?答案:PID = Process Identifier, 是一个全局唯一的用来标识进程的整数。在多任务系统中,可用来诊断系统中发生错误的进程。单个TCP/IP端口上能够侦听多少个进程?答:可能只有一个。如果你需要创建
4、另一个TCP/IP监听,你必须建立另一个不同的端口什么是GAC?它解决了什么问题?答案:作用是可以存放一些有很多程序都要用 到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得 Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面中级.NET开发人员阐述面向接口、面向对象、面向方面编程的区别什么是Interface?它与Class有什么区别?答:接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,一个类能实现多个接口,但只
5、能继承一个父类 什么是反射?答:反射(Reflection)是.NET中的重要机制, 通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成 员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 DateTime是否可以为null?答:不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值nullFinalize()和Dispose()之间的区别?using() 语法有用吗?什
6、么是IDisposable?它是如何实现确定性终结的。tasklist /m mscor* 这句命令是干嘛的?in-proc和out-of-proc的区别.NET里的哪一项技术能够实现out-of-proc通讯?当你在ASP.NET中运行一个组件时,它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面?高级开发人员/架构师DateTime.Parse(myString); 这行代码有什么问题?PDB是什么东西? 在调试中它应该放在哪里?什么叫圈复杂度(cyclomatic complexity)?为什么它很重要?写一个标准的lock(),在访问
7、变量的前后创建临界区,要有双重检查,什么叫FullTrust?放入GAC的assembly是否是FullTrust的?代码加上需要安全权限的特性有什么好处?gacutil /l | find /i Corillian 这句命令的作用是什么?sn -t foo.dll 这句命令是干嘛的?DCOM需要防火墙打开哪些端口?端口135是干嘛用的?对比OOP和SOA,它们的目的分别是什么?XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?为什么不提倡catch(Exception)?Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?Debug Bui
8、ld和Release Build的区别,是否会有明显的速度变化?请说明理由。JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响?对比抽象基类和接口的使用a.Equals(b)和a = b一样吗?在对象比较中,对象一致和对象相等分别是指什么?在.NET中如何实现深拷贝(deep copy)?请解释一下IClonable什么叫装箱?string是值类型还是引用类型?XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?为什么不应该在.NET中使用out参数?它究竟好不好?特性能够放到某个方法的参数上?如果可以,这有什么用? 什么时候使用overrid
9、e?什么时候使用new? 什么叫shadowing?解释virtual、sealed、override和abstract的区别Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d 解释这个字符串每个部分的重要性和作用解释public、protected、private和internal的区别使用Primary Interop Assembly (PIA)有什么好处?NUnit是通过什么机制获知需要测试哪些方法的?catch(Exception e)throw e;和catch(Exceptio
10、n e)的区别typeof(foo)和myFoo.GetType()的区别?public class c public c(string a) : this() ; public c() 解释第一个构造函数中发生了什么? 这个构造函数有什么用?this是干嘛用的?能够用在static方法中?ASP.NET (UI)开发人员阐述一个基于浏览器的Form POST如何变成一个服务器端的事件,如Button1_OnClick。什么是PostBack?什么是ViewState? 它是否被编码过? 是否被加密过?谁会使用ViewState?元素是干嘛用的?它用于哪两项ASP.NET技术?说出ASP.NE
11、T 1.1中的3种Session State提供程序以及它们的优缺点?什么叫Web Gardening? 在设计中如何使用它?假设有一个ASP.NET应用程序,那么单独一个进程中允许多少应用程序对象?那两个进程呢?启用了Web Gardening的2个进程呢?这对设计有何影响?ASP.NET会重用多个请求之间的线程吗?是否每个HttpRequest都有自己的线程?你是否应该用ASP.NET的Thread Local存储?ThreadStatic属性在ASP.NET中有用吗?它有没有副作用?是好是坏?如何使用HttpHandler简化现有的为.aspx页面提供验证图片的设计HttpModule订
12、阅的是什么类型的事件? 这对于实现有何影响?如果不打算重新编译ASP.NE应用程序,应该怎么做?说出表示任意一个终端(URL)的方式,以及ASP.NET中把请求路由到那个终点的方式解释cookie的工作原理。给出一个滥用Cookie的例子。解释HttpRequest.ValidateInput()的重要性?哪些数据是通过HTTP Header传递的?对比HTTP动词GET和POST? 什么是HEAD?说出至少6个HTTP状态码以及它们的含义if-not-modified-since的工作原理是什么? 用ASP.NET如何实现它?解释 和如何使用VaryByParam、VaryByHeader.
13、VaryByCustom是如何工作的?如何通过q=? (除了q=5)来实现ASP.NET HTML输出缓冲和缓冲过期(比如http:/localhost/page.aspx?q=5)?XML开发人员XML命名空间的作用?何时适合使用DOM?何时不适合?有没有尺度限制?什么是WS-I基本配置?它重要在哪里?写一个小XML文档,其中使用的是默认的命名空间,以及一个合法的(前缀)命名空间,其中要有分别属性这两个命名空间的元素元素和特性的基本区别在哪里?格式完好的XML和有效的XML有什么区别?.NET中如何验证XML?myXmlDocument.SelectNodes(/mynode); 为什么这句
14、代码不好?什么时候它是好的?拉式解析(XmlReader)与事件读取器(Sax)的区别XPathDocument和XmlDocument的区别? 在何种情况下应该用哪一个?“XML片断”与“XML文档”有什么区别什么叫格式规范的XML?XML InfoSet规范与Xml DOM有什么不同? InfoSet是要解决什么问题?比较DTD和XSD,它们的相似点与区别分别是什么?哪个更好些?为什么?System.Xml支持DTD吗?如果支持,如何使用?XML Schema能够表示为对象图?对象图能够表示为XML Schema?B. “Server= AllWin;Data Source=PubBase
15、;Database=Test;Integrated Security= SSPI”C. “Data Source= AllWin PubBase;Initial Category=PubBase;Integrated Security= SSPI”D. “Data Source= AllWin PubBase;Database=Test;Integrated Security= SSPI” 25.您 为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇员列表的DataSet对象。请
16、问您该如何在这个程序中使用这个 Xml Web Service?( ? )A.在“引用”对话框的.Net标签中选择 System.Web.Services.dll。B.在“Web引用”对话框中输入这个 XML Web service 的地址。C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。26.您 要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。
17、产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个 SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的 CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为 procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品
18、列表。您打算显示以相反的字 母顺序排列的ProductName,请问该怎么做? ( B )A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后将这个DataTable对象绑定到DataGrid控件。B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。然后将这个DataView对象绑定到DataGrid
19、控件。 C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示ProductName。然后将这个DataTable对象绑定到DataGrid控件。D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件。76.C#代码实现,确保windows程序只有一个实例(instance) / /应用程序的主入口点。 / STAThr
20、ead staticvoid Main() /防止程序多次运行 if(!OneInstance.IsFirst(GetPayInfo) MessageBox.Show (警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!,程序错误提示:,MessageBoxButtons.OK,MessageBoxIcon.Stop); return; Application.Run(new Form1(); / *防止程序多次执行* publicabstractclass OneInstance / /判断程序是否正在运行 / /程序名称 /如果程序是第一次运行返回True,否则返回Fals
21、e publicstaticbool IsFirst(string appId) bool ret=false; if(OpenMutex(0x1F0001,0,appId)=IntPtr.Zero) CreateMutex(IntPtr.Zero,0,appId); ret=true; return ret; DllImport(Kernel32.dll,CharSet=CharSet.Auto) privatestaticextern IntPtr OpenMutex( uint dwDesiredAccess,/ access int bInheritHandle, / inherita
22、nce option string lpName / object name ); DllImport(Kernel32.dll,CharSet=CharSet.Auto) privatestaticextern IntPtr CreateMutex( IntPtr lpMutexAttributes,/ SD int bInitialOwner, / initial owner string lpName / object name ); 3. 简述 private、 protected、 public、 internal 修饰符的访问权限。private : 私有成员, 在类的内部才可以访
23、问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * from A where id (select max(id) from (select top 30 id from A )as
24、 A) oracle的写法,取出表A中第31到第40记录select * from (select rownum rn, t.* from (select A.* from A order by id asc) t)where rn between 31 and 405 .列举ASP.NET 页面之间传递值的几种方式。 1. 使用QueryString, 如.?id=1; response. Redirect(). 2.使用Session变量 3.使用Server.Transfer 2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 session(viewstate)
25、 简单,但易丢失 application 全局 cookie 简单,但可能不支持,可能被伪造 input ttype=hidden 简单,可能被伪造 url参数简单,显示于地址栏,长度有限 数据库稳定,安全,但性能相对弱2override与重载的区别Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数3、.net的错误处理机制是什么.net错误处理机制采用try-catch-finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。4、C中接口和类的异同接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承
26、,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。4、DataReader和DataSet的异同DataReader和 DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库.任何对SqlConnection的 操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的.因为DataReader 的特殊性和高性能.所以DataReader是只进的.你读了第一条后就不能再去读取第一条了.DataSet则
27、是将数据一次性加载在内存中.抛弃数据库连接.读取完毕即放弃数据库连接.因为DataSet将数据全部加载在内存中.所以比较消耗内存.但是确比DataReader要灵活.可以动态的添加行,列,数据.对数据库进行回传更新操作.1. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法2.在下面的例子里using System;class Apublic A()PrintFields();public virtual void PrintFields()class B:Aint 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=03.下面的例子中using System;class Apublic static int X;static A()X=B.Y+1;class Bpublic static int Y=A.X+1;static B()static void Main()Console.WriteLine(X=0,Y=1,A.X,B
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1