過完年來,準備找份新工作,雖然手里的工作不錯,但樹挪死,人挪活。咱不能一直在一個坑里生活一輩子,外面的世界畢竟是很美好的。
為了能正常的找到自己中意的工作,最近是將所有的基礎知識拿出來復習了一次。僅作記錄,自勉,各位大神不要噴,隨意看看就好了。
以下知識點,均摘自面試過程中遇到的題
1.try{} 里面有個Return語句,那么緊跟try后面的Finally{}會不會執行?
答案:會執行,在Return后執行
喜歡研究透的同學可以參考:http://m.survivalescaperooms.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://m.survivalescaperooms.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://m.survivalescaperooms.com/royenhome/archive/2010/05/22/1741592.html
以上是今天的重點觀察,也許很基礎,也許很多次重逢,溫故而知新吧
新聞熱點
疑難解答