2024年1月6日发(作者:)
.net面试题及答案3篇
.net面试题及答案1
是什么,它是如何工作的?GC是什么,简述一下GC的工作方式?
JIT:Just in time,C#或者是的代码首先被编译为IL存储在本地,当要运行这些代码的时候,CLR对IL进行第二次编译转换成机器码运行。好处:可移植性,而且IL在加载到内存中时将受到类型安全性方面检查,这实现了更好的安全性和可靠性。
GC:垃圾回收(garbage collection),是根据程序的需要自动分配和回收内存的过程。垃圾回收器处理的是引用对象,而且只回收堆上的内存。这意味着假如维持对一个对象的引用,就会阻止GC重用对象使用的内存。在.NET中,垃圾回收器采用的是mark-and-pact算法。在一次垃圾回收周期开始的时候,它要识别对象的所有跟引用,根据这个引用可以遍历每个根引用所标识的一个树形结构,并递归确定所有引用指向的对象。这样一来,垃圾回收器就可以识别所有可达的对象,在执行回收的时候,GC不是枚举所有访问不到的对象,相反,通过压缩所有相邻的可达的对象来执行垃圾回收。不可访问的对象就会被覆盖。垃圾回收的宗旨是提高内存的利用率,它并不是用来清理文件句柄,和数据库连接字符串,端口或者其他有限的资源(终接器finalizer,不能被显示调用,不能传递任何参数,即不能被重载,只有垃圾回收器才能调用终接器,使用Using语句进行确定性终结
2.类(class)和结构(struct)的区别是什么?它们对性能有影响吗?
01. 值类型与引用类型
结构是值类型:值类型在栈上分配地址,所有的基类型都是结构类型,例如:int 对应32 结构,通过使用结构可以创建更多的值类型
类是引用类型:引用类型在堆上分配地址堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用
注:1.虽然结构与类的'类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object
2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用
02.继承性
结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .
类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样
03.内部结构:
结构: 没有默认的构造函数,但是可以添加构造函数没有析构函数没有 abstract 和 sealed(因为不能继承)不能有protected 修饰符可以不使用new 初始化在结构中初始化实例字段是错误的
类: 有默认的构造函数 有析构函数 可以使用 abstract 和 sealed
有protected 修饰符
必须使用new 初始化
.net面试题及答案2
1.什么是元编程,.NET有哪些元编程的手段和场景?什么是反射?能否举一些反射的常用场景?有人说反射性能较差,您怎么看待这个问题?有什么办法可以提高反射的性能吗?
学着做OA的时候,动态加载不同的DataProvider(Oracle和Sqlserver),方便,可以随时替换不用重新编译程序
2.委托是什么?匿名方法是什么?在C# 3.0中,Lambda表达式是什么?扩展方法是什么?LINQ是什么?您觉得C# 3.0中还有哪些重要的特性,它们带来了什么优势?BCL中哪些类库和这些特性有关?您*时最常用哪些?
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的指针。
匿名方法:就是没有实际方法声明的委托实例。或者说,它们的定义是直接内嵌在代码中的。
Lambda表达式:是比匿名方法更加简洁的一种匿名函数语法
委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区
别。事件的内部是用委托实现的。因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。事件是用来*委托实例的,类比用一个自定义类*List。事件只能add、remove自己,不能赋值。事件只能+=、-=,不能= 。事件内部就是一个private的委托和add、remove两个方法。
3.工作之外您看哪些技术相关的书、网站、社区、项目等等?
您还接触哪些.NET以外的技术,能和.NET或.NET中有针对性的部分做个对比吗?
C#本质论,SQL Server2008实战,数据结构,揭秘,Javascript深入浅出
e和webapplication的区别
1)website修改后不需要重启即可看到效果,webapplication需要
2)website不分namespace,webapplication有namespace
3)website为了兼容asp转过来的开发人员习惯
4)没有技术上的区别,调试习惯不同
5)website为每个编译为一个dll,webapplication生成一个dll
6)不利于工程开发,比如代码出错不容易发现


发布评论