1.属性与字段有何异同?
A:只要能透露出属性的实质是方法就差不多了。
(若能说出哪些时候适合用字段,哪些时候适合用属性,由于.NET的内联机制,用属性也不见得性能差些等就更好。但我面试的人中竟有6成不知道属性是什么,对于不知道属性是什么的人,我是决不会考虑的)
解释:它是包含在类或结构中的对象或值。字段使类和结构可以封装数据。
字段存储类要满足其设计所需要的数据。例如,表示日历日期的类可能有三个整数字段:一个表示月份,一个表示日期,还有一个表示年份。在类块中声明字段的方式如下:指定字段的访问级别,然后指定字段的类型,最后指定字段的名称。例如:
C# 复制代码
public class CalendarDate
{
public int month;
public int day;
public int year;
}
访问对象中的字段是通过在对象名称后面依次添加一个句点和该字段的名称来实现的,具体形式为 objectname.fieldname。例如:
C# 复制代码
CalendarDate birthday = new CalendarDate();
birthday.month = 7;
声明字段时可以使用赋值运算符为字段指定一个初始值。例如,若要自动将 7 赋给 month 字段,需要按如下方式声明 month:
C# 复制代码
public class CalendarDateWithInitialization
{
public int month = 7;
//...
}
2.静态的方法成员和非静态的方法成员有何不同?
A:这个题的语法很明显出了问题,导致很多人刚开始不知如何回答,这是我的问题,我其实想问的是静态方法和非静态方法的区别,静态成员变量和非静态成员变量的区别。
答简单点,就是静态方法仅需要通过类名访问,非静态方法需要通过实例化出来的对象访问。成员变量也是一样。
有时我会继续问静态成员变量和非静态成员变量的生存期,静态成员变量是类第一次访问时创建,一般在程序结束时才会释放,非静态成员变量在对象创建时创建。
3.什么是定制特性(Attribute),怎么用?
A:定制特性是给类或属性或方法等元数据附加数据。需要通过反射才能取到。
(其实定制特性在项目中一般用得不多,大部分时候甚至用不上。主要是觉得作为一种知识,或者说作为.NET的一种技术,如果你不知道怎么用,那么你在碰到刚好适用这种技术的场景时,你又怎么能做出好的选择呢?应聘者有7成不知道Attribute)
4.委托怎么声明,怎么用?事件怎么声明,怎么用?
A:delegate void Dele1(object param1);
....(这是比较死的东西,查一下就知道了)
如果应聘者会用这两者,我会继续问委托与事件有什么联系。其实事件就是把委托封装了一层,对声明事件的类的外面隐藏了所有方法,除了暴露出经过重载的+=和-=两个方法。
5.值类型与引用类型有何异同?值传递与引用传递有何异同?
A:值类型分配在栈中,引用类型分配在堆中。
....(都是死概念,可以到处查得到标准答案)
我会问将一个引用类型用普通的方式(即未添加仍然关键字)作为参数时,会发生值传递还是引用传递。当然,虽然传的是引用,但就参数传递方式来讲,仍是值传递。
6.如果我要自定义一个控件,应该从哪个类继承(winform)?
A:一般从Control或UserControl继承。(只是想知道应聘者是否了解控件概念)
7.try,catch,finally,using这几个关键字的作用是什么?
A:都有死答案。就不说了。
我会继续问一下关于finally,即:try,catch块后写上finally和不写finally有区别吗?这时候,有一部分人会想不起来try,catch块后面不写finally会不会执行,其实正常情况下肯定仍然执行。finally主要体现在try,catch中有return或者catch中再次抛出异常时仍然会执行。
8.多线程同步有哪些方式?
A:我其实只希望应聘者能说出lock。关于信号量互斥体等不了解也没关系。但面试的人9成没做过多线程。
9.反射能实现什么作用?
A:动态获得元数据信息。通过元数据进行一些操作。但不可以改变元数据。???