1.面向?qū)ο蟮乃枷胫饕ㄊ裁矗?/p>
繼承多態(tài)封裝
●封裝:用抽象的數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型內(nèi)部。
●繼承:子類擁有父類的所有數(shù)據(jù)和操作。
●多態(tài):一個(gè)程序中同名的不同方法共存的情況。
有兩種形式的多態(tài)–重載與重寫。
2.什么是ASP.net中的用戶控件
用戶控件就是.ascx擴(kuò)展名的東西嘍,可以拖到不同的頁面中調(diào)用,以節(jié)省代碼.比如登陸可能在多個(gè)頁面上有,就可以做成
用戶控件,但是有一個(gè)問題就是用戶控件拖到不同級(jí)別的目錄下后里面的圖片等的相對(duì)路徑會(huì)變得不準(zhǔn)確,需要自已寫方
法調(diào)整.
問這樣的問題,一般是迷惑你.因?yàn)樾率诌€是分不清楚用戶控件和服務(wù)器控件(也稱自定義控件)..用戶控件一般用在內(nèi)容多
為靜態(tài),或者少許會(huì)改變的情況下..用的比較大..類似ASP中的include..但是功能要強(qiáng)大的多..
在C#中,string str = null 與 string str = “”的區(qū)別。
答:string str = null 是不給他分配內(nèi)存空間,而string str = "" 給它分配長度為空字符串的內(nèi)存空間
請(qǐng)?jiān)斒鲈赿otnet中類(class)與結(jié)構(gòu)(struct)的異同
Class可以被實(shí)例化,屬于引用類型,是分配在內(nèi)存的堆上的,Struct屬于值類型,是分配在內(nèi)存的棧上的.
DataReader和DataSet的異同
DataReader和DataSet最大的區(qū)別在于,DataReader使用時(shí)始終占用SqlConnection,在線操作數(shù)據(jù)庫..任何對(duì)SqlConnection
的操作都會(huì)引發(fā)DataReader的異常..因?yàn)镈ataReader每次只在內(nèi)存中加載一條數(shù)據(jù),所以占用的內(nèi)存是很小的..因
為DataReader的特殊性和高性能.所以DataReader是只進(jìn)的..你讀了第一條后就不能再去讀取第一條了..
DataSet則是將數(shù)據(jù)一次性加載在內(nèi)存中.拋棄數(shù)據(jù)庫連接..讀取完畢即放棄數(shù)據(jù)庫連接..因?yàn)镈ataSet將數(shù)據(jù)全部加載在
內(nèi)存中.所以比較消耗內(nèi)存...但是確比DataReader要靈活..可以動(dòng)態(tài)的添加行,列,數(shù)據(jù).對(duì)數(shù)據(jù)庫進(jìn)行回傳更新操作.
8.C#中的接口和類有什么異同。
接口和類都是類,不同的事,接口只包含方法或?qū)傩缘穆暶?,不包含具體實(shí)現(xiàn)方法的代碼,接口可以實(shí)現(xiàn)多繼承,而類
只能是單繼承,繼承接口的類必須實(shí)現(xiàn)接口中聲明的方法或?qū)傩?。接口主要定義一種規(guī)范,統(tǒng)一調(diào)用方法,在大型項(xiàng)目
中接口正發(fā)揮日益重要的作用
類是方法功能的實(shí)現(xiàn)和集合,接口是規(guī)范類.約束類.
接口,是可以多繼承,類只有單繼承.接口強(qiáng)調(diào)了你必須實(shí)現(xiàn),而沒有具本實(shí)現(xiàn)的方法和虛類有點(diǎn)相似
Override與重載有什么區(qū)別?
一個(gè)是重寫父類函數(shù),一個(gè)是同一個(gè)函數(shù)的幾種形式
觸發(fā)器的作用
觸發(fā)器可以查詢其它表,而且可以包含復(fù)雜的 SQL 語句。它們主要用于強(qiáng)制復(fù)雜的業(yè)務(wù)規(guī)則或要求。觸發(fā)器還有助于
強(qiáng)制引用完整性,以便在添加、更新或刪除表中的行時(shí)保留表之間已定義的關(guān)系。
保證數(shù)據(jù)庫操作變更能接到通知
<%# %> 和 <% %> 有什么區(qū)別?
<%# %>表示綁定的數(shù)據(jù)源
<% %>是服務(wù)器端代碼塊
常見的設(shè)計(jì)模式
抽象工廠模式、適配器模式、外觀模式 command命令模式,橋接模式,組合模式,裝飾模式,狀態(tài)模式,備忘錄模式等。
軟件設(shè)計(jì)模式太多,就我的理解簡單說一下最常見的MVC模式。
MVC模式是1996年由Buschmann提出的:
模型(Model):就是封裝數(shù)據(jù)和所有基于對(duì)這些數(shù)據(jù)的操作。
視圖(View):就是封裝的是對(duì)數(shù)據(jù)顯示,即用戶界面。
控制器(Control):就是封裝外界作用于模型的操作和對(duì)數(shù)據(jù)流向的控制等。
3.什么叫應(yīng)用程序域?什么是受管制的代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?什么是重載?CTS、CLS和CLR分
別作何解釋?
4.列舉一下你所了解的XML技術(shù)及其應(yīng)用
5.值類型和引用類型的區(qū)別?寫出C#的樣例代碼。
在dotnet中有兩大類數(shù)據(jù)類型,即值類型和引用類型,值類型存貯在棧中,而引用類型存貯在動(dòng)態(tài)的堆中,棧是先進(jìn)先
出的有系統(tǒng)管理的空間,而堆是由應(yīng)用程序控制的可隨時(shí)申請(qǐng)和釋放該空間,在Donnet中一般情況下有垃圾收集器處理
,他們的不同導(dǎo)致在編程上的不同。
例: StringBuilder a=new StringBuilder();//將StringBuilder的一個(gè)首地址傳給a
StringBuilder b=a;//將StringBuilder的一個(gè)首地址傳給b
b.Append("mxh");
Console.WriteLine(a);
a=null;
Console.WriteLine(b);
輸出結(jié)果:mxh
mxh
"a=null"的意思是:a的引用置為空但此時(shí)StringBuilder的堆空間并沒有被釋放,因此在此之后,輸出b時(shí),仍然可以
輸出mxh
6.ADO.net中常用的對(duì)象有哪些?分別描述一下。
DataSet對(duì)象:表示內(nèi)存中數(shù)據(jù)的緩存,可以把它想像成一個(gè)臨時(shí)的數(shù)據(jù)庫,它里可以存多個(gè)表(DataTable),而且是斷開式的,不用每進(jìn)行一次操作就對(duì)數(shù)據(jù)庫進(jìn)行更新,從而提高了效率。
DataReader對(duì)象:它與DataSet最大的不同是有連接式的,每次對(duì)數(shù)據(jù)庫進(jìn)行存取都會(huì)影響到數(shù)據(jù)庫。
Connection對(duì)象:用于連接數(shù)據(jù)庫的對(duì)象,表示到數(shù)據(jù)源的一個(gè)唯一的連接。
Command對(duì)象:表示要對(duì)數(shù)據(jù)庫執(zhí)行的一個(gè)SQL語句或一個(gè)存儲(chǔ)過程。
DataAdapter對(duì)象:該對(duì)象是與DataSet配合使用的對(duì)象,用于把表填充到DataSet,和更新DataSet等。
7.如何理解委托?
C# 中的委托類似于 C 或 C++ 中的函數(shù)指針。使用委托使程序員可以將方法引用封裝在委托對(duì)象內(nèi)。然后可以將該委托
對(duì)象傳遞給可調(diào)用所引用方法的代碼,而不必在編譯時(shí)知道將調(diào)用哪個(gè)方法。與 C 或 C++ 中的函數(shù)指針不同,委托是
面向?qū)ο蟆㈩愋桶踩?,并且是安全的?/p>
9.。net中讀寫數(shù)據(jù)庫需要用到哪些類?他們的作用
10.UDP連接和TCP連接的異同。
11.ASP.net的身份驗(yàn)證方式有哪些?分別是什么原理?
window驗(yàn)證:為每個(gè)用戶開啟window賬號(hào),驗(yàn)證其身份.安全性較高.
forms驗(yàn)證:為每個(gè)登陸用戶寫入一個(gè)身份驗(yàn)證票據(jù)..在web使用最廣的驗(yàn)證方式..靈活方便.
12.進(jìn)程和線程分別怎么理解?
13.什么是code-Behind技術(shù)。
新建一個(gè)VS.NET下的項(xiàng)目..看到ASPX,RESX和CS三個(gè)后綴的文件了嗎??這個(gè)就是代碼分離.實(shí)現(xiàn)了HTML代碼和服務(wù)器代
碼分離.方便代碼編寫和整理.
14.活動(dòng)目錄的作用。
活動(dòng)目錄是window2000的最重要的功能.可以將用戶信息全部集成起來,登陸以后可以訪問多個(gè)不同的網(wǎng)絡(luò)服務(wù)..
.
15..net中讀寫XML的類都?xì)w屬于哪些命名空間?
System.XML類
16.解釋一下UDDI、WSDL的意義及其作用。
17.什么是SOAP,有哪些應(yīng)用。
simple object access protocal,簡單對(duì)象接受協(xié)議.以xml為基本編碼結(jié)構(gòu),建立在已有通信協(xié)議上(如http,不過據(jù)說ms在搞最
底層的架構(gòu)在tcp/ip上的soap)的一種規(guī)范
是微軟大力推廣的Web Service使用的協(xié)議..
18.如何部署一個(gè)ASP.net頁面。
19.如何理解.net中的垃圾回收機(jī)制。
如果發(fā)現(xiàn)內(nèi)存不夠,則垃圾回收器,將全部對(duì)象作為無效對(duì)象(被回收對(duì)象),然后先將全局變量,static,處于活動(dòng)中的局部變
量,以及當(dāng)前CG指針指向的對(duì)象放入一個(gè)表中.然后
會(huì)搜索新列表中的對(duì)象所引用的對(duì)象.加入列表中,其他沒有被加入列表的對(duì)象都會(huì)被回收.
20.常用的調(diào)用webservice方法有哪些?
我一般用的是WSDL..或者web引用..
21列舉一下你所了解的XML技術(shù)及其應(yīng)用
.xml可以用來做網(wǎng)頁(xslt) xml可以當(dāng)作數(shù)據(jù)庫 xml可以用來保存對(duì)象的系列化
xml用于配置,用于保存靜態(tài)數(shù)據(jù)類型.接觸XML最多的是web Services..和config
C#中 property 與 attribute的區(qū)別,他們各有什么用處,這種機(jī)制的好處在哪里?
一個(gè)是屬性,用于存取類的字段,一個(gè)是特性,用來標(biāo)識(shí)類,方法等的附加性質(zhì)
C#可否對(duì)內(nèi)存進(jìn)行直接的操作?
可以
維護(hù)數(shù)據(jù)庫的完整性、一致性、你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么
觸發(fā)器,性能好,事務(wù)性
ADO。NET相對(duì)于ADO等主要有什么改進(jìn)?
新增dataset等,不需要隨時(shí)保持連接,性能提高
ASP。NET與ASP相比,主要有哪些進(jìn)步?
asp解釋型,aspx編譯型,性能提高,有利于保護(hù)源碼
C#中的委托是什么?事件是不是一種委托?
委托是一種安全的函數(shù)指針,事件是一種消息機(jī)制
你對(duì)XMLHTTP、WEBSERVICE 了解嗎?簡單描述其特點(diǎn)、作用
xmlhttp可以主動(dòng)獲取遠(yuǎn)端web代碼,類似HttpWebRequest
接口和抽象類有什么區(qū)別?你選擇使用接口和抽象類的依據(jù)是什么?
接口用于規(guī)范,抽象類用于共性。
存儲(chǔ)過程和函數(shù)的區(qū)別
存儲(chǔ)過程是編譯好的存儲(chǔ)在數(shù)據(jù)庫的操作,函數(shù)不用說了.
事務(wù)是什么?
具有原子性特點(diǎn)
游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?
指示當(dāng)前記錄的位置,檢查NULL
觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有和區(qū)別。語句級(jí)觸發(fā)和行級(jí)觸發(fā)有何區(qū)別。
一個(gè)是操作前,一個(gè)是操作后
請(qǐng)說明在.net中常用的幾種頁面間傳遞參數(shù)的方法,并說出他們的優(yōu)缺點(diǎn)。
session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被偽造
input type="hidden" 簡單,可能被偽造
url參數(shù) 簡單,顯示于地址欄,長度有限
數(shù)據(jù)庫 穩(wěn)定,安全,但性能相對(duì)弱
請(qǐng)說明.net中的錯(cuò)誤處理機(jī)制,并舉例
try catch final
請(qǐng)說出強(qiáng)名的含義
具有自己的key,可以在GAC為公用
請(qǐng)列出c#中幾種循環(huán)的方法,并指出他們的不同
for wile foreach
請(qǐng)指出.net中所有類型的基類
object
請(qǐng)指出GAC的含義
全局程序集緩存
值類型與引用類型有什么區(qū)別?
值和指針的區(qū)別
怎樣理解靜態(tài)變量?
所有實(shí)例公用一個(gè)的變量
向服務(wù)器發(fā)送請(qǐng)求有幾種方式?
get post
如果在一個(gè)B/S結(jié)構(gòu)的系統(tǒng)中需要傳遞變量值,但是又不能使用Session、Cookie、Application,您有幾種方法進(jìn)行處理
?
input type=""
url
數(shù)據(jù)庫
用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來開發(fā),每一層之間的關(guān)系以及為什么要這樣分層?
三層,表現(xiàn),邏輯,數(shù)據(jù), 安全性,維護(hù)性
軟件開發(fā)過程一般有幾個(gè)階段?每個(gè)階段的作用?
需求分析,架構(gòu)設(shè)計(jì),代碼編寫,QA,部署
通過超鏈接怎樣傳遞中文參數(shù)?
URLEncode URLDecode
請(qǐng)編程遍歷頁面上所有TextBox控件并給它賦值為string.Empty
foreach
有哪幾種方法可以實(shí)現(xiàn)一個(gè)類存取另外一個(gè)類的成員函數(shù)及屬性,并請(qǐng)舉列來加以說明和分析.
同一個(gè)名稱控件直接,或者反射
如果需記錄類的實(shí)例個(gè)數(shù),該如何實(shí)現(xiàn),請(qǐng)寫一個(gè)簡單的類于以證明.
const static int classNum=0;
classNum++;
A類是B類的基類,并且都有自己的構(gòu)造,析構(gòu)函數(shù),請(qǐng)舉例證明B類從實(shí)例化到消亡過程中構(gòu)造,析構(gòu)函數(shù)的執(zhí)行過程.
構(gòu)造先父后子,析夠反之
需要實(shí)現(xiàn)對(duì)一個(gè)字符串的處理,首先將該字符串首尾的空格去掉,如果字符串中間還有連續(xù)空格的話,僅保留一個(gè)空格,即允
許字符串中間有多個(gè)空格,但連續(xù)的空格數(shù)不可超過一個(gè).
string inputStr=" xx xx ";
inputStr=Regex.Replace(inputStr.Trim()," *"," ");
在c#中using和new這兩個(gè)關(guān)鍵字有什么意義,請(qǐng)寫出你所知道的意義?
using 指令 和語句 new 創(chuàng)建實(shí)例 new 隱藏基類中方法
using 引入名稱空間或者使用非托管資源
new 新建實(shí)例或者隱藏父類方法
談?wù)勵(lì)惡徒Y(jié)構(gòu)的區(qū)別?
類是引用類型、結(jié)構(gòu)是值類型
什么叫做SQL注入,如何防止?請(qǐng)舉例說明。
利用sql關(guān)鍵字對(duì)網(wǎng)站進(jìn)行攻擊。過濾關(guān)鍵字'等
下面這段代碼輸出什么?為什么?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
寫一個(gè)實(shí)現(xiàn)對(duì)一段字符串翻轉(zhuǎn)的方法,附加一些條件,如其中包括“,”、“.”,對(duì)其設(shè)計(jì)測試用例
inputStr=inputStr.ToCharArray().Reverse().ToString();
什么是反射?
動(dòng)態(tài)獲取程序集信息
用Singleton如何寫設(shè)計(jì)模式
static屬性里面new ,構(gòu)造函數(shù)private
C#中的垃圾回收機(jī)制是怎樣的?
三個(gè)generation,當(dāng)每個(gè)generation內(nèi)存滿了的時(shí)候檢查引用,無引用就回收內(nèi)存
什么是Application Pool?
Web應(yīng)用,類似Thread Pool,提高并發(fā)性能
鏈表和數(shù)組的區(qū)別,各有什么優(yōu)缺點(diǎn).
一個(gè)可以動(dòng)態(tài)增長,一個(gè)固定(VB中可以Redim),性能數(shù)組教好
什么是友元函數(shù)?
friendly聲明,可以訪問protect級(jí)別方法
什么是虛函數(shù)?
可以被重寫
什么是抽象函數(shù)?
必須被重寫
什么是內(nèi)存泄漏,怎樣最簡單的方法判斷被存泄漏 ?
C++,C中忘了釋放內(nèi)存,內(nèi)存不會(huì)再次分配
1SQL Server的兩種索引是何形式?索引的作用?索引的優(yōu)缺點(diǎn)?
cluster和非cluster,加速查找,占用額外控件,維護(hù)索引耗費(fèi)時(shí)間
什么是XML?
可擴(kuò)展標(biāo)記語言,可以做配置文件,可以傳輸數(shù)據(jù),可以存儲(chǔ)數(shù)據(jù)
簡述 private、 protected、 public、 internal 修飾符的訪問權(quán)限。
private : 私有成員, 在類的內(nèi)部才可以訪問。
protected : 保護(hù)成員,該類內(nèi)部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內(nèi)可以訪問。
進(jìn)程和線程的區(qū)別
進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的單位;線程是CPU調(diào)度和分派的單位,一個(gè)進(jìn)程可以有多個(gè)線程,這些線程共享這個(gè)
進(jìn)程的資源。
成員變量和成員函數(shù)前加static的作用
它們被稱為常成員變量和常成員函數(shù),又稱為類成員變量和類成員函數(shù)。分別用來反映類的狀態(tài)。比如類成員變量可以
用來統(tǒng)計(jì)類實(shí)例的數(shù)量,類成員函數(shù)負(fù)責(zé)這種統(tǒng)計(jì)的動(dòng)作。
malloc和new的區(qū)別
new是C++的關(guān)鍵字。malloc在分配內(nèi)存時(shí)必須按給出的字節(jié)分配,new可以按照對(duì)象的大小自動(dòng)分配,并且能調(diào)用構(gòu)造
函數(shù)??梢哉fnew是對(duì)象的對(duì)象,而malloc不是。本質(zhì)上new分配內(nèi)存時(shí),還會(huì)在實(shí)際內(nèi)存塊的前后加上附加信息,所
以new所使用的內(nèi)存大小比malloc多。
堆和棧的區(qū)別
棧:由編譯器自動(dòng)分配、釋放。在函數(shù)體中定義的變量通常在棧上。
堆:一般由程序員分配釋放。用new、malloc等分配內(nèi)存函數(shù)分配得到的就是在堆上。
棧是機(jī)器系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),而堆則是C/C++函數(shù)庫提供的。
棧是系統(tǒng)提供的功能,特點(diǎn)是快速高效,缺點(diǎn)是有限制,數(shù)據(jù)不靈活;而棧是函數(shù)庫提供的功能,特點(diǎn)是靈活方便,數(shù)
據(jù)適應(yīng)面廣泛,但是效率有一定降低。棧是系統(tǒng)數(shù)據(jù)結(jié)構(gòu),對(duì)于進(jìn)程/線程是唯一的;堆是函數(shù)庫內(nèi)部數(shù)據(jù)結(jié)構(gòu),不一
定唯一。不同堆分配的內(nèi)存無法互相操作。??臻g分靜態(tài)分配和動(dòng)態(tài)分配兩種。靜態(tài)分配是編譯器完成的,比如自動(dòng)變
量(auto)的分配。動(dòng)態(tài)分配由alloca函數(shù)完成。棧的動(dòng)態(tài)分配無需釋放(是自動(dòng)的),也就沒有釋放函數(shù)。為可移植的程序
起見,棧的動(dòng)態(tài)分配操作是不被鼓勵(lì)的!堆空間的分配總是動(dòng)態(tài)的,雖然程序結(jié)束時(shí)所有的數(shù)據(jù)空間都會(huì)被釋放回系統(tǒng)
,但是精確的申請(qǐng)內(nèi)存/釋放內(nèi)存匹配是良好程序的基本要素。
在.Net中,類System.Web.UI.Page 可以被繼承么?
可以
你覺得ASP.NET 2.0(VS2005)和你以前使用的開發(fā)工具(.Net 1.0或其他)有什么最大的區(qū)別?你在以前的平臺(tái)上使
用的哪些開發(fā)思想(pattern / architecture)可
1 ASP.NET 2.0 把一些代碼進(jìn)行了封裝打包,所以相比1.0相同功能減少了很多代碼.
2 同時(shí)支持代碼分離和頁面嵌入服務(wù)器端代碼兩種模式,以前1.0版本,.NET提示幫助只有在分離的代碼文件,無法在頁面嵌
入服務(wù)器端代碼獲得幫助提示,
3 代碼和設(shè)計(jì)界面切換的時(shí)候,2.0支持光標(biāo)定位.這個(gè)我比較喜歡
4 在綁定數(shù)據(jù),做表的分頁.UPDATE,DELETE,等操作都可以可視化操作,方便了初學(xué)者
5, 在ASP.NET中增加了40多個(gè)新的控件,減少了工作量
.net的錯(cuò)誤處理機(jī)制是什么
.net錯(cuò)誤處理機(jī)制采用try->catch->finally結(jié)構(gòu),發(fā)生錯(cuò)誤時(shí),層層上拋,直到找到匹配的Catch為止。
重載與覆蓋的區(qū)別
1、方法的覆蓋是子類和父類之間的關(guān)系,是垂直關(guān)系;方法的重載是同一個(gè)類中方法之間的關(guān)系,是水平關(guān)系。
2、覆蓋只能由一個(gè)方法,或只能由一對(duì)方法產(chǎn)生關(guān)系;方法的重載是多個(gè)方法之間的關(guān)系。
3、覆蓋要求參數(shù)列表相同;重載要求參數(shù)列表不同。
4、覆蓋關(guān)系中,調(diào)用那個(gè)方法體,是根據(jù)對(duì)象的類型(對(duì)象對(duì)應(yīng)存儲(chǔ)空間類型)來決定;重載關(guān)系,是根據(jù)調(diào)用時(shí)的
實(shí)參表與形參表來選擇方法體的。
簡要談一下您對(duì)微軟.NET 構(gòu)架下remoting和webservice兩項(xiàng)技術(shù)的理解以及實(shí)際中的應(yīng)用。
WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進(jìn)制傳送提高效率。
C#中的委托是什么?事件是不是一種委托?
委托是一種安全的函數(shù)指針,事件是一種消息機(jī)制
new有幾種用法
第一種:new Class();
第二種:覆蓋方法
public new XXXX(){}
第三種:new 約束指定泛型類聲明中的任何類型參數(shù)都必須有公共的無參數(shù)構(gòu)造函數(shù)。
如何把一個(gè)array復(fù)制到arrayList里
foreach( object o in array )arrayList.Add(o);
datagrid.datasouse可以連接什么數(shù)據(jù)源
dataset,datatable,dataview , IList
概述反射和序列化
反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對(duì)象。您可以使
用反射動(dòng)態(tài)地創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對(duì)象,或從現(xiàn)有對(duì)象中獲取類型。然后,可以調(diào)用類型的方法或訪問
其字段和屬性
序列化:序列化是將對(duì)象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。例如,可以序列化一個(gè)對(duì)象,然后使用 HTTP 通過 Internet 在客
戶端和服務(wù)器之間傳輸該對(duì)象。在另一端,反序列化將從該流重新構(gòu)造對(duì)象。
概述o/r mapping 的原理>
利用反射,配置 將類于數(shù)據(jù)庫表映射
用sealed修飾的類有什么特點(diǎn)
sealed 修飾符用于防止從所修飾的類派生出其它類。如果一個(gè)密封類被指定為其他類的基類,則會(huì)發(fā)生編譯時(shí)錯(cuò)誤。
密封類不能同時(shí)為抽象類。
sealed 修飾符主要用于防止非有意的派生,但是它還能促使某些運(yùn)行時(shí)優(yōu)化。具體說來,由于密封類永遠(yuǎn)不會(huì)有任何派
生類,所以對(duì)密封類的實(shí)例的虛擬函數(shù)成員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來處理。
什么叫應(yīng)用程序域?什么是受管制的代碼?什么是強(qiáng)類型系統(tǒng)?什么是裝箱和拆箱?什么是重載?CTS、CLS和CLR分別
作何解釋?
答:裝箱就是把值類型轉(zhuǎn)成引用類型,從MS IL角度看好像是boxing,沒記錯(cuò)的話是把值從堆棧轉(zhuǎn)到堆中.拆箱相反,重載就是
指一個(gè)方法名同,參數(shù)個(gè)數(shù)不同,返回值可以相同的方法.CLR是通用語言運(yùn)行時(shí),其它的不清楚.
如何理解委托?
答:據(jù)說相當(dāng)于函數(shù)指針,定義了委托就可以在不調(diào)用原方法名稱的情況下調(diào)用那個(gè)方法.
委托具有以下特點(diǎn):
委托類似于 C++ 函數(shù)指針,但它是類型安全的。
委托允許將方法作為參數(shù)進(jìn)行傳遞。
委托可用于定義回調(diào)方法。
委托可以鏈接在一起;例如,可以對(duì)一個(gè)事件調(diào)用多個(gè)方法。
方法不需要與委托簽名精確匹配。有關(guān)更多信息,請(qǐng)參見協(xié)變和逆變。
C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨(dú)定義的方法。
UDP連接和TCP連接的異同。
前者只管傳,不管數(shù)據(jù)到不到,無須建立連接.后者保證傳輸?shù)臄?shù)據(jù)準(zhǔn)確,須要連結(jié).
進(jìn)程和線程分別怎么理解?
進(jìn)程是老子,線程是兒子,沒有老子就沒有兒子,一個(gè)老子可以有多個(gè)兒子.一個(gè)兒子可以成為別人的兒子,一個(gè)老子也可以
為別的老子生兒子.
什么是SOAP,有哪些應(yīng)用。
答:SOAP(Simple Object Access Protocol )簡單對(duì)象訪問協(xié)議是在分散或分布式的環(huán)境中交換信息并執(zhí)行遠(yuǎn)程過程調(diào)用
的協(xié)議,是一個(gè)基于XML的協(xié)議。使用SOAP,不用考慮任何特定的傳輸協(xié)議(最常用的還是HTTP協(xié)議),可以允許任
何類型的對(duì)象或代碼,在任何平臺(tái)上,以任何一直語言相互通信。這種相互通信采用的是XML格式的消息.
1. 填空: (1)面向?qū)ο蟮恼Z言具有___繼承性、封裝性、多態(tài)性。
(2)能用foreach遍歷訪問的對(duì)象需要實(shí)現(xiàn) IEnumerable接口或聲明GetEnumerator 方法的類型
(3)列舉ADO.net中的五個(gè)主要對(duì)象
Command、Connection、DataSet、DataAdapter、DataReader。
2. 不定項(xiàng)選擇:
(1) 以下敘述正確的是:
A. 接口中可以有虛方法。 B. 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。
C. 接口不能被實(shí)例化。 D. 接口中可以包含已實(shí)現(xiàn)的方法。
(2) 從數(shù)據(jù)庫讀取記錄,你可能用到的方法有:
A. ExecuteNonQuery B. ExecuteScalar
C. Fill D. ExecuteReader
3. 簡述 private、 protected、 public、 internal 修飾符的訪問權(quán)限。
4. 寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer, 以自動(dòng)增長的ID作為主鍵, 注意:ID
可能不是連續(xù)的。)
5 .列舉ASP.NET 頁面之間傳遞值的幾種方式。
三種比較常見的方式,一種是可以通過用QueryString來傳送相應(yīng)的值,再一種是通過session變量來傳送相應(yīng)的值,還有
就是通過Server.Transfer方法來實(shí)現(xiàn)
(1)queryString
(2)session
(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
我正在做一個(gè)通用提示葉面,所有葉面出現(xiàn)問題都要,傳遞幾個(gè)變量字符串到同一個(gè)葉面 hitMsg.aspx 變量字符串包括
提示語言,即將跳轉(zhuǎn)的葉面,跳轉(zhuǎn)時(shí)間。在1-11種方案中哪個(gè)更好些?
(1)queryString的毛病是無法傳遞很長字符串,比如系統(tǒng)錯(cuò)誤信息往往就一整個(gè)屏幕。
(2)session的毛病是不能過多使用,依賴Cookie,容易丟失。
(3)cookie的毛病是依賴客戶端設(shè)置,不可靠。
(4)server.transfer的毛病是接收葉面要為發(fā)送葉面準(zhǔn)備好,只能定制專門一個(gè)葉面接受定制好的葉面。
不能是一個(gè)葉面接受任何葉面。
(5)hidden control/view state只能傳遞本頁。除非特殊制作。
(6)static member.無法保證線程安全,可能會(huì)此處栽瓜他處得豆。
(7)cache不適合使用一次就扔的變量。
(8)application全局的,開銷大。
(9)DataBase全局固化的,開銷更大,除非做日志跟蹤。
(10)xml or other Files全局固化的,開銷大,除非做日志跟蹤。
(11)XMLHTTP or Hidden iFrame/frame,做這個(gè)過于煩瑣。
(12)Context這個(gè)占用了用戶id,不適合做這個(gè)。
6. 寫出程序的輸出結(jié)果
class Class1 {
private string str = "Class1.str";
private int i = 0;
static void StringConvert(string str) {
str = "string being converted.";
}
static void StringConvert(Class1 c) {
c.str = "string being converted.";
}
static void Add(int i) {
i++;
}
static void AddWithRef(ref int i) {
i++;
}
static void Main() {
int i1 = 10;
int i2 = 20;
string str = "str";
Class1 c = new Class1();
Add(i1);
AddWithRef(ref i2);
Add(c.i);
StringConvert(str);
StringConvert(c);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(c.i);
Console.WriteLine(str);
Console.WriteLine(c.str);
}
}
7.寫出程序的輸出結(jié)果
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();
}
}
8. 寫出程序的輸出結(jié)果:
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}
public class B : A
{
public override void Fun1(int i)
{
base.Fun1 (i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
9. 一列數(shù)的規(guī)則如下: 1、1、2、3、5、8、13、21、34......
求第30位數(shù)是多少,用遞歸算法實(shí)現(xiàn)。(C#語言)
-------------------------------------------
a0 = 0,a1 = 1,An = An-1 + An-2(n>=2)
int[] iArray = new int[31];
iArray[0] = 0;
iArray[1] = 1;
for (int i = 2; i <= 30; i++)
{
iArray[i] = iArray[i - 1] + iArray[i - 2];
}
---------------參考答案二---------------------------------
int i=0,ii=1,s=1,num=0;
while(num<=30)
{
s=i+ii;
Response.Write(i+"+"+ii+"="+s+"<br>");
if(s==1)
{
i=1;
}
else
{
i=s-i;
}
ii=s;
num++;
}
========================
10. 程序設(shè)計(jì): 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)
要求: 1.要有聯(lián)動(dòng)性,老鼠和主人的行為是被動(dòng)的。
2.考慮可擴(kuò)展性,貓的叫聲可能引起其他聯(lián)動(dòng)效應(yīng)。
三個(gè)類,貓,老鼠和主人
貓
public sealed class Cat
{
// 貓叫時(shí)引發(fā)的事件
public event EventHandler Calling;
public void Call()
{
Console.WrietLine("貓叫了...");
if(Calling != null) // 檢查是否有事件注冊(cè)
Calling(this, EventArgs.Empty); // 調(diào)用事件注冊(cè)的方法。
}
}
// 老鼠,提供一個(gè)方法表示逃跑
public sealed calss Mouse
{
public void Escape(object sender, EventArgs e)
{
Console.WriteLine("老鼠逃跑了...");
}
}
// 主人,發(fā)生貓叫的時(shí)候驚醒
public sealed class Master
{
public void Wakened(object sender, EventArgs e)
{
Console.WriteLine("主人驚醒了...);
}
}
// 用于測試的執(zhí)行方法
// 程序入口點(diǎn)
public static Program
{
public static int Main(string[] args)
{
// 建立貓
Cat cat = new Cat();
// 建立老鼠
Mouse mouse = new Mouse();
// 建立主人
Master master = new Master();
// 注冊(cè)事件
cat.Calling += new EventHandler(mouse.Escape);
cat.Calling += new EventHandler(master.Wakened);
// 貓開始叫
cat.Call();
}
}
要點(diǎn):1. 聯(lián)動(dòng)效果,運(yùn)行代碼只要執(zhí)行Cat.Cryed()方法。2. 對(duì)老鼠和主人進(jìn)行抽象
評(píng)分標(biāo)準(zhǔn): <1>.構(gòu)造出Cat、Mouse、Master三個(gè)類,并能使程序運(yùn)行(2分)
<2>從Mouse和Master中提取抽象(5分)
<3>聯(lián)動(dòng)效應(yīng),只要執(zhí)行Cat.Cryed()就可以使老鼠逃跑,主人驚醒。(3分)
public interface Observer
{
void Response(); //觀察者的響應(yīng),如是老鼠見到貓的反映
}
public interface Subject
{
void AimAt(Observer obs); //針對(duì)哪些觀察者,這里指貓的要撲捉的對(duì)象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape!");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine("Host waken!");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine("Cat cryed!");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("mouse1", cat);
Mouse mouse2 = new Mouse("mouse2", cat);
Master master = new Master(cat);
cat.Cry();
}
}
聯(lián)系客服