面试前的准备---C#知识点回顾----01

2018-06-17 19:54:26来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

过完年来,准备找份新工作,虽然手里的工作不错,但树挪死,人挪活。咱不能一直在一个坑里生活一辈子,外面的世界毕竟是很美好的。

为了能正常的找到自己中意的工作,最近是将所有的基础知识拿出来复习了一次。仅作记录,自勉,各位大神不要喷,随意看看就好了。

以下知识点,均摘自面试过程中遇到的题

1.try{} 里面有个Return语句,那么紧跟try后面的Finally{}会不会执行?

答案:会执行,在Return后执行

喜欢研究透的同学可以参考:http://www.cnblogs.com/forcertain/archive/2012/11/22/2782855.html

我的记忆方法如下

public static int ExecuteNonQuery(string connStr, string sql)
{
  OleDbConnection conn = null;
try
{
  conn = new OleDbConnection(connStr);
  conn.Open();
  OleDbCommand command = new OleDbCommand(sql, conn);
  return command.ExecuteNonQuery();
}
catch
{
  return 0;
}
finally
{
  conn.Close();
}
}

这属于帮助记忆型,最好还是弄懂原理

2.Using有什么用.

答:很多同学看到这个就笑了,不就是namespace的引用嘛,殊不知,出题人正在等你更精彩的回答呢。

Using还可以实现非托管资源的释放,实现了IDisposiable类在Using中创建,Using结束后会自动调用Dispose方法回收资源,其等价于try...finally

以上可以参考:http://www.cnblogs.com/miniwiki/archive/2010/05/13/1734307.html

这个时候面试官就笑了,绵里藏针的问,什么是非托管资源,托管资源.这个时候接不上就暴露了背书了吧。

托管资源:一般是指被CLR控制的内存资源,这些资源由CLR来管理。可以认为是.net 类库中的资源。

非托管资源:不受CLR控制和管理的资源,比如文件流,数据库的连接,网络连接,系统的窗口句柄,打印机资源等,这类资源一般不存在堆上。可以认为操作系统资源的一组API。

对于托管资源,GC负责垃圾回收。对于非托管资源,GC可以跟踪非托管资源的生存期,但是不知道如何释放它,这时候就要人工进行释放。

然后面试官就会继续问GC回收机制巴拉拉一大推了,直到你回答不上来为止.

3.Readonly 同Const区别

是不是又被简单到了?

 首先先解释下什么是静态常量以及什么是动态常量。静态常量是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。而动态常量的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化。

基本了解以上后,就可以对号入座了。const修饰的常量是上述中的第一种,即静态常量;而readonly则是第二种,即动态常量。那么区别可以通过静态常量与动态常量的特性来说明

   1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化 

   2)const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候

      此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。      

以上摘自:http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html

以上是今天的重点观察,也许很基础,也许很多次重逢,温故而知新吧

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:重构:用Command替换条件调度程序

下一篇:C# 超时工具类 第二版