.net面试题高级1(答案)
第 1 页共2 页.net面试题高级1(答案)
1)DateTime.Parse(myString); 这行代码有什么问题?
有问题,当myString不能满足时间格式要求的时候,会引发异常,建议使用DateTime.TryParse()
2)PDB是什么东西? 在调试中它应该放在哪里?
PDB是用于保存调试和项目状态信息的文件,在debug 的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。
3)什么叫圈复杂度(cyclomatic complexity)?为什么它很重要?
不知道,望指教?
4)写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查",
lock的使用
public void LockTest()
{
Object lockObj = new Object();
lock (lockObj)
{
//
}
}
5)什么叫FullTrust?放入GAC的assembly是否是FullTrust的?
FullTrust完全信任。放入GAC中的Assembly是否FullTrust我的理解不是。我理解FullTrust是可以通过代码设定的
6)代码加上需要安全权限的特性有什么好处?
可以更加灵活的设置对代码的访问权限,实现代码级保护。?这点不是特清楚,有明白的给讲解下
7)gacutil /l | find /i "Corillian" 这句命令的作用是什么?全局程序集缓存中如果有Corillian就更新该程序集,没有就安装
8)sn -t foo.dll 这句命令是干嘛的?
显示程序集foo.dll的公钥标记
9)DCOM需要防火墙打开哪些端口?端口135是干嘛用的?
135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下,DCOM不能穿越防火墙。因为根本不晓得开哪个端口。但有解决办法可以使DCOM分配的端口号固定,有关内容我在https://www.doczj.com/doc/fc7820781.html,/jillzhang/archive/2008/02/20/107 5057.html 有过一些描述。135是远程过程调用(RPC)的默认端口
10)对比OOP和SOA,它们的目的分别是什么?
我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态。而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,当然其组件化思想是继承和发扬了OOP的优点。
11) XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?
我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限. 12)为什么不提倡catch(Exception)?
原因可能有两点:1)try..catch在出现异常的时候影响性能2)应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等
13)Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?
Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug 和release两种模式下均可以向跟踪窗口输出信息。
14)Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。
Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUG Debug.Write等,而
.net 面试题高级1(答案) 第 2 页 共 2 页
Release 则会将那些特殊标记省略
15)JIT 是以assembly 为单位发生还是以方法为单位发生?这对于工作区有何影响?
方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR 傻乎乎的给整个程序集都给Compile 了,CLR 不是傻疯了么
16)对比抽象基类和接口的使用
抽象类能有具体实现,而接口只定义行为规范,不能有具体实现。一个类只能继承一个父类,但能实现多个接口。 17)a.Equals(b)和a == b 一样吗?
不一样。a.Equals(b)表示a 与b 一致, a==b 表示a 与b 的值相等
18)在对象比较中,对象一致和对象相等分别是指什么? 对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同 19)在.NET 中如何实现深拷贝(deep copy )? 实现IClonable 接口 20)请解释一下IClonable
IClonable 方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow 复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone(). 21)什么叫装箱?
装箱(boxing )是将值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如int j = (int)o ;属于拆箱 22)string 是值类型还是引用类型? 引用类型
23)XmlSerializer 使用的针对属性的模式有什么好处?解决了什么问题?
只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。
24)为什么不应该在.NET 中使用out 参数?它究竟好不
好?
我挺喜欢用out 参数的,特别是当函数需要有多于1个返回的时候,我比较愿意用out ,至于它好不好没研究过 ? 25)特性能够放到某个方法的参数上?如果可以,这有什么用?
可以,作用可以对参数有进一步限定,比如输入参数为int 类型,可以通过允许AttributeTargets=ParameterInfo 的Attribute 自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便抱错。 对方法的参数设置Attribute 的例子
[AttributeUsage(AttributeTargets.Parameter)] public class ParameterAtt : Attribute {
public int Min = 100; }
public class AttributeTest {
public void TestMethod([ParameterAtt(Min = 100)] int par1) {
ParameterInfo
para
=
MethodInfo.GetCurrentMethod().GetParameters()[0]; ParameterAtt
att
=
ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as ParameterAtt; if (att.Min > par1) {
throw new Exception("要求para1最小为" + att.Min); } } }
一、填空题 (1)ASPX网页的代码储存模式有两种,它们是_代码分离模式__和__单一模式_。 答案:代码分离模式,单一模式 (2)当一个Web控件上发生的事件需要立即得到响时,应该将他的AutoPostBack属性设置为true。 答案:AutoPostBack (3)请将下列数据(nn)在TextBox控件中显示出来。 Double nn=4512.6; TextBox1.Text=nn.Tostring(); 答案:nn.ToString() (4)当需要将TextBox控件作为密码输入框时(要求隐藏密码的代码),应该将控件的TextMode属性设置为Password. 答案:Password (5)下面是一个转移到新网页的指令:Response.Redirect(“新网页的Url”) 答案:新网页的Ur1 (6)在设计阶段必须将各个验证控件的属性指向被验证的控件。 答案:ControlToValidate (7)下面是设置和取出Session对象的代码。 设置Session的代码是: Session[“greeting”]=“hello wang!”; 取出该Session对象的语句如下: string Myvar=; 答案:Session[“greeting”].ToString() (8)下面是使用Application对象时防止竞争的代码。 Application.;//锁定Application对象 Application[“counter”]=(int)Application[“counter”]+1; Application.;//解除对Application对象的锁定 答案:lock(),unlock() (9)废除Session的语句是:。 答案:Session.Abandon() (10)打开文件系统网站时将自动打开一个开发服务器,这是一个轻量级服务器,可以用来对程序进行检查和调试工作。 答案:开发 (11)所谓分布式类就是在多个文件中使用相同的_命名空间_,相同的_类名_,而且每个类的定义前面都加上partial修饰符,编译时编译器就会自动的将这些文件编辑成一个完整的类。答案:命名空间,类名,partial (12)改变Session的有效时间的语句是:Session.Timeout=60;。 答案:Session.Timeout=60; (13)NET与XML紧密结合的最大好处是跨平台传送数据。 答案:跨平台传送数据 (14)网上招聘模板如果使用FormView控件,通常分为上、下两部分.上面部分通常使用FormView控件的模板,用来介绍公司情况并提出招聘要求;下面部分通常用模板,用来输入和存储数据.当应聘者提交数据后应事件中向应聘者发出感谢或收到的信息.答案:Header Insert ItemInserted
.net软件工程师面试题 基础题: 1.简述string[]、ArrayList、List的区别。 数组: 优点: o数组在内存中是连续存储的,索引速度非常快; o赋值和修改元素也很简单; 不足: o两个数据之间插入数据比较麻烦; o声明数组的时候,必须指明数组的长度,数组长度过长会造成内存浪费,数组的长度过短,会造成数据溢出错误。 ArrayList: 优点: https://www.doczj.com/doc/fc7820781.html, framework 提供的用于数据存储和检索的专用类 o大小依据存储的数据来动态扩展和收缩 o继承IList,可以方便的进行数据的添加、插入和删除 缺点: o允许插入不同类型的数据,都当做object类型处理 o数据处理时可能出现类型不匹配的错误
o存在装箱(值=》引用)拆箱的操作,会带来很大的性能损耗 List: 优点: o声明List集合时,需要声明集合内数据的对象类型 o避免了类型安全问题和装箱拆箱的性能问题 2.简述装箱和拆箱操作中的性能损耗是如何产生的。 3.简述对https://www.doczj.com/doc/fc7820781.html,中的事件机制的理解。 4.在一个https://www.doczj.com/doc/fc7820781.html,的三层结构系统中,以登录操作为例,简述在各层中如何组织代码。 5.简述相比DATASET,实体类在WEB项目中的优点与缺点。 6.简述GC是如何工作的。 Java采用VM(Virtual Machine)机制,由VM来管理程序的运行当然也包括对GC管理。90年代末期.NET出现了,.NET采用了和Java类似的方法由CLR(Common Language Runtime)来管理。 Garbage Collector(垃圾收集器,在不至于混淆的情况下也成为GC)以应用程序的root 为基础,遍历应用程序在Heap上动态分配的所有对象[2],通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是GC工作的原理。为了实现这个原理,GC有多种算法。比较常见的算法有Reference Counting,Mark Sweep,Copy Collection等等。目前主流的虚拟系统.NET CLR,Java VM和Rotor都是采用的Mark Sweep算法。
1. 简述private、protected、public、internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。 2 .列举https://www.doczj.com/doc/fc7820781.html, 页面之间传递值的几种方式。 答. 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 3. 一列数的规则如下: 1、1、2、3、5、8、13、21、3 4...... 求第30位数是多少,用递归算法实现。 答:public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int Foo(int i) { if (i == 0) return 0; else if(i > 0 && i <= 2) return 1; else return Foo(i -1) + Foo(i - 2); } } 4.C#中的委托是什么?事件是不是一种委托? 答: 委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。 是,是一种特殊的委托 5.override与重载的区别 答: override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。
N e t软件工程师面试题公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-
一.填空题(每空1分,共12分) 1面向对象的语言具有__封装______性、__继承_______性、__多态______性。2能用foreach遍历访问的对象需要实现____Ienumerable____________接口或声明_____GetEnumerator___________方法的类型。 3当类T只声明了私有实例构造函数时,则在T的程序文本外部,___不可以___(可以or不可以)从T派生出新的类,在T的内部__可以__(可以or不可以)直接创建T的任何实例,在T的外部__不可以__(可以or不可以)直接创建T 的任何实例。 4.委托声明的关键字是__Delegate____ 5.override与重载的区别:override覆盖是基类中函数的重写。重载:方法或函数的名称相同,参数或许参数类型不同,进行多次重载实现功能。 二.不定项选择(每题2分,共18) Question 1 以下叙述正确的是: A.接口中可以有虚方法。 B.一个类可以实现多个接口。 C.接口不能被实例化。 D.接口中可以包含已实现的方法。 Question 2 以下描述错误的是() 1.在C++中支持抽象类而在C#中不支持抽象类。 2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
3.在C#中可使用new修饰符显式隐藏从基类继承的成员。 4.在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。Question 3 声明一个委托public delegate int myCallBack(int x);则用该委托产生的回调方法的原型应该是 1. void myCallBack(int x) 2. int receive(int num) 3. string receive(int x) 4.不确定的 Question 4 下列描述错误的是() a)类不可以多重继承而接口可以; b)抽象类自身可以定义成员而接口不可以; c)抽象类和接口都不能被实例化; d)一个类可以有多个基类和多个基接口; Question 5 下列关于构造函数的描述正确的是() a)构造函数可以声明返回类型。 b)构造函数不可以用private修饰 c)构造函数必须与类名相同 d)构造函数不能带参数 Question 6
初级.NET 开发人员- 任何使用.NET 的人都应知道的 1. 描述线程与进程的区别?进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。进程可以定义程序的一个实例,但它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至少占有一个线程,这个线程即为主线程,默认程序的工作都在这个主线程中完成,可以通过程序创建多个线程,使多个线程可以同时运行(多CPU 支持下),这就是多线程技术。 线程(Thread )与进程(Process )二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。同一进程中的不同线程共享代码和数据空间。 2. 什么是Windows 服务,它的生命周期与标准的EXE 程序有什么不同? Windows 服务是运行在windows 后台指定用户下(默认System )的应用程序,它没有标准的UI 界面,相比标准的EXE 程序,Windows 服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1 )自动方式2)手动方式3 )禁用。自动方式下,Windows服务控制器将指导OS启动后自动启动服务并运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。另外标准的EXE 默认使用的当前登录的用户,而Windows 服务则默认使用System 用户,这在对系统资源访问的时候特别需要注意。 3. Windows 上的单个进程所能访问的最大存量是多少?它与系统的最大虚拟存一样吗?这对于系统设计有什么影响? 这个需要针对硬件平台,公式为单个进程能访问的最大存量=2 的处理器位数次方/2 ,比如通常情况下,32 位处理器下,单个进程所能访问的最大存量为:2 32/2 = 2G 。单个进程能访问的最大存量是最大虚拟存的1/2 ,因为要分配给操作系统一半虚拟存。 4. EXE 和DLL 之间的区间是什么? EXE 文件有一个入口点,比如说Main()函数,这样CLR 可以由此处执行这个EXE 文件,而DLL 不包含这样一个入口点所以不是可执行的。DLL 文件主要包含一些程序集供其它函数调用。 5. 什么是强类型,什么是弱类型?哪种更好些?为什么? 强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。一般用于编译型编程语言,如C# 、Java 与C++ 等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如Javascript,VB 等。 6. PID 是什么?在做系统的故障排除时如何使用它? PID 是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程。可通过Visual Studio 将故障进程附加到进程中进行调试。 7. 单个TCP/IP 端口上能够被多少个进程侦听? 1个 8. 什么是GAC ?它解决了什么问题? GAC 是Global Assembly Cache ,全局程序集缓存的简称。它解决了几个程序共享某一个程序集的问题。不必再将那个被共享的程序集拷贝到应用程序目录了,.NET 应用程序在
.NET开发人员试题(综合) 每题5分 1、用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 2、软件开发过程一般有几个阶段?每个阶段的作用? 3、请列举一些您用到过的设计模式以及在什么情况下使用该模式? 4、您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一般怎样去提高自己的编程水平? 5、您离职的原因是什么?
.NET开发人员试题(基础) 一、填空:每题2分 1.面向对象的语言具有继承性、封装性、多态性。 2. 能用foreach遍历访问的对象需要实现 IEnumerable _接口或声明 3.委托声明的关键字是delegate ? 4.在.Net托管代码中我们不用担心内存漏洞,这是因为有了gc __? 5.当类T只声明了私有实例构造函数时,则在T的程序文本外部,不可以(可以or 不可以)从T派生出新的类,不可以(可以or 不可以)直接创建T的任何实例。 二、单选:每题2分 6.在对SQL Server 数据库操作时应选用(A)。 a)SQL Server .NET Framework 数据提供程序; b)OLE DB .NET Framework 数据提供程序; c)ODBC .NET Framework 数据提供程序; d)Oracle .NET Framework数据提供程序; 7.以下描述错误的是(A) a)在C++中支持抽象类而在C#中不支持抽象类。 b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。 c)在C#中可使用new 修饰符显式隐藏从基类继承的成员。 d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。 8.C#的数据类型有(A) a)值类型和调用类型; b)值类型和引用类型; c)引用类型和关系类型; d)关系类型和调用类型; 9.下列描述错误的是(D) a)类不可以多重继承而接口可以; b)抽象类自身可以定义成员而接口不可以; c)抽象类和接口都不能被实例化; d)一个类可以有多个基类和多个基接口; 10.在DOM中,装载一个XML文档的方法(D) a)save方法b)load方法c)loadXML方法d)send方法
NET面试题一 想看答案往下翻 .NET技术题 1.类成员有几种可访问性? 2.用sealed修饰的类有什么特点 3.执行下面代码后: String strTemp ="abcdefg 某某某"; Int i System.Text.Encoding.Default.GetBytes(strTemp).Length; Int j = strTemp.Length; 1.问:i,j分别为多少并说明理由 4.概述三层结构体系? https://www.doczj.com/doc/fc7820781.html,中读写XML的类都归属于哪些命名空间? 6.a=10,b=15,在不用第三方变量的前提下,把a,b的值互换? 7.对数据的并发采用什么办法进行处理较好。 8.override与重载的区别? 9.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您 有几种方法进行处理? 10.什么叫应用程序域 11.CTS、CLS、CLR分别作何解释 12.什么是装箱和拆箱 13.什么是Code-Behind技术 14.GC是什么? 为什么要有GC 15.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 16.数组有没有length()这个方法? String有没有length()这个方法? 17.堆和栈的区别? 18.请指出GAC的含义 19.DataReader与Dataset有什么区别 20.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义? 21.C/S结构模式与B/S结构模式的主要区别是什么 22.C#中的数组类型有何特点? 23.ASP。NET与ASP相比,主要有哪些进步? 24.结构和类的区别是什么? 25.&和&&的区别 26.<%#%>和<%%>有什么区别? 27.在https://www.doczj.com/doc/fc7820781.html,中,下列代码运行后的输出结果是? DataTable dt = new DataTable(); dt.Columns.Add(“编号“,typeof(System.Int16)); dt.Columns.Add(“成绩“,typeof(System.Int16)); for(int i=1; i<=3;i++){ dataRow dr = dt.NewRow(); dr[0]=i;
竭诚为您提供优质文档/双击可除.net开发工程师面试问题 篇一:net开发工程师面试题 姓名:日期: 1、简述private、protected、public、internal修饰符的访问权限。 2、c#中的委托是什么?编写一个简单的委 托代码。3、c#中抽象类是什么?编写一个简单的抽象类代码。4、例举https://www.doczj.com/doc/fc7820781.html,页面之间传值的几种方式。5、override 与重载的区别? 6、求出下表达式的值1-2+3-4+……..+m=?(要求:任意写出一种实现方法) 7、.net中读写数据库需要用到哪些类?他们的作用是什么? 8、简述.net异常处理机制? 9、写出下面题目的sql语句: 表1tb_bmbm部门基本信息表 bmbm部门编码bmmc部门名称 表2tb_bmje部门月营业表, yy年mm月 bmbm部门编码je部门营业额 a.要求写一条sql语句查询有哪些部门年累计营业
额>1000的,注意要按年yy,部门名称bmmc分组的累计金额查询。 b.查找表1中有哪些部门不在表2中(查询条件为季度累计营业额>200)。 10、用一条sql语句查询出每门课都大于80分的学生姓名。 —1— —2— 篇二:c#.net开发工程师面试题 c#开发工程师面试题 答题人______________________ 答题日期______________________ 1.简述c#中类与结构的异同及适用情形 2.请编写一段你最熟悉的数组排序算法 3.假使(用https://www.doczj.com/doc/fc7820781.html,)开发了一个资讯类网站,新闻列表及内容均为每次从数据库加载,对 于优化该网站,你有什么好的想法? 4.简述dictionary(dictionary)与hashtable异同,及各自适用的情形 5.表 student(classidint,studentidint,scoreint)class(clas sidint,classname
1.下面有关用户控件与aspx页面区别说法错误的是(B) A.用户控件不能再包含