- 相關(guān)推薦
經(jīng)典C#面試題
S1 C#:
Ch1:
1、= = 與Equals方法的區(qū)別?
對于值類型:由于值類型是存儲在棧中,兩者都是比較的是兩個變量的在棧中的值是否相等。
對于引用類型:引用類型是在堆一個存儲引用,指向堆中的某個具體值。= =判斷引用地址,equals判斷值
2、Java中的switch于C#中的switch的區(qū)別
Java中的switch:只能判斷int, short及比int所占字節(jié)還少的類型
C#中的switch:可以判斷string及比string所占字節(jié)少的類型
Ch2:
1、 冒泡排序(c#)口訣
int[] numbers ={ 49, 12, 65, 45, 88, 54 };
//排序前
Console.WriteLine("排序前:");
foreach (int i in numbers)
{
Console.Write(i + " ");
}
//冒泡排序
for (int i = 0; i < numbers.Length; i++ )
{
for (int j = 0; j < numbers.Length - 1 - i; j++ )
{//將最大數(shù)交換到最后
if(numbers[j] > numbers[j+1])
{
int temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
}
}
//排序后
Console.WriteLine("\n排序后:");
foreach (int i in numbers)
{
Console.Write(i + " ");
}
2、 分別寫出四種循環(huán)語法
for(int i=0;i
3、 編程求數(shù)組中的最大數(shù),打印所有的水仙花數(shù),打印九九乘法表
求最大數(shù):int[] numbers ={ 49, 12, 65, 45, 88, 54 };
int max = 0;
for (int i = 0; i < numbers.Length-1; i++ )
{
if(numbers[i] > numbers[i+1])
{
max = numbers[i];
}
}
Console.WriteLine("最大數(shù)為:"+max);
水仙花數(shù):for (int i = 100; i < 1000; i++ )
{
int a = i % 10; //個位數(shù)
int b = i % 100; //十位數(shù)
b = b / 10;
int c = i / 100; //百位數(shù)
int number = (int)Math.pow(a, 3) + (int)Math.pow(b, 3) + (int)Math.pow(c, 3);
if(number == i)
{
Console.Write(i + " ");
}
}
打印九九乘法表:for (int i = 1; i <= 9; i++ )
{
for (int j= 1; j <= i; j++)
{
Console.Write("{0}×{1}={2}\t", j, i, i * j);
}
Console.WriteLine();
}
Ch3:
1、 命名空間的含義:包,便于管理
2、 引用傳遞和值傳遞的區(qū)別:主要是相對于值類型,用引用傳遞加ref,就可實現(xiàn)其值真正的改變。值傳遞,當(dāng)調(diào)用方法結(jié)束后,則不會改變值。
3、 請寫出String的常用方法(10個),并描述功能
Equals():判斷值相等 Split():以…分割每個字符為string[]數(shù)組 IndexOf():返回指定字符的索引
Concat():連接,相當(dāng)于’+’號 Trim():忽略前后空格 ToUpper():轉(zhuǎn)換為大寫 ToLower():轉(zhuǎn)換為小寫
StartsWith():開頭字符是否匹配 SubString():截取字符串 ToCharArray():轉(zhuǎn)換為char[]數(shù)組
4、 分別寫出數(shù)據(jù)類型轉(zhuǎn)換(至少四種)的方法,代碼舉例
顯示轉(zhuǎn)換:int i=(int)12.9;
隱式轉(zhuǎn)換:double d=12;
int/double/float.parse ()轉(zhuǎn)換:string s=”13”; int i=int.parse(s);
convert:int x = 13; double d = Convert.ToDouble(x);
Ch4:
1、 partial關(guān)鍵字的含義
partial局部類型允許我們將一個類、結(jié)構(gòu)或接口分成幾個部分,分別實現(xiàn)在幾個不同的.cs文件中。
適用于以下情況:(1) 類型特別大,不宜放在一個文件中實現(xiàn)。(2) 一個類型中的一部分代碼為自動化工具生成的代碼,不宜與我們自己編寫的代碼混合在一起。(3) 需要多人合作編寫一個類
http://blog.csdn.net/dotnet90/archive/2006/12/23/1455796.aspx
2、 Windows窗體的生命周期常用事件有哪些?
Initialize, Load, Activated(窗體被激活時), Deactivate(窗體被停用時), FormClosed, FormClosing
3、 寫出常用的控件鍵盤事件和鼠標(biāo)事件
鍵盤事件:KeyDown, KeyUp, Keypress
鼠標(biāo)事件:Click,DoubleClick,MouseClick,MouseDown,MouseEnter,MouseHover,MouseLeave,MouseMove,MouseUp
4、 請寫出MessageBox常用的四種類型,以及返回值類型
MessageBox.Show(“消息內(nèi)容”); 返回類型:DialogResult
MessageBox.Show(“消息內(nèi)容”,”標(biāo)題”); 返回類型:DialogResult
MessageBox.Show(“消息內(nèi)容”,”標(biāo)題”); 返回類型:DialogResult
MessageBox.Show(“消息內(nèi)容”,”標(biāo)題”, MessageBoxButtons按鈕類型); 返回類型:DialogResult
MessageBox.Show(“消息內(nèi)容”,”標(biāo)題”, MessageBoxButtons按鈕類型, MessageBoxIcon圖標(biāo)類型
); 返回類型:DialogResult
Ch5:
1、 anchor和dock的區(qū)別
anchor(錨定):距離容器邊緣的距離,當(dāng)控件錨定到某個邊緣時,與指定邊緣最接近的控件邊緣與指定邊緣之間的距離將保持不變。
dock(?):將控件?吭诖绑w或容器的邊緣,距離為0px
2、 如何創(chuàng)建一個MDI窗體(步驟),即多文檔窗體
1)設(shè)置子窗體:子窗體名稱 form = new Form(); form.Mdiparent=this(父窗體); form.show();
2)設(shè)置父窗體屬性:isMdiContainer=true;
3、 模式窗體和非模式窗體的區(qū)別
模式窗體:form.ShowDialog();有返回值:DialogResult;程序會中斷,主窗體不能激活,必須關(guān)閉模式窗體才能激活主窗體, 只能show出一個
非模式窗體:form.Show (); 無返回值,程序不會中斷;可以show出多個
4、 使用第三方類傳遞窗體間的數(shù)據(jù)(代碼演示)
public class UserHelpper
{
public static string loginId = ""; //用戶名
public static string loginType = ""; //登錄類型
}
Ch6:
1、 ADO.Net重要組件(那幅圖6.2)
.NetFramework和DateSet
2、 數(shù)據(jù)提供者程序有哪些
3、 連接字符串的寫法(兩種)
"Data Source=.\SQLEXpRESS;Initial Catalog=數(shù)據(jù)庫名;Integrated security=true;"
"server=.\sqlexpress; database=數(shù)據(jù)庫名; uid=用戶名; password=密碼"
4、 Connection對象的屬性和方法:數(shù)據(jù)庫連接對象
屬性:state 連接狀態(tài), DataBase 獲取連接對象的數(shù)據(jù)庫名稱, DataSource連接對象的實例名
方法:Open()/Close() 打開/關(guān)閉數(shù)據(jù)庫, Dispose() 釋放連接資源, ChangeDatabase() 為打開的當(dāng)前連接對象更改數(shù)據(jù)庫名。
5、 異常處理各關(guān)鍵字的作用
try:可能發(fā)生異常的代碼塊
catch:捕獲到何種異常,如何去處理, 可以跟多個catch塊,但子類異常必須寫在父類異常的前面
finally:不管有沒有異常都將執(zhí)行的代碼塊
6、 Command對象的屬性和方法:SQL語句執(zhí)行命令
屬性:CommandText獲取或設(shè)置要對數(shù)據(jù)源執(zhí)行的 Transact-SQL 語句、表名或存儲過程。 Connection獲取或設(shè)置 SqlCommand 的此實例使用的 SqlConnection
方法:ExecuteNonQuery() 執(zhí)行增,刪,改語句,并返回受影響行數(shù); ExecuteScalar() 執(zhí)行查詢,返回結(jié)果的第一行第一列,忽略其他列或行; ExecuteReader() 執(zhí)行查詢,返回DataReader對象
Ch7:
1、 DataReader對象的主要屬性和方法
屬性:HasRows 有沒有讀取到DataReader中的數(shù)據(jù);IsClosed 是否已關(guān)閉DataReader對象
方法:Read() 讀取一行數(shù)據(jù);GetString()/GetDouble()… 獲取何種類型的數(shù)據(jù)值; Close() 關(guān)閉DataReader對象; IsDBNull() 獲取一個值,用于指示列中是否包含不存在的或缺少的值
2、 請寫出獲取并使用DataReader對象的步驟
1) 建立數(shù)據(jù)庫連接conn=new …Connection(…); 2)創(chuàng)建Command對象cmd= new …Command(sql, conn); 3)執(zhí)行SQL查詢命令sdr=cmd. ExecuteReader(); 4)處理數(shù)據(jù) while(sdr.Read()){int i=sdr.getInt(0);}
Ch8:
1、 請寫出DataSet(臨時數(shù)據(jù)庫)的內(nèi)部結(jié)構(gòu)(圖8.2)
2、 寫出填充一個DataSet的步驟
3、 數(shù)據(jù)集的工作原理(圖8.3)
4、 如何將數(shù)據(jù)集中的數(shù)據(jù)保存到數(shù)據(jù)庫,請寫出步驟
S2 深入.NET
Ch1:
1、 畫出.NET框架的結(jié)構(gòu)(圖1.7)
.net Framework類庫:ASp.Net(Web和Web Service)、WinForms、ADO.Net和XML類、基本框架類。
CLR:CLS和CTS。
2、 解釋CTS(Common Type System通用類型系統(tǒng))和CLS(Common Language Specification公共語言規(guī)范)的含義
CTS:解決不同語言的數(shù)據(jù)類型不同的問題。
CLS:實現(xiàn)多種語言之間的互操作性。
3、
C#編譯器 |
畫出.NET編譯過程(圖1.8)
C#代碼 |
Microsoft中間語言 (MSIL) |