.NET試題總結一
1:關于ASP.NET中的代碼隱藏文件的描述正確的是: C
A.Web窗體頁的程序的邏輯由代碼組成,這些代碼的創建用于與窗體交互。編程邏輯唯一與用戶界面不同的文件中。該文件稱作為“代碼隱藏”文件,如果用C#創建,該文件
B.項目中所有Web窗體頁的代碼隱藏文件都被編譯成.EXE文件
C.項目中所有的Web窗體頁的代碼隱藏文件都被編譯成項目動態鏈接庫(.dll)文件
D.以上都不正確
2:In Object Oriented Programming, how would you describe encapsulation?
A.The conversion of one type of object to another.
B.The runtime resolution of method calls.
C.The exposition of data.
D.The separation of interface and implementation.
3:如下程序的運行結果是:
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B: A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
A.A B A.Fun()
B.A B B.Fun()
C.B A A.Fun()
D.B A B.Fun()
4:What compiler switch creates an xml file from the xml comments in the files in an assembly? B
A./text
B./doc
C./xml
D./help
5:
下述程序代碼中有語法錯誤的行是( A )。
int i,ia[10],ib[10]; /*第一行*/
for (i=0;i<=9;i++) /*第2行*/
ia[i]=0; /*第3行*/
ib=ia; /*第4行*/
A.第1行
B.第2行
C.第3行
D.第4行
6:以下描述錯誤的是: A
A.在C++中支持抽象類而在C#中不支持抽象類。
B.C++中可在頭文件中聲明類的成員而在CPP文件中定義類的成員,在C#中沒有頭文件并且在同一處聲明和定義類的成員。
C.在C#中可使用 new 修飾符顯式隱藏從基類繼承的成員。
D.在C#中要在派生類中重新定義基類的虛函數必須在前面加Override。
7:聲明一個委托public delegate int myCallBack(int x); 則用該委托產生的回調方法的原型應該是 B
A.void myCallBack(int x)
B.int receive(int num)
C.string receive(int x)
D.不確定的
8:以下的C程序代碼片段運行后C和d的值分別是多少 B
Int a =1,b =2;
Int c,d;
c =(a&b)&&a;
d =(a&&b)&a;
A.0,0
B.0,1
C.1,0
D.1,1
9:如果設treeView1=new TreeView(),TreeNode node=new TreeNode("根結點" ),則treeView1.Nodes.Add(node)返回的是一個 ( B )類型的值。
A.TreeNode
B.int
C.string
D.TreeView
10:假定a和b為int型變量,則執行下述語句組后,b的值為
a=1;
b=10;
do
{
b-=a;
a++;
} while (b--<0);
A.9
B.-2
C.-1
D.8
11:public static void Main(string[] args)
{
int i = 2000;
object o = i;
i = 2001;
int j =(int) o;
Console.WriteLine("i={0},o={1}, j={2}",i,o,j);
}
A.i=2001,o=2000,j=2000
B.i=2001,o=2001,,j=2001
C.i=2000,o=2001,,j=2000
D.i=2001,o=2000,j=2001
12:在下述選項時,沒有構成死循環的程序是
A.int i=100 while (1) { i=i%100+1; if (i>100) break; }
B.for (;;);
C.int k=1000; do { ++k; }while(k>=10000);
D.int s=36; while (s);--s;
13:在軟件生命周期中,下列哪個說法是不準確的?
A.軟件生命周期分為計劃、開發和運行三個階段
B.在計劃階段要進行問題焉醛和需求分析
C.在開發后期要進行編寫代碼和軟件測試
D.在運行階段主要是進行軟件維護
14:軟件生命周期的瀑布模型把軟件項目分為3個階段、8個子階段,以下哪一個是正常的開發順序?
A.計劃階段、開發階段、運行階段
B.設計階段、開發階段、編碼階段
C.設計階段、編碼階段、維護階段
D.計劃階段、編碼階段、測試階段
15:abstract class BaseClass
{
public virtual void MethodA()
{
Console.WriteLine("BaseClass");
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA()
{
Console.WriteLine("Class1");
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
o.MethodA();
}
}
請問,此程序輸出結果是:
A.BaseClass
B.BassClass Class1
C.Class1
D.Class1 BassClass
16: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]的值是: D
A.9
B.2
C.6
D.越界
簡答題
17:什么是Application Pool?
應用程序池是微軟的一個全新概念:應用程序池是將一個或多個應用程序鏈接到一個或多個工作進程集合的配置。因為應用程序池中的應用程序與其他應用程序被工作進程邊界分隔,所以某個應用程序池中的應用程序不會受到其他應用程序池中應用程序所產生的問題的影響。
18:列舉ASP.NET 頁面之間傳遞值的幾種方式。
(1)queryString 無法傳遞很長字符串
(2)session 不能過多使用,依賴Cookie,容易丟失
(3)cookie 依賴客戶端設置,不可靠
(4)server.transfer 只能定制專門一個頁面接受定制好的頁面
(5)hidden control/view state 只能傳遞本頁,除非特殊制作
(6)static member. 無法保證線程安全
(7)cache 不適合使用一次就扔的變量
(8)application 全局的,開銷大
(9)DataBase 全局固化的,開銷更大,除非做日志跟蹤
(10)xml or other Files 全局固化的,開銷更大,除非做日志跟蹤
(11)XMLHTTP or Hidden iFrame/frame
(12)Context.user.identity
19:什么是PostBack?
20:說出ASP.NET 1.1中的3種Session State提供程序以及它們的優缺點?
ASP.NET支持3種session state的存儲方式.
[1] in-process 和asp的session state兼容,Session Value被存放在ASP.net 的工作進程的內存中.
ASP.NET的工作進程為: aspnet_wp.exe或w3wp.exe(win 2003)
web.config的寫法
[2] state server
session 會被存在state server上一個名為aspnet_state.exe的service的內存中,這個service是一個獨立的進程,
可以運行在和IIS不同的機器上, 防止工作進程崩潰后session丟失.
首先要啟動 service : net start aspstate
再在web.config中設定mode,server, port
cookieless=”false”
timeout=”20″
server=”127.0.0.1″
port=”42424″ />
[3] sql server
session會被存在sql server中,用于支持server farm
首先要安裝相應的數據庫,sql腳本存在于Microsoft.NET\Framework\[version]\
osql -S [server name] -U [user] -P [password]
或執行
Microsoft.NET\Framework\[version]\\aspnet_regsql -S .\sql2k5 -E -ssadd -sstype p
再在web.config中設定mode,server, port
cookieless=”false”
timeout=”20″
sqlconnectionstring=”data source=MySqlServer; user id=<…>; password=<…>”/>
21:當你在ASP.NET中運行一個組件時,它在Windows XP, Windows 2000, Windows 2003上分別跑在哪個進程里面?
XP : aspnet_Wp.exe
Windows 2000 : aspnet_Wp.exe
Windows 2003 : w3wp.exe
22:什么是ViewState? 它是否被編碼過? 是否被加密過?誰會使用ViewState?
默認情況下__VIEWSTATE中存儲的值僅僅僅進行了Base64編碼,并沒有進行加密,如果ViewState中有一些保密信息需要增加它的安全性,這樣我們可以對ViewState進行加密。我們可以設置ViewStateEncryptionMode的值來決定是否加密,其值是“Auto”,“Always”,“Never”,默認值是“Auto”。“Always”表示進行加密,“Never”表示不進行加密,“Auto”時如果調用了RegisterRequiresViewStateEncryption方法后則進行加密。
23:.NET CLR中一代的垃圾收集器是如何管理對象的生命周期的?什么叫非確定性終結?
通過對象的引用計數控制。也就是記錄了還有多少個變量在使用這個對象。當計數為0時,就代表對象沒有用了,就進入回收條件。
垃圾回收器在系統空閑或內存緊缺以及代碼中顯示調用回收時自動決定何時啟動回收,所以沒法確定終結一個對象的具體時間。
24:為什么不提倡catch(Exception)?