记录一下在面试过程中碰到的一些面试题目,以供查缺补漏。
1:typeof()和GetType()的区别
同:它们都返回System.Type类型
异:typeof(x),只是一个运算符,只能针对类型进行运算。即x,只能为类型,不能是一个类型变量。
x.GetType(),继承自Object的方法,任何一个object变量都可以使用。

Person p = new Person(); //正确 typeof(Person); //错误 typeof(p); //正确 p.GetType(); //错误,继承自Object的GetType()是一个实例方法,需要实例化一个对象对能调用 Person.GetType(); //Object中GetType()方法的定义 public Type GetType()
2:枚举类型加一个[flag]标志有什么特别和意义?
3:如何约束一个泛型的类型?
a、where T:Struct(备注:类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。) b、where T:Class(备注:类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。) c、where T:new()(备注:类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。) d、where T:<Base Class Name>(备注:类型参数必须是指定的基类或派生自指定的基类。) e、where T:<interface name>(备注:类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。)
4:求一个数据表中缺失的最大和最小ID。例如:ID(1,2,3,6,8)那么它缺失的最小ID就是4,最大ID就是7。
SELECT MIN(IDS) AS MINIDS ,MAX(IDS) AS MAXIDS FROM ( SELECT ID+1 AS IDS FROM T ) A WHERE A.IDS NOT IN ( SELECT ID FROM T ) AND A.IDS ( SELECT MAX(ID) FROM T )
5:按位与、或、异或、取反
按位与运算符(&) 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 按位或运算符(|) 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; 即 :参加运算的两个对象只要有一个为1,其值为1。 异或运算符(^) 运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0; 即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。 取反运算符(~) 运算规则:~1=0; ~0=1; 即:对一个二进制数按位取反,即将0变1,1变0。