Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=559367
今天整理了論壇很多關(guān)于dotnet(C#)的試題,大家共享一下
1.<%# %> 和 <% %> 有什么區別?
<%# %>表示綁定的數據源
<% %>是服務(wù)器端代碼塊
2.以下代碼能否通過(guò)編譯?如果不能,請改成正確代碼,并說(shuō)明原因。
<html>
<%
int subtract(int num1, int num2) {
return num1-num2;
}
%>
<body>
<%
int number = 100;
while (number > 0) {
Response.Write("Value: " + number + "<br/>");
number = subtract(number, 1);
}
%>
</body>
</html>
3.通過(guò)Web Site Administration Tool (in VS2005) 可以實(shí)現哪些功能?Web Site Administration Tool 會(huì )自動(dòng)對哪些文件進(jìn)行修改或添加?
4.解釋一下帶 “original_” 前綴的Data Parameter和不帶前綴的Data Parameter有什么異同。(可用簡(jiǎn)單的代碼說(shuō)明)
5.修改下面的代碼段,使GridView能Update數據。
<%@ Page Language="C#" %>
<html>
<head runat="server">
<title>GridView</title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" AllowSorting="true" AllowPaging="true" Runat="server"
DataSourceID="SqlDataSource1" DataKeyNames="id" AutoGenerateColumns="False">
<Columns>
<asp:BoundField ReadOnly="true" HeaderText="ID" DataField="id" SortExpression="id" />
<asp:BoundField HeaderText="Last Name" DataField="lname" SortExpression="lname" />
<asp:BoundField HeaderText="First Name" DataField="fname" SortExpression="fname" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
SelectCommand="SELECT [id], [lname], [fname] FROM [authors]"
ConnectionString="<%$ ConnectionStrings:Pubs %>" />
</form>
</body>
</html>
6.GridView沒(méi)有內置Insert 數據的功能,如果想在GridView內Insert數據,你有什么想法?
7.ASP.NET 2.0 哪個(gè)(些)特性是你覺(jué)得最激動(dòng)人心的?為什么?(也可以談C#2.0)
ASP.NET 2.0相對于1.1突出了3大理念,
1,提高生產(chǎn)力
A 一致性(masterpage)
B 會(huì )員管理
C 資料存取
D 個(gè)性化
2 管理能力的提高(例如WEB.CONFIG)
3 提升效能,滿(mǎn)足更多人的訪(fǎng)問(wèn)
8.你覺(jué)得ASP.NET 2.0(VS2005)和你以前使用的開(kāi)發(fā)工具(.Net 1.0或其他)有什么最大的區別?你在以前的平臺上使用的哪些開(kāi)發(fā)思想(pattern / architecture)可以移植到ASP.NET 2.0上 (或者已經(jīng)內嵌在A(yíng)SP.NET 2.0中)
1 ASP.NET 2.0 把一些代碼進(jìn)行了封裝打包,所以相比1.0相同功能減少了很多代碼.
2 同時(shí)支持代碼分離和頁(yè)面嵌入服務(wù)器端代碼兩種模式,以前1.0版本,.NET提示幫助只有在分離的代碼文件,無(wú)法在頁(yè)面嵌入服務(wù)器端代碼獲得幫助提示,
3 代碼和設計界面切換的時(shí)候,2.0支持光標定位.這個(gè)我比較喜歡
4 在綁定數據,做表的分頁(yè).UPDATE,DELETE,等操作都可以可視化操作,方便了初學(xué)者
5, 在A(yíng)SP.NET中增加了40多個(gè)新的控件,減少了工作量
===================
1、override與重載的區別
2、.net的錯誤處理機制是什么
3、C#中接口和類(lèi)的異同
4、DataReader和DataSet的異同
Override用來(lái)重寫(xiě)父類(lèi)的方法,重載使用相同名的方法或操作符擁有不同類(lèi)型的參數
.net錯誤處理機制采用try->catch->finally結構,發(fā)生錯誤時(shí),層層上拋,直到找到匹配的Catch為止。
接口和類(lèi)都是類(lèi),不同的事,接口只包含方法或屬性的聲明,不包含具體實(shí)現方法的代碼,接口可以實(shí)現多繼承,而類(lèi)只能是單繼承,繼承接口的類(lèi)必須實(shí)現接口中聲明的方法或屬性。接口主要定義一種規范,統一調用方法,在大型項目中接口正發(fā)揮日益重要的作用。
DataReader用于讀取數據,DataSet用于在內存中保存數據。
重載與覆蓋的區別
1、方法的覆蓋是子類(lèi)和父類(lèi)之間的關(guān)系,是垂直關(guān)系;方法的重載是同一個(gè)類(lèi)中方法之間的關(guān)系,是水平關(guān)系。
2、覆蓋只能由一個(gè)方法,或只能由一對方法產(chǎn)生關(guān)系;方法的重載是多個(gè)方法之間的關(guān)系。
3、覆蓋要求參數列表相同;重載要求參數列表不同。
4、覆蓋關(guān)系中,調用那個(gè)方法體,是根據對象的類(lèi)型(對象對應存儲空間類(lèi)型)來(lái)決定;重載關(guān)系,是根據調用時(shí)的實(shí)參表與形參表來(lái)選擇方法體的。
4、DataReader和DataSet的異同
DataReader和DataSet最大的區別在于,DataReader使用時(shí)始終占用SqlConnection,在線(xiàn)操作數據庫..任何對SqlConnection的操作都會(huì )引發(fā)DataReader的異常..因為DataReader每次只在內存中加載一條數據,所以占用的內存是很小的..因為DataReader的特殊性和高性能.所以DataReader是只進(jìn)的..你讀了第一條后就不能再去讀取第一條了..
DataSet則是將數據一次性加載在內存中.拋棄數據庫連接..讀取完畢即放棄數據庫連接..因為DataSet將數據全部加載在內存中.所以比較消耗內存...但是確比DataReader要靈活..可以動(dòng)態(tài)的添加行,列,數據.對數據庫進(jìn)行回傳更新操作...
===============
一.填空題
1.c#中的三元運算符是_____?
2.當整數a賦值給一個(gè)object對象時(shí),整數a將會(huì )被_____?
3.類(lèi)成員有_____種可訪(fǎng)問(wèn)形式?
4.public static const int A=1;這段代碼有錯誤么?是什么?
5.float f=-123.567F;
int i=(int)f;
i的值現在是_____?
6.利用operator聲明且僅聲明了==,有什么錯誤么?
7.委托聲明的關(guān)鍵字是______?
8.用sealed修飾的類(lèi)有什么特點(diǎn)?
9.在A(yíng)sp.net中所有的自定義用戶(hù)控件都必須繼承自________?
10.在.Net中所有可序列化的類(lèi)都被標記為_(kāi)____?
11.在.Net托管代碼中我們不用擔心內存漏洞,這是因為有了______?
12.下面的代碼中有什么錯誤嗎?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
13.當類(lèi)T只聲明了私有實(shí)例構造函數時(shí),則在T的程序文本外部,______(可以 or 不可以)從T
派生出新的類(lèi),____(可以 or 不可以)直接創(chuàng )建T的任何實(shí)例。
14.下面這段代碼有錯誤么?
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault;
CaseTwo();
break;
}
15.在.Net中,類(lèi)System.Web.UI.Page 可以被繼承么?
二.簡(jiǎn)答題
1.在c#中using和new這兩個(gè)關(guān)鍵字有什么意義,請寫(xiě)出你所知道的意義?
2.在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
當使用new B()創(chuàng )建B的實(shí)例時(shí),產(chǎn)生什么輸出?
3.下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
產(chǎn)生的輸出結果是什么?
4.談?wù)勵?lèi)和結構的區別?
5.一個(gè)長(cháng)度為10000的字符串,通過(guò)隨機從a-z中抽取10000個(gè)字符組成。請用c#語(yǔ)言編寫(xiě)主要程
序來(lái)實(shí)現。
6.對于這樣的一個(gè)枚舉類(lèi)型:
enum Color:byte{
Red,
Green,
Blue,
Orange
}
試寫(xiě)一段程序顯示出枚舉類(lèi)型中定義的所有符號名稱(chēng)以及它們對應的數值。
7.您了解設計模式么?請列出您所知道的設計模式的名稱(chēng)。
8.請在SQL Server中設計表來(lái)保存一個(gè)樹(shù)狀結構的組織結構圖(假設結構圖中只有名稱(chēng)這一項內容
需要保存),如果我想查詢(xún)某一職位下的所有職位,用一個(gè)存儲過(guò)程來(lái)實(shí)現,你有什么思路?
9.什么叫做SQL注入,如何防止?請舉例說(shuō)明。
10.下面這段代碼輸出什么?為什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
1 ?:
2 裝箱
3 3種
4 const成員都是static所以應該去掉static
5 -123
6 要同時(shí)修改Equale和GetHash() ? 重載了"==" 就必須重載 "!="
7 delegate
8 不可被繼承
9 System.Web.UI.UserControl
10 [serializable]
11 gC
12 abstract override 是不可以一起修飾
13 不可以,不可以
14 case():不行 default;
15 可以
1 Using 引入一個(gè)名子空間,或在使用了一個(gè)對像后自動(dòng)調用其IDespose,New 實(shí)例化一個(gè)對
像,或修飾一個(gè)方法,表此方法完全重寫(xiě)此方法,
2 X=1,Y=0
3 x=1,y=2
4 最大區別一個(gè)是引用類(lèi)型,一個(gè)是值類(lèi)型 默認成員訪(fǎng)問(wèn)為public是另外一個(gè)區別
=========================================================
.NET & C# 基礎知識試題 (20%)
1. 在.net(C# or vb.net)中如何獲得當前窗體或控件的句柄,特別是控件本身的句柄(請列舉)。
答案:this(C#) Me(vb.net).
2. 在.net(C# or vb.net)中如何用戶(hù)自定義消息,并在窗體中處理這些消息。
答案:
在form中重載DefWndProc函數來(lái)處理消息:
protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
///string與MFC中的CString的Format函數的使用方法有所不同
string message = string.Format("收到消息!參數為:{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);///顯示一個(gè)消息框
break;
case USER:
處理的代碼
default:
base.DefWndProc(ref m);///調用基類(lèi)函數處理非自定義消息。
break;
}
}
3. 在.net(C# or vb.net)如何啟動(dòng)另一個(gè)程序。
答案:process
4. 在.net(C# or vb.net)中如何取消一個(gè)窗體的關(guān)閉。
答案:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
5. 在.net(C# or vb.net)中,Appplication.Exit 還是 Form.Close有什么不同?
答案:一個(gè)是退出整個(gè)應用程序,一個(gè)是關(guān)閉其中一個(gè)form
6. 在C#中有一個(gè)double型的變量,比如10321.5,比如122235401.21644,作為貨幣的值如何按各個(gè)不同國家的習慣來(lái)輸出。比如美國用$10,321.50和$122,235,401.22而在英國則為£10 321.50和£122 235 401.22
答案:
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");為英國貨幣類(lèi)型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
7. 某一密碼僅使用K、L、M、N、O共5個(gè)字母,密碼中的單詞從左向右排列,密碼單詞必須遵循如下規則:
(1) 密碼單詞的最小長(cháng)度是兩個(gè)字母,可以相同,也可以不同
(2) K不可能是單詞的第一個(gè)字母
(3) 如果L出現,則出現次數不止一次
(4) M不能使最后一個(gè)也不能是倒數第二個(gè)字母
(5) K出現,則N就一定出現
(6) O如果是最后一個(gè)字母,則L一定出現
問(wèn)題一:下列哪一個(gè)字母可以放在LO中的O后面,形成一個(gè)3個(gè)字母的密碼單詞?
A) K B)L C) M D) N
答案:B
問(wèn)題二:如果能得到的字母是K、L、M,那么能夠形成的兩個(gè)字母長(cháng)的密碼單詞的總數是多少?
A)1個(gè) B)3個(gè) C)6個(gè) D)9個(gè)
答案:A
問(wèn)題三:下列哪一個(gè)是單詞密碼?
A) KLLN B) LOML C) MLLO D)NMKO
答案:C
8. 62-63=1 等式不成立,請移動(dòng)一個(gè)數字(不可以移動(dòng)減號和等于號),使得等式成立,如何移動(dòng)?
答案:62移動(dòng)成2的6次方
========================
2.在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
當使用new B()創(chuàng )建B的實(shí)例時(shí),產(chǎn)生什么輸出?
3.下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
產(chǎn)生的輸出結果是什么?
這兩題能不能詳解一下?
==========================
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
當使用new B()創(chuàng )建B的實(shí)例時(shí),產(chǎn)生什么輸出?
創(chuàng )建一個(gè)對象的時(shí)候是先構造基類(lèi)再構造派生類(lèi).然後自己去理解了.
聯(lián)系客服