【11】请说明在C#中,string str = null 与 string str = “” 以及 string str=String.Empty 的区别。
string str = null 是不分配内存空间的,
而 string str = "" 和 string str=String.Empty 均分配长度为0的空字符串的内存空间,一般推荐使用 string str=String.Empty ,因为 String.Empty 让代码好读,防止代码产生歧义(如“”和“ ”不太好区分)。
【12】请详述在dotnet中类(class)与结构(struct)的异同?
class可以被实例化,属于引用类型,是分配在内存的堆上的,struct属于值类型,是分配在内存的栈上的。
【13】try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
【14】short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,而s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。
short s1 = 1; s1 += 1;正确。
【15】float f=-123.567F; int i=(int)f;i的值现在是_____?
-123。
【16】堆和栈的区别?
堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。
栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。
【17】StringBuilder 和 String 的区别?
StringBuilder 是可扩展的,在大量字符串拼接时使用。
String 在进行运算时会产生一个新的实例。
【18】向服务器发送请求有几种方式?
get,post。get一般为链接方式,post一般为按钮方式。
【19】什么是泛型?
从编程的角度说是在定义类或者方法的时候省去具体的类型,由调用者来指定,类型+泛型类型合成得到真正的类型。
从实现机制上说,泛型是CLR在运行时动态根据泛型类型创建的匿名类型。
从OO设计的角度说,泛型体现了多态性。泛型使得程序员可以复用数据结构和算法,并且适应不同的类型,享有编译期间的强类型检查和语法提示。
【20】session有什么重大bug,微软提出了什么方法加以解决?
iis中由于有进程回收机制,系统繁忙的话session会丢失,可以用state server或sql server数据库的方式存储session不过这种方式比较慢,而且无法捕获session的end事件。