WPF经验总结

.NET面试题

时间:2014-2-16 20:56:42  作者:WPF之家  来源:http://www.wpf123.com/  查看:580  评论:0
内容摘要:1. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?=============== property用法 get/set方法。主要用于类与外部程序之间的数据交互使用。增加了对类内部数据访问的安全性和方便性,在编译期就可以进...

1. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
=============== 
property用法 get/set方法。
主要用于类与外部程序之间的数据交互使用。
增加了对类内部数据访问的安全性和方便性,在编译期就可以进行类型检查和访问权限检查。

attribute用法
[STAThread]
public void Thrd(){...}
attribute是一个派生自System.Attribute基类的类。
attribute可在反射中被枚举,查询。
(当编译器看到一个属性被附着给一个类型或成员时,它会搜索具有指定属性名的System.Attribute派生类。
如果编译器没有找到匹配的类,它就在指定的属性名后面加上Attribute,然后再进行搜索。
因此,常见的使用做法是将属性类名定义为以Attribute结尾,在使用时忽略名称的这一部分。)
使用Attribute可以让用户把自定义的信息附属到实体上,
还可以在运行时动态查询,
这些信息不仅可以被用户取出来作为一种类型的标注,它更可以被编译器所识别,
作为编译时的一种附属条件参加程序的编译。
举例如
[STAThread]和[MTAThread]
线程模式属性,
通过这两个属性可以指定线程是单线程模式还是多线程模式。
(线程模型只影响使用COM interop的应用程序,将这个属性应用于不使用COM interop的程序将不会产生任何效果。)
几个常用的属性:
AttributeUsage | Class | 指定另一个属性类的有效使用方式 
CLSCompliant | 全部 | 指出程序元素是否与CLS兼容 
Conditional | Method | 指出如果没有定义相关联的字符串,编译器就可以忽略对这个方法的任何调用 
DllImport | Method | 指定包含外部方法的实现的DLL位置 
STAThread | Method(Main) | 指出程序的默认线程模型为STA 
MTAThread | Method(Main) | 指出程序的默认模型为多线程(MTA) 
Obsolete | 除了Assembly、Module、Parameter和Return | 将一个元素标示为不可用,通知用户此元素将被从未来的产品 
ParamArray| Parameter |允许单个参数被隐式地当作params(数组)参数对待 
Serializable| Class、Struct、enum、delegate |指定这种类型的所有公共和私有字段可以被串行化 
NonSerialized |Field| 应用于被标示为可串行化的类的字段,指出这些字段将不可被串行化 
StructLayout| Class、struct |指定类或结构的数据布局的性质,比如Auto、Explicit或sequential 
ThreadStatic |Field(静态) |实现线程局部存储(TLS)。不能跨多个线程共享给定的静态字段,每个线程拥有这个静态字段的副本
=======================================
2. 讲一讲你理解的web service,在dot net framework中,怎么很好的结合xml?
   web service是跨网络提供服务的一项技术的集合,主要通过各种不同的协议来实现一个服务的支持,
   比如http(Hypertext Transfer Protocol) 协议,
         xml(eXtensible Markup Language),
         soap(Simple Object Access Protocol)协议,
         WSDL (Web Services Description Language),
         UDDI (Universal Description, Discovery and Integration)。
         .net framework中提出了xml web service的概念:
          这个概念主要阐述了将xml web service作为一个英特网上进行分布式计算的基础构架。
         开放标准和通信,实现通过人与应用程序的协作,
         通过xml web service整合应用程序来创建一个平台。
         应用程序从不同的源中经过xml web service来整合实现。
         以下是.net关于xml web service的定义:
        . xml web service通过一个标准的协议向web用户公布实用功能。大多数情况下这个协议是SOAP协议。
        . xml web service通过一种方法去描述接口,
           这些信息必须足够详细以便用户能根据这些信息去实现一个客户应用程序。
         这个描述通常是以一个xml文档(Web Services Description Language)呈现。
        一旦xml web service被注册,
        那么潜在的用户可以很容易的通过Universal Discovery Description and Integration 找到这些服务。


3.  接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类? 
  答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,
           但是有个条件,条件是,实体类必须要有明确的构造函数。

4.   构造器Constructor是否可以被继承?是否可以被Override?
  答:Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).

5.   是否可以继承String类?
  答:因为String类是final类所以不可以继承string类。

6. 当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的方法?
  答:不可以,一个对象的方法只能由一个线程访问。
=============
7.  C#是否可以对内存直接进行操作? 
   答:这个问题比较难回答,也是个很大的问题。但是可以这样问答。
          C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,
          在用的时候需要在前边加unsafe,
          在.net中使用了垃圾回收机制(GC)功能,它替代了程序员,
          不过在C#中不可以直接使用finalize方法,而是在析构函数中调用基类的finalize()方法。
=================
7. 数组有没有Length()这个方法?string有没有这个方法?
  答:数组中没有这个方法,但有这个属性,string中有这个方法。
8, Error和Exception有是区别?
  答:error表示恢复不是不可能,但是很困难,
           exception表示一种实际或实现问题,它表示程序运行正常不可以发生的。
9,谈谈final,finally,finallize的区别? 
   答:final用于申明属性、方法、类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
       Finally是异常处理语句结构中,表示总是执行的部分。
       Finallize表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。
=======================
10. HashMap和Hashtable区别? 
  答:HashMap是Hashtable的轻量级实现,非线程安全的实现。
           他们都实现了map接口,
           主要区别是HashMap键值可以为空null,效率可以高于Hashtable。

11,Collection和Collections的区别?
   答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,
            它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作
========================
12,C#中委托是什么?事件是不是一种委托?
  答:委托是一种安全的类似与函数指针,但是她比指针要安全的多,
           它可以把方法作为一个参数传递给另一个方法,可以理解为指向函数的引用。
           事件是一种消息机制,它是一种委托,委托不带方法体。
=========================
13.  Override, Overload,的区别? 
   答:Override是重写的意思,它表示重写基类的方法,
           而且方法的名称,返回类型,参数类型,参数个数要与基类相同。
       Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的可以不同。

14.  在一个BS结构中需要传递变量值时,不能使用session,coolke,application,你有几中方法? 
   答:this.server.Transfer,Querystring.
===================
15.  C#中索引器实现过程,是否只能根据数字索引? 
     答:不是的,可以是任意类型。
16,New有种用法? 
  答:有3种,第一种是,实例化如:New Class()
                  第二种是,public new 隐藏基类的方法
                  第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。

==================
17.  如何把一个Array复制到Arraylist中?
  答:Foreach (object o in Array), ArrayList.Add (0)
19. Const和ReadOnly?
  答:Const用来申明编程时常量,ReadOnly用来申明运行时常量。
20. public const static readonly int jj=4;有没有错误?
      答:去掉static。
=================
21. UDP和TCP连接有和异同?
  答:TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,
           当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后才能传输数据。
           TCP提供超时重拨,检验数据功能。
           UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。


===================
21. 进程和线程分别该怎么理解?
  答:进程是比线程大的程序运行单元,都是由操作系统所体会的系统运行单元,
           一个程序中至少要有一个进程,一个进程中,至少要有一个线程,
           线程的划分尺度要比进程要小,
           进程拥有独立的内存单元,线程是共享内存,
           从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。
====================
22,ASP。NET页面之间传递值的几种方式?
  答:QueryString,session,cookies,application,server.Transfer,respose.redictor.

23.  什么叫应用程序域?什么是托管代码?
       什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释? 
    答:应用程序域:就是为安全性,可靠性,隔离性,和版本控制,及卸载程序提供的隔离边界。
             它通常由运行库宿主创建,应用程序域提供了一个更安全,用途更广的处理单元。
          托管代码:使用CLR编译语言编辑器开发编写的代码就叫托管代码。
          装箱和拆箱:是把值类型转换为引用类型的过程,是隐式的,相反的过程就是拆箱,是显式的。
                           CTS是公共类型系统,CLS是公共语言规范,CLR公共语言运行库。
          强类型系统:每个变量和对象都必须具有申明类型。
=========================
24.值类型和引用类型的区别? 
  答:值类型的值是存放在堆栈中的,改变其值,不改变变量原有的值,
           而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。
           值类型不允许包含null值,然而可空类型可以将null赋值给值类型l。

25.  解释一下UDDI、WSDL的意义及其作用?
  答:UDDI是统一描述集成协议,是一套基于Web的,分布式的,为WEB服务提供的信息注册的实现标准规范,
           同时为也是为企业本身提供的Web服务注册以让别的企业能够发现并访问的协议标准。
           提供了基于标准的规范,用于描述和发现服务,还提供了一组基于因特网的实现。
       WSDL这是一个基于XML的描述WEB服务的接口。

27.什么是SOAP?
  答:是简单访问协议。
           是在分布式环境中,交换信息并实现远程调用的协议。
           是一个基于XML的协议。
           使用SOAP,可以不考虑任何传输协议,但通常还是HTTP协议,
           可以允许任何类型的对象或代码,在任何平台上,以任一种语言相互通信。
           它是一种轻量级协议。
====================
32.能用foreach遍历访问的对象需要实现?
  答:需要实现IEnumerable接口和GetEnumerator ()方法。


标签:面试 试题 

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。本文出自“wpf之家”,请务必保留此出处:http://www.wpf123.com

上一篇:没有了
下一篇:C# 找不到可安装的ISAM
相关评论
Copyright © 2009-2014 WPF之家(http://www.wpf123.com/) All rights reserved
 Powered by WPF之家
鄂ICP备13006396号