.NET面试题——第11篇 c#垃圾回收

1. C#中的垃圾回收机制。

GC就是垃圾回收器,一般来说系统会自动检测不会使用的对象或变量进行内存的释放,不需要手动调用,用Collect()就是强制进行垃圾回收,使内存得到及时的释放,让程序效率更高。

2. c#中的三元运算符是什么

C#中有一个三元运算符”?:”,语法为:条件表达式?表达式1:表达式2;

该操作首先求出条件表达式的值(bool类型),为true时调用表达式1,为false时调用表达式2。其逻辑为:”如果为真执行第一个,否则执行第二个。”

3. 请列出C#中几种循环的方法,并指出他们的不同

for:一般用于循环次数已知的循环

while: 一般用于循环次数未知的循环,工作原理:先判断后执行

do...while:一般用于循环次数未知的循环,工作原理:先执行一次后判断

foreach:当一个序列实现IEnumerable接口或者GetEnumerator()方法时,可以用该循环方法,一般用于遍历集合或数组,更加安全

4. 能用foreach遍历访问的对象需要实现 __ 接口或声明方法的类型。

能用foreach遍历访问的对象需要实现 IEnumerable 接口或声明GetEnumerator 方法的类型

5. 描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

不是。可以用任意类型。

6. C#中能使用指针吗,怎样使用指针?

能,我们可以使用unsafe关键词,开启不安全代码(unsafe code)开发模式直接操作内存,这样就可以使用指针了。

7. C#是否可以对内存直接进行操作?

C#是可以对内存进行直接操作的,虽然很少用到指针,但是C#是可以使用指针的,在用的时候需要在前边加unsafe。

8. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?

一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质

9. C#中,i++与++i,有什么区别?

i++是使用完 i 之后再使 i 加一

++i是在使用 i 之前便使 i 加一

10. 描述一下C#中索引器的实现过程,是否只能根据数字进行索引

C#通过提供索引器,可以像处理数组一样处理对象。特别是属性,每一个元素都以一个get或set方法暴露。索引器不单能索引数字(数组下标),还能索引一些HASHMAP的字符串,所以,通常来说,C#中类的索引器通常只有一个,就是THIS,但也可以有无数个,只要你的参数列表不同就可以了索引器和返回值无关, 索引器最大的好处是使代码看上去更自然,更符合实际的思考模式。

11. C#代码编译成中间语言有什么作用?

优点:一是可以实现平台无关性,既与特定CPU无关;二是只要把.NET矿建某种语言编译成IL代码,就实现.NET矿建中语言之间的交互操作。

IL是.NET矿建中的中间语言(Intermediate Language)的缩写。

12. 概述三层结构体系?

表示层(UI),业务逻辑层(BLL),数据访问层(DAL)。

13. 对三层架构的理解。

答: 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了”高内聚,低耦合”的思想。

  1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

  2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

  3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

14. 分层式结构究竟其优势何在?

1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、可以降低层与层之间的依赖;

4、有利于标准化;

5、利于各层逻辑的复用。

概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。

15. 分层式结构也不可避免具有一些缺陷

1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

16. 请解释一下.NET多层应用程序中层与层之间以哪几种方式进行数据传递。并解释你自己的项目中采用哪种方式进行。

三层架构一般指的是界面层,业务层,数据层。

界面层就是系统的操作界面,和用户直接交互的地方。

业务层又称为逻辑层,英文名称是Business Logic Layer,简称BLL,是执行业务逻辑的地方数据层也称为数据访问层,英文名称是Database Access Layer,简称DAL,这里是直接和数据库进行交互的地方,也是整个系统里唯一允许访问数据库的地方。

除此之外,还有一个业务实体层,这个层比较特殊,就是定义实体类的地方,有些人把这个层归属业务层,有些人把这个独立出来,变成一个公共层。

各个层次之间的访问关系:

界面层只能单向访问业务逻辑层,业务逻辑层只能单向访问数据层,这三层都可以访问公共模块(公共层)。

17. &和&&的区别

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

18. = 和 == 的区别?

= 是赋值运算符, ==是关系运算符,用于等值判断

19. 如果不用VisualStudio,用哪个命令行编译C#程序?

csc.exe。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想只会CRUD的猿某人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值