標籤:
過完年來,準備找份新工作,雖然手裡的工作不錯,但樹挪死,人挪活。咱不能一直在一個坑裡生活一輩子,外面的世界畢竟是很美好的。
為了能正常的找到自己中意的工作,最近是將所有的基礎知識拿出來複習了一次。僅作記錄,自勉,各位大神不要噴,隨意看看就好了。
以下知識點,均摘自面試過程中遇到的題
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
以上是今天的重點觀察,也許很基礎,也許很多次重逢,溫故而知新吧
面試前的準備---C#知識點回顧----01