C#面試題

來源:互聯網
上載者:User

1、在C#中,string str = null 與 string str = “” 請盡量使用文字或圖象說明其中的區別。
回答要點:說明詳細的空間分配。(10分)
答:string str = null 是不給他分配記憶體空間,而string str = "" 給它分配長度為空白字串的記憶體空間.

2、請詳述在dotnet中類(class)與結構(struct)的異同:(10分)
答:Class可以被執行個體化,屬於參考型別,是分配在記憶體的堆上的,Struct屬於實值型別,是分配在記憶體的棧上的.

3、根據委託(delegate)的知識,請完成以下使用者控制項中程式碼片段的填寫:(10)
namespace test
{
public delegate void OnDBOperate();

public class UserControlBase : System.Windows.Forms.UserControl

{

public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)

{

if(e.Button.Equals(BtnNew))

{
//請在以下補齊代碼用來調用OnDBOperate委託簽名的OnNew事件。

}

}

}

答:if( OnNew != null )
OnNew( this, e );

4、分析以下代碼,完成填空(10分)
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j=

答:i=13,j=10

5、SQLSERVER伺服器中,給定表 table1 中有兩個欄位 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的伺服器時間,請使用一句SQL語句獲得最後更新的事務號。(10)

答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)

6、根據安全執行緒的相關知識,分析以下代碼,當調用test方法時i>10時是否會引起死結?並簡要說明理由。(10分)

public void test(int i)

{
lock(this)
{
if (i>10)

{

i--;

test(i);

}

}

}

答:不會發生死結,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死結。但如果把int換做一個object,那麼死結會發生)

7、分析以下代碼。(10)
public static void test(string ConnectString)

{

System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = ConnectString;
try

{
conn.Open();
…….
}
catch(Exception Ex)
{
MessageBox.Show(Ex.ToString());
}
finally
{

if (!conn.State.Equals(ConnectionState.Closed))
conn.Close();
}
}
請問

1)以上代碼可以正確使用串連池嗎?

答:回答:如果傳入的connectionString是一模一樣的話,可以正確使用串連池。不過一模一樣的意思是,連字號的空格數,順序完全一致。

2)以上代碼所使用的異常處理方法,是否所有在test方法內的異常都可以被捕捉並顯示出來?

答:只可以捕捉資料庫連接中的異常吧. (finally中,catch中,如果有別的可能引發異常的操作,也應該用try,catch。所以理論上並非所有異常都會被捕捉。)

8、簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。(10)

答:WS主要是可利用HTTP,穿透防火牆。而Remoting可以利用TCP/IP,二進位傳輸提高效率。

9、公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到以下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相似)。根據您的知識,請簡要談一下您的思路:(10)

答:根據點擊的列頭,包該列的ID取出,按照該ID排序後,在給綁定到ListView中

10、給定以下XML檔案,完成演算法流程圖。(10)

<FileSystem>
< DriverC >
<Dir DirName=”MSDOS622”>
<File FileName =” Command.com” ></File>
</Dir>
<File FileName =”MSDOS.SYS” ></File>
<File FileName =” IO.SYS” ></File>
</DriverC>
</FileSystem>

請畫出遍曆所有檔案名稱(FileName)的流程圖(請使用遞迴演算法)。

答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}

}

簡單的說就是從根節點開始遍曆找子節點,在從找到的子節點找它的子節點,一層層下去

 

一、選擇填空題(每空2分,共60分)
1.在對SQL Server 資料庫操作時應選用()。
a)SQL Server .NET Framework 資料提供者;
b)OLE DB .NET Framework 資料提供者;
c)ODBC .NET Framework 資料提供者;
d)Oracle .NET Framework資料提供者;
2.下列選項中,()是參考型別。
a)enum類型
b)struct類型
c)string類型
d)int類型
3.關於ASP.NET中的程式碼後置檔案的描述正確的是()
a)Web表單頁的程式的邏輯由程式碼群組成,這些代碼的建立用於與表單互動。編程邏輯唯一與使用者介面不同的檔案中。該檔案稱作為“程式碼後置”檔案,如果用C#建立,該檔案將具有“.ascx.cs”副檔名。
b)項目中所有Web表單頁的程式碼後置檔案都被編譯成.EXE檔案。
c)項目中所有的Web表單頁的程式碼後置檔案都被編譯成項目動態連結程式庫(.dll)檔案。
d)以上都不正確。
4.以下描述錯誤的是()
a)在C++中支援抽象類別而在C#中不支援抽象類別。
b)C++中可在標頭檔中聲明類的成員而在CPP檔案中定義類的成員,在C#中沒有標頭檔並且在同一處聲明和定義類的成員。
c)在C#中可使用 new 修飾符顯式隱藏從基類繼承的成員。
d)在C#中要在衍生類別中重新定義基類的虛函數必須在前面加Override。
5.C#的資料類型有()
a)實值型別和調用類型;
b)實值型別和參考型別;
c)參考型別和關聯類型;
d)關聯類型和調用類型;
6.下列描述錯誤的是()
a)類不可以多重繼承而介面可以;
b)抽象類別自身可以定義成員而介面不可以;
c)抽象類別和介面都不能被執行個體化;
d)一個類可以有多個基類和多個基底介面;
7.在DOM中,裝載一個XML文檔的方法()
a)save方法
b)load方法
c)loadXML方法
d)send方法
8.下列關於建構函式的描述正確的是()
a)建構函式可以聲明傳回型別。
b)建構函式不可以用private修飾
c)建構函式必須與類名相同
d)建構函式不能帶參數
9.以下是一些C#中的枚舉型的定義,其中錯誤的用法有()
a)public enum var1{ Mike = 100, Nike = 102, Jike }
b)public enum var1{ Mike = 100, Nike,  Jike }
c)public enum var1{ Mike=-1 , Nike, Jike }
d)public enum var1{ Mike , Nike , Jike }
10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是()。
a)9
b)2
c)6
d)越界
11.介面是一種參考型別,在介面中可以聲明(),但不可以聲明公有的域或私人的成員變數。
a)方法、屬性、索引器和事件;
b)方法、屬性資訊、屬性;
c)索引器和欄位;
d)事件和欄位;
12.ASP.NET架構中,伺服器控制項是為配合Web表單工作而專門設計的。伺服器控制項有兩種類型,它們是( )
a)HTML控制項和Web控制項
b)HTML控制項和XML控制項
c)XML控制項和Web控制項
d)HTML控制項和IIS控制項
13.ASP.NET中,在Web表單頁上註冊一個使用者控制項,指定該控制項的名稱為”Mike”,正確的註冊指令為( )
a)<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%>
b)<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%>
c)<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%>
d)以上皆非
14.在ADO.NET中,對於Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是()。
a)insert、update、delete等操作的Sql語句主要用ExecuteNonQuery()方法來執行;
b)ExecuteNonQuery()方法返回執行Sql語句所影響的行數。
c)Select操作的Sql語句只能由ExecuteReader()方法來執行;
d)ExecuteReader()方法返回一個DataReder對象;
15.下列ASP.NET語句(b)正確地建立了一個與SQL Server 2000資料庫的串連。
a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);
d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB”);
16.Winform中,關於ToolBar控制項的屬性和事件的描述不正確的是()。
a)Buttons屬性工作表示ToolBar控制項的所有工具列按鈕
b)ButtonSize屬性工作表示ToolBar控制項上的工具列按鈕的大小,如高度和寬度
c)DropDownArrows屬性工作表明工具列按鈕(該按鈕有一列值需要以下拉方式顯示)旁邊是否顯示下方向鍵
d)ButtonClick事件在使用者單擊工具列任何地方時都會觸發
17.在ADO.NET中執行一個預存程序時,如果要設定輸出參數則必須同時設定參數的方向和( ),必要時還要設定參數尺寸。
a)大小;
b)上限;
c)初始值;
d)類型;
18.如果將表單的FormBoderStyle設定為None,則( )。
a)表單沒有邊框並不能調整大小;
b)表單沒有邊框但能調整大小;
c)表單有邊框但不能調整大小;
d)表單是透明的;
19.如果要將表單設定為透明的,則( )
a)要將FormBoderStyle屬性設定為None;
b)要將Opacity屬性設定為小於100%得值;
c)要將locked 屬性設定為True;
d)要將 Enabled屬性設定為True;
20.下列關於C#中索引器理解正確的是( )
a)索引器的參數必須是兩個或兩個以上
b)索引器的參數類型必須是整數型
c)索引器沒有名字
d)以上皆非
21.下面描述錯誤的是( )。
a)表單也是控制項;
b)表單也是類;
c)控制項是從表單繼承來的;
d)表單的父類是控制項類;
22.要對註冊表進行操作則必須包含( )。
a)System.ComponentModel命名空間;
b)System.Collections命名空間;
c)System.Threading命名空間;
d)Microsoft.Win32命名空間;
23.要建立多文檔應用程式,需要將表單的( )屬性設為true。
a)DrawGrid;
b)ShowInTaskbar;
c)Enabled;
d)IsMdiContainer;
24.如果設treeView1=new TreeView(),則treeView1.Nodes.Add("根節點")返回的是一個 ()類型的值。
a)TreeNode;
b)int;
c)string;
d)TreeView;
25.下面關於XML的描述錯誤的是()。
a)XML提供一種描述結構化資料的方法;
b)XML 是一種簡單、與平台無關並被廣泛採用的標準;
c)XML文檔可承載各種資訊;
d)XML只是為了產生結構化文檔;

 

 

 

 

 

 

 

1. C#中 property 與 attribute的區別,他們各有什麼用處,這種機制的好處在哪裡? 
2. 講一講你理解的web service,在dot net framework中,怎麼很好的結合xml?(講概念就行了)
3. C#, Java 和 c++的特點,有什麼相同的地方,不同的地方,C#分別從c++和java中吸取了他們那些優點?
4. C#可否對記憶體進行直接的操作?(這可是個痛點哦?要注意!)
5. 用Visual C++ 6.0編寫的代碼(unmanaged code),如何在CLR下和其他dot net component結合?
6. 以前作過的一些項目?介紹一下自己的編程經驗。(這是矇混不過去的,基本一問就知道是真是假)
7. 你對公司有什麼期望?你的薪水期望值?為什麼學電腦?以前的工作經驗(這非常重要)?

Q3: 維護資料庫的完整性、一致性、你喜歡用觸發器還是自寫商務邏輯?為什麼
Q4:ADO。NET相對於ADO等主要有什麼改進?
Q5:ASP。NET與ASP相比,主要有哪些進步?
Q6:C#中的委託是什嗎?事件是不是一種委託?
Q7:描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
Q8:C#中要使一個類支援FOREACH遍曆,實現過程怎樣?
Q10:寫一個HTML頁面,實現以下功能,左鍵點擊頁面時顯示“您好”,右鍵點擊時顯示“禁止右鍵”。並在2分鐘後自動關閉頁面。
Q11:你對XMLHTTP、WEBSERVICE 瞭解嗎?簡單描述其特點、作用
Q12:介面和抽象類別有什麼區別?你選擇使用介面和抽象類別的依據是什嗎?
Q13:自訂控制項和一般使用者控制項的異同?如果要用這兩者之一,你會選擇哪種?為什麼
Q14:大概描述一下ASP。NET伺服器控制項的生命週期
Q15:UML
Q16:物件導向的概念,主要特點
Q17:類劃分的依據。類粒度問題
Q18:事物管理問題

第一,談談final, finally, finalize的區別。 
第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
第四,&和&&的區別。
第五,HashMap和Hashtable的區別。
第六,Collection 和 Collections的區別。
第七,什麼時候用assert。
第八,GC是什麼? 為什麼要有GC? 
第九,String s = new String("xyz");建立了幾個String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
第十二,sleep() 和 wait() 有什麼區別?
第十三,Java有沒有goto?
第十四,數組有沒有length()這個方法? String有沒有length()這個方法?
第十五,Overload和Override的區別。Overloaded的方法是否可以改變傳回值的類型?
第十六,Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還是equals()? 它們有何區別?
第十七,給我一個你最常見到的runtime exception。
第十八,error和exception有什麼區別?
第十九,List, Set, Map是否繼承自Collection介面?
第二十,abstract class和interface有什麼區別?
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
第二十二,介面是否可繼承介面? 抽象類別是否可實現(implements)介面? 抽象類別是否可繼承實體類(concrete class)?
第二十三,啟動一個線程是用run()還是start()?
第二十四,構造器Constructor是否可被override?
第二十五,是否可以繼承String類?
第二十六,當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
第二十七,try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?
第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
第三十,當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,編程題: 寫一個Singleton出來。

資料庫方面:

1.預存程序和函數的區別
2.事務是什嗎?
3.遊標的作用?如何知道遊標已經到了最後?
4.觸發器分為事前觸發和事後觸發,這兩種觸發有和區別。語句級觸發和行級觸發有何區別。

1。用C#實現以下功能
   a 產生一個int數組,長度為100,並向其中隨機插入1-100,並且不能重複。
   b 對上面產生的數組排序,需要支援升序、降序兩種順序
2。請說明在.net中常用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
3。請說明.net中的錯誤處理機制,並舉例
4。請說出強名的含義
5。請列出c#中幾種迴圈的方法,並指出他們的不同
6。請指出.net中所有類型的基類
7。請指出GAC的含義
8。SQL SREVER中,向一個表中插入了新資料,如何快捷的得到自增量欄位的當前值

您在什麼情況下會用到虛方法?它與介面有什麼不同?
Q:Override與重載有什麼區別?
Q:實值型別與參考型別有什麼區別?
Q:怎樣理解靜態變數?
Q:向伺服器發送請求有幾種方式?
Q:DataReader與Dataset有什麼區別?
Q:如果在一個B/S結構的系統中需要傳遞變數值,但是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
Q:用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及為什麼要這樣分層?
Q:軟體開發過程一般有幾個階段?每個階段的作用?
Q:微軟推出了一系列的Application Block,請舉出您所知道的Application Block並說明其作用?
Q:請列舉一些您用到過的設計模式以及在什麼情況下使用該模式?
Q:您對WebService的體會?
Q:您對編程的興趣如何?工作中遇到不懂的問題是怎樣去解決的?您一般怎樣去提高自己的編程水平?
Q:您離職的原因是什嗎?
Q:通過超連結怎樣傳遞中文參數?
Q:請編程遍曆頁面上所有TextBox控制項並給它賦值為string.Empty?
Q:請編程實現一個冒泡排序演算法?

1、override與重載的區別
2、.net的錯誤處理機制是什麼
3、C#中介面和類的異同
4、DataReader和DataSet的異同

1.有哪幾種方法可以實現一個類存取另外一個類的成員函數及屬性,並請舉列來加以說明和分析.
2.如果需記錄類的執行個體個數,該如何?,請寫一個簡單的類於以證明.
3.A類是B類的基類,並且都有自己的構造,解構函式,請舉例證明B類從執行個體化到消亡過程中構造,解構函式的執行過程.
4.需要實現對一個字串的處理,首先將該字串首尾的空格去掉,如果字串中間還有連續空格的話,僅保留一個空格,即允許字串中間有多個空格,但連續的空格數不可超過一個.

一.填空題
1.c#中的三元運算子是__?:___?
2.當整數a賦值給一個object對象時,整數a將會被__裝箱(封裝)___?
3.類成員有_____種可訪問形式?  this.;new Class().Method;
4.public static const int A=1;這段代碼有錯誤嗎?是什嗎?  const不能用static修飾
5.float f=-123.567F;
  int i=(int)f;
i的值現在是_____?   123  
6.利用operator聲明且僅聲明了“==”,有什麼錯誤麼?  
7.委託聲明的關鍵字是______? delagete
8.用sealed修飾的類有什麼特點?密封,不能繼承
9.在Asp.net中所有的自訂使用者控制項都必須繼承自________?Control
10.在.Net中所有可序列化的類都被標記為_____?  
11.在.NetManaged 程式碼中我們不用擔心記憶體漏洞,這是因為有了______?gc
12.下面的代碼中有什麼錯誤嗎?_______
     using System;
     class A
     {
          public virtual void F(){
              Console.WriteLine("A.F");
           }
      }
      abstract class B:A
       {
           public abstract override void F(); // new public abstract void F();  
       }

13.當類T只聲明了私人執行個體建構函式時,則在T的程式文本外部,___可以___(可以 or 不可以)從T派生出新的類,不可以____(可以 or 不可以)直接建立T的任何執行個體。
14.下面這段代碼有錯誤嗎?
    switch (i){
    case():
        CaseZero();
        break;
    case 1:
        CaseOne();
        break;
    case 2:
        dufault;  //wrong
        CaseTwo();
        break;
   }
15.在.Net中,類System.Web.UI.Page 可以被繼承嗎?可以

二.簡答題
1.在c#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?using 指令 和語句 new 建立執行個體 new 隱藏基類中方法
4.談談類和結構的區別?類是參考型別、結構是實值型別
5.一個長度為10000的字串,通過隨機從a-z中抽取10000個字元組成。請用c#語言編寫主要程式來實現。
6.對於這樣的一個枚舉類型:
      enum Color:byte{
          Red,
          Green,
          Blue,
          Orange
       }
     string[] ss=Enum.GetNames(typeof(Color));
     byte[]   bb=Enum.GetValues(typeof(Color));
試寫一段程式顯示出枚舉類型中定義的所有符號名稱以及它們對應的數值。
7.您瞭解設計模式嗎?請列出您所知道的設計模式的名稱。 //
8.請在SQL Server中設計表來儲存一個樹狀結構的組織圖(假設結構圖中只有名稱這一項內容需要儲存),如果我想查詢某一職位下的所有職位,用一個預存程序來實現,你有什麼思路?
9.什麼叫做SQL注入,如何防止?請舉例說明。
10.下面這段代碼輸出什嗎?為什嗎?
     int i=5;
     int j=5;
     if (Object.ReferenceEquals(i,j))
          Console.WriteLine("Equal");
     else
          Console.WriteLine("Not Equal");
//不相等,因為比較的是對象

1.寫一個實現對一段字串翻轉的方法,附加一些條件,如其中包括“,”、“.”,對其設計測試用 例 。
2.對一支紙杯設計測試案例(可以是廣義的杯,不一定是某一支特定功能的杯) 
開發語言概念題 
3.什麼是反射? 
4.用Singleton如何寫設計模式 
5.C#中的記憶體回收機制是怎樣的? 
6.什麼是Application Pool? 
7.鏈表和數組的區別,各有什麼優缺點.
8.Remoting在用戶端伺服器怎麼實現 ?
9.什麼是友元函數? 
10.用標準C如何?多態? 
11.什麼是虛函數? 
12.什麼是抽象函數? 
13.什麼是記憶體流失,怎樣最簡單的方法判斷被存泄漏 ?

英語題 
14.用英文介紹一下使用C#/C++做的項目,主要功能 
15.如果要與美國開電話會議,會如何與美國的工程師溝通 
16.如果老闆認為你的技術落後,你會怎麼回答 

資料庫知識題 
17.使用什麼工具來調用預存程序 
18.SQL Server的兩種索引是何形式?索引的作用?索引的優缺點? 
19.觸發器的作用 

其它知識題及問題 
20.什麼是Web Service? 
21.什麼是XML? 
22.Socket怎麼實現?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.