.net面试题目汇总

Abstruct class 与 Interface的区别

相同点:

1)  都不能被初始化;

2)  都支持抽象方法;

不同点:

1)  abstract class的成员函数允许有函数体,interface不能

2)  abstract class允许有成员变量,interface不能(interface只能含有事件,委托,函数,属性,索引器);

3)  abstract class的方法允许含有可见性修饰符,interface不能(默认为public)

4)  abstract class不能被多重继承,interface可以被多重继承(实现)

5) abstract class 可以拥有构造函数/静态构造函数,interface不可以

 

class 与 Struct的区别

相同点:

1)  它们都是创建对象的模板,用以抽象某类具有统统特征的对象;他们都包含数据和方法;

2)  它们在使用上没有太大的区别,除了关键字class和struct不同;

不同点:

1)  Struct是值类型,它在内存中的存储方式是存储于堆(heap)上

2)  Class是引用类型,它在内存中的存储方式是存储于栈(stack)上

 

Ref, Out, Params的区别

params 关键字可以指定在参数数目可变处采用参数的方法参数。在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。

Out

这是一个引用传递L。

原则一:当一个方法(函数)在使用out作为参数时,在方法中(函数)对out参数所做的任何更改都将反映在该变量中。

原则二:当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。

原则三:若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。

原则四:不必初始化作为 out 参数传递的变量,因为out 参数在进入方法(函数)时后清空自己,使自己变成一个干净的参数,也因为这个原因必须在方法返回之前为 out 参数赋值(只有地址没有值的参数是不能被.net接受的)。

原则五:属性不是变量,不能作为 out 参数传递。

原则六:如果两个方法的声明仅在 out 的使用方面不同,则会发生重载。不过,无法定义仅在 ref 和 out 方面不同的重载。

ref仅仅是一个地址!!!

原则一:当一个方法(函数)在使用ref作为参数时,在方法中(函数)对ref参数所做的任何更改都将反映在该变量中。

原则二:调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

原则三:若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。ref 参数的值可以被传递到 ref 参数。

原则四:ref参数传递的变量必须初始化,因为ref参数在进入方法(函数)时后还是它自己,它这个地址指向的还是原来的值,也因为这个原因ref参数也可以在使用它的方法内部不操作。

原则六:如果两种方法的声明仅在它们对 ref 的使用方面不同,则将出现重载。但是,无法定义仅在 ref 和 out 方面不同的重载。

经常会被问到的二个算法:冒泡排序和二分法。以下是两个比较经典的实现。
 
冒泡排序算法:
   public void BubbleSort( int[] arr)
        {
             for ( int i = 1; i < arr.Length; i++)
                 for ( int j = 0; j < arr.Length - i; j++)
                {
                     if (arr[j] > arr[j + 1])
                    {
                         int tmp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = tmp;
                    }
                }
        }
二分法查找:
    public int HalfSearch( int key, int[] arr)
        {
             int left = 0;
             int right = arr.Length - 1;

             while (left <= right)
            {
                 int middle = (left + right) / 2;

                 if (key == arr[middle])
                     return middle;
                 else if (key > arr[middle])
                {
                    left = middle + 1;
                }
                 else
                {
                    right = middle - 1;
                }
            }
             return -1;
        }
1. 面试时有相当大的可能会被问到面向对像的特点:继承,封装,多态。
封装:每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。
继承:对象的继承代表了一种“is-a”的关系,如果两个对象A和B,可以描述为“B是A”,则表明B可以继承A。
多态:表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。
 
2.集合
ArrayList是命名空间System.Collections下的一部分,它是使用大小可以按需要动态增加的数组实现IList接口。
 
3.泛型
泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型占位符;类型参数作为其字段的类型和其方法的参数类型出现。
IList<A> arrA = new List<A>();
 
通常情况下,都建议使用泛型集合,因为这样可以获得得类型安全的直接优点而不需要从基集合类型派生并实现类型的特定成员。此外,如果集合元素为值类型,泛型集合的性能通常优于对应的非泛型集合类型(并优于从非泛基集合型类型派生的类型),因为使用泛型时不必对元素进行装箱。
 
4.委托和事件
委托是对函数的封装,可以当作给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。事件是在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。
public delegate void CatShoutEventHandler();
public event CatShoutEventHandler CatShout;
EventArges是包含事件数据的类的基类
 
 
一、Remoting和WebService
面试的时候有时候会被问到Remoting和Webservice技术的区别:
 
1. Remoting MarshByReference 的,可以传变量的引用,直接对服务器对象操作。速度快,适合 intranet (企业内部互联网)。
Webservice MarshByValue 的,必须传对象的值。速度慢,可以过 FIREWALL, 配置比较简单,适合 internet (因特网)。
 
2. 一般来说,R emoting 是和平台相关的,需要客户和服务器都是 .NET ,但可配置特性比较好,可以自定义协议,可以使用Http或Tcp协议。
Webservice 可以做到跨平台通信,但必须采用 SOAP 协议。
 
3. soap 消息有 rpc 和文档两种样式。
文档样式的 body 元素中包含一个或多个元素,可以是任何内容,只要接受者理解就行了。 rpc 样式的的 body 元素中包含调用的方法或远程过程的名称,以及 代表方法参数的元素。
.net 对这两种样式的实现就是W ebservice 和R emoting
 
4.Remoting不仅能传输XML格式的SOAP包(HTTP),还能传输二进制的数据流(TCP)。
Webservice只能传输SOAP包。
 
5.Remoting可以用于有状态的情况,Webservice是基于Http无状态的。
 
6.在Windows操作系统中,Webservice是基于.net framework和IIS框架之上的,而Remoting则是不依赖于IIS的,使用者可以开发和部署自己的宿主服务器。
 
这里还有两个重点:
1.Remoting的SingleTon和SingleCall模式
SingleTon模式:此为有状态模式。如果设置为SingleTon激活方式,则Remoting将为所有客户端建立同一个对象实例。当对象处于活动状态时,SingleTon实例会处理所有后来的客户端访问请求,而不管它们是同一个客户端,还是其他客户端。SingleTon实例将在方法调用中一直维持其状态。举例来说,如果一个远程对象有一个累加方法(i=0;++i),被多个客户端(例如两个)调用。如果设置为SingleTon方式,则第一个客户获得值为1,第二个客户获得值为2,因为他们获得的对象实例是相同的。如果熟悉Asp.Net的状态管理,我们可以认为它是一种Application状态。
SingleCall模式:SingleCall是一种无状态模式。一旦设置为SingleCall模式,则当客户端调用远程对象的方法时,Remoting会为每一个客户端建立一个远程对象实例,至于对象实例的销毁则是由GC自动管理的。同上一个例子而言,则访问远程对象的两个客户获得的都是1。我们仍然可以借鉴Asp.Net的状态管理,认为它是一种Session状态。
 
2.WebService和SOAP支持处理的数据类型
不知道大家有没有遇到这种情况:在调用WebService并给一个方法传递了一个DataRow参数时,运行时会抛出异常: "没法将参数序列化!",如果把DataRow加入到DataSet中,并将DataSet作为参数传递再运行就OK了。 这是因为:XML WebService只能对数据集DataSet对象类型进行XML序列化,不能对DataRow对象类型进行XML序列化造成的错误.  所以了解一下XML WebService支持序列化的基  本数据类型是比较重要的.它支持的数据类型如下:
  1).基本数据类型. 
      标准类型,如:int float bool DateTime string等基本数据类型
  2).枚举.
      支持枚举Enum定义的类型
  3).自定义对象.
      可以传递任意基于自定义类或结构创建的对象。 但要注意一点: 它只能传输数据成员(变量和属性). 如果定义了方法,则方法不能进行序列化传输,序列化后只剩下数据成员.
  4).DataSet对象
      支持DataSet,切记:不支持DataTable和DataRow,DataSet已经是Webservice能够支持的最小的可序列化对象.
  5).XmlNode对象
      基于XmlNode的对象可以表示XML文档的一部分.
  6).数组和集合
      可以使用任何被支持的类型的数组和简单集合,包括: DataSet对象/XmlNode对象和自定义对象.
 
顺便说明一下序列化的概念:
序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。要使一个类可序列化,最简单的方法是使用 Serializable 属性对它进行标记。给个例子:
 [Serializable]
class MyUser
{
    public string sUserName;
    public int iAage;
    public override string ToString()
    {
        return string.Format("姓名:{0},年龄:{1}", sUserName, iAage);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是面试中常见的37个问题,给出自己的答案,全面地观察一下自己。 General question: 1. Tell me about yourself a) 简要介绍你自己。 2. why are you interested in this position? a) 你为什么对这份工作感兴趣? 3. What are your strengths? a) 谈谈你的优势。 4. What is your biggest weakness? a) 谈谈你最大的弱点是什么? 5. Why do you feel you are right for this position? a) 为什么你认为自己适合这个职位? 6. Can you give me the highlights of your resume? a) 谈谈你的简历上有些什么值得特别关注的吗? 7. Why did you choose your major? a) 你为什么选择这个专业? 8. What are your interests? a) 你有哪些兴趣爱好呢? 9. What are your short and long-term goals? a) 你对于短期和长期的标是什么? 10. Tell me how your friends/family would describe you? a) 如果我向你的朋友或者家人询问对你的评价,你认为他们会怎样说? 11. Using single words, tell me your three greatest strengths and one weakness? a) 用简单的词,描述你的三项最突出的优点和一个缺点。 12. What motivates you to succeed? a) 你争取成功的动力是什么? 13. What qualities do you feel are important to be successful in__(i.e. customer service)? a) 哪些品质在你看来对成功是最重要的? 14. What previous experience has helped you develop these qualities? a) 哪些之前的经历帮助你获得了这些品质? 15. Can you give me an example of teamwork and leadership? a) 你能向我列举一个展现了人的团队活动和领导力的例子吗? 16. What was your greatest challenge and how did you overcome it? a) 你经历过最大的挑战是什么?你如何跨越它的? 17. Why should I hire you over the other candidates I am interviewing? a) 我为什么要从这么多应聘者中选择你呢? 18. Do you have any questions? a) 你有一些什么问题吗? 19. What are your compensation expectations? a) 你对于报酬有什么样的期望? Leadership Questions: 20. what was your greatest accomplishment in past time? a) 在过去的日子里,你觉得自己最大的成就是什么? 21. Have you ever been asked to do something unethical? If yes, how did you handle it? a) 曾经有人要求你去做一不道德的事情吗?如果有,你是怎么处理的呢? 22. What do you do if you totally disagree with a request made by your manager? a) 如果你完全不同意你上司的某个要求,你怎么处理? Teamwork Questions: 23. When in a group setting, what is your typical role? a) 你在团队中通常的作用是什么? 24. How do you motivate a team to succeed? a) 你怎么激励团队达到成功? 25. Have you been in team situations where not everyone carried their fair share of the workload? If so, how did you handle the situation? a) 如果你所处的团队中,并不是每个成员都承担着相同的工作量,你怎样处理这种情况? Problem-Solving Questions: Problem-solving question demonstrate your ability to come up with solutions to difficult situations and your ability to think on your feet. 26. How do you prioritize when you are given too many tasks to accomplish? a) 你怎样在一堆根本做不完的工作任务中区分轻重缓急? 27. Why are manholes covers round? a) 为什么下水道的井盖是圆的? Organizational and Planning Questions: Organizational and planning questions demonstrate how you approach your job and how you think. If someone appears disorganized, more likely than not, that candidate will be rejected. 28. Tell me about a goal you set for yourself and how you accomplish it. a) 讲述一件你的经历,你为自己设定了标,制订了计划,实施计划,达到标。 29. Do you typically achieve what you set out to do? a) 你总是能实现自己为自己设定的标吗? Miscellaneous Questions: 30. What de-motivates or discourages you? a) 有哪些因素可能会让你失去动力或信心? 31. Do you work better in teams or by yourself? a) 对于你来说,与团队一起工作和独自干活哪样高效率更高? 32. How important to you is a positive attitude? a) 积极的态度对你有多重要? 33. What is your definition of success? a) 你怎样定义成功? 34. What was your biggest disappointment during your college life? a) 你大学阶段最大的遗憾是什么? 35. Tell me about the most difficult decision you have had to make. a) 你曾经做过的最难的决定是什么? 36. What is your ideal job? a) 你理想的工作是什么? 37. 到现在为止,你还有应聘别的公司吗?进行得怎样?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值