1. 簡述private、protected、public、internal 修飾符的訪問權限。javascript
答. private : 私有成員, 在類的內部才能夠訪問。html
protected : 保護成員,該類內部和繼承類中能夠訪問。java
public : 公共成員,徹底公開,沒有訪問限制。node
internal: 在同一命名空間內能夠訪問。c++
2 .列舉ASP.NET 頁面之間傳遞值的幾種方式。程序員
答.web
1.使用QueryString, 如....?id=1; response. Redirect()....面試
2.使用Session變量ajax
3.使用Server.Transfer正則表達式
4.使用Application
5.使用Cache
6使用HttpContext的Item屬性
7.使用文件
8.使用數據庫
9.使用Cookie
3. 一列數的規則以下: 1、1、2、3、5、8、13、21、34...... 求第30位數是多少,用遞歸算法實現。
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}
4.C#中的委託是什麼?事件是否是一種委託?
答 :
委託能夠把一個方法做爲參數代入另外一個方法。
委託能夠理解爲指向一個函數的引用。
是,是一種特殊的委託
5.override與重載的區別
答 :
重載是方法的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要
Override 是進行基類中函數的重寫。實現多態。
6.若是在一個B/S結構的系統中須要傳遞變量值,可是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
答 :
1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Server.Transfer
3.使用Cache
4使用HttpContext的Item屬性
5.使用文件
6.使用數據庫
7.請編程遍歷頁面上全部TextBox控件並給它賦值爲string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
8.請編程實現一個冒泡排序算法?
答:
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
9.描述一下C#中索引器的實現過程,是否只能根據數字進行索引?(索引器是對屬性的封裝,具體查看msdn)
答:不是。能夠用任意類型。
10.求如下表達式的值,寫出您想到的一種或幾種實現方法:1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum - I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
11.用.net作B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲何要這樣分層?
答:使用MVC模式分層
通常爲3層
數據訪問層,業務層,表示層。
數據訪問層對數據庫進行增刪查改。
業務層通常分爲二層,業務表視層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層爲了與用戶交互例如用戶添加表單。
優勢:分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點:增長成本。
12.在下面的例子裏
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()建立B的實例時,產生什麼輸出?
答:X=1,Y=0;x= 1 y = -1
注:B類中的PrintFields()未用override關鍵字實現重寫的時候,建立B的實例時:
X=1,Y = -1
13.什麼叫應用程序域?
答:應用程序域能夠理解爲一種輕量級進程。起到安全的做用。佔用資源小。
14.CTS、CLS、CLR分別做何解釋?
答:CTS:通用類型系統。CLS:公共語言規範。CLR:公共語言運行庫。
15.什麼是裝箱和拆箱?
答:從值類型接口轉換到引用類型裝箱。從引用類型轉換到值類型拆箱。
16.什麼是受管制(託管)的代碼?
答:
託管代碼是運行.NET 公共語言運行時CLR的代碼
unsafe:非託管代碼。不通過CLR運行。程序員自行分配和釋放內存空間
17.什麼是強命名程序集?
答:程序集須要通過加密簽名,強命名程序集能夠部署到全局程序集緩存中,成爲公共程序集
18..net中讀寫數據庫須要用到那些類?他們的做用?
答:
DataSet:數據集。
DataCommand:執行語句命令。
DataAdapter:數據的集合,用語填充。
DataReader:數據只讀器
19.ASP.net的身份驗證方式有哪些?分別是什麼原理?
答:
Windows(默認)用IIS控制
From(窗體)用賬戶
Passport(密鑰)
20.什麼是Code-Behind技術?
答:代碼後置。
21.在.net中,配件的意思是?
答:程序集。(中間語言,源數據,資源,裝配清單)
22.經常使用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜單選項
23..net Remoting 的工做原理是什麼?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以肯定對象的位置。
24.在C#中,string str = null 與string str = 「」 請儘可能使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度爲空字符串的內存空間。
25.請詳述在dotnet中類(class)與結構(struct)的異同?
答:class能夠被實例化,屬於引用類型,class能夠實現接口和單繼承其餘類,還能夠做爲基類型,是分配在內存的堆上的
struct屬於值類型,不能做爲基類型,可是能夠實現接口,是分配在內存的棧上的.
26.根據委託(delegate)的知識,請完成如下用戶控件中代碼片斷的填寫:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
private void toolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//請在如下補齊代碼用來調用OnDBOperate委託簽名的OnNew事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
27.分析如下代碼,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j=
答:i=13,j=10
28.Sql Server服務器中,給定表table1 中有兩個字段ID、LastUpdateDate,ID表示更新的事務號,LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句得到最後更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29.根據線程安全的相關知識,分析如下代碼,當調用test方法時i>10時是否會引發死鎖?並簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,因此每次改變的都只是一個副本,所以不會出現死鎖。但若是把int換作一個object,那麼死鎖會發生)
30.簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。
答:webservice主要是可利用HTTP,穿透防火牆。
Remoting能夠利用TCP/IP,二進制傳送提升效率。
31.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到如下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的全部行(排序的方式如DataGrid類似)。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭,把該列的ID取出,按照該ID排序後,在給綁定到ListView中。
32.給定如下XML文件,完成算法流程圖。
<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 );
}
}
33.寫出一條Sql語句:取出表A中第31到第40記錄(SQL Server以自動增加的ID做爲主鍵,注意:ID可能不是連續的。
答:
解1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
34.面向對象的語言具備________性、_________性、________性
答:封裝、繼承、多態。
35.能用foreach遍歷訪問的對象須要實現________________接口或聲明________________方法的類型。
答:IEnumerable 、GetEnumerator。
36.GC是什麼? 爲何要有GC?
答:GC是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。要請求垃圾收集,能夠調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
37.String s = new String("xyz");建立了幾個String Object?
答:兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s。
38.abstract class和interface有什麼區別?
答:
聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。不能建立abstract 類的實例。然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。多繼承性可經過實現這樣的接口而得到。接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。
39.啓動一個線程是用run()仍是start()?
答:啓動一個線程是調用start()方法,使線程所表明的虛擬處理機處於可運行狀態,這意味着它能夠由JVM調度並執行。這並不意味着線程就會當即運行。
run()方法能夠產生必須退出的標誌來中止一個線程。
40.接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
答:接口能夠繼承接口。
抽象類能夠實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
41.構造器(構造函數)Constructor是否可被override?
答:構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。
42.是否能夠繼承String類?
答:String類是密封類故不能夠繼承。
43.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後?
答:會執行,在return前執行。
44.兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對?
答:不對,有相同的hash code。
45.swtich是否能做用在byte上,是否能做用在long上,是否能做用在String上?
答:switch(expr1)中,expr1是一個整數表達式。所以傳遞給switch 和case 語句的參數應該是int、short、char 或者byte。long,string 都不能做用於swtich。
46.什麼是SOAP,有哪些應用?
答:SOAP(Simple Object Access Protocol)簡單對象訪問協議是在分散或分佈式的環境中交換信息並執行遠程過程調用的協議,是一個基於XML的協議,使用SOAP,不用考慮任何特定的傳輸協議(最經常使用的仍是HTTP協議),能夠容許任何類型的對象或代碼,在任何平臺上以任何語言相互通訊,這種相互通訊採用的是XML格式的消息。
SOAP也被稱做XMLP,爲兩個程序交換信息提供了一種標準的工做機制。在各種機構之間經過電子方式相互協做的狀況下徹底有必要爲此制定相應的標準。
SOAP描述了把消息捆綁爲XML的工做方式。它還說明了發送消息的發送方、消息的內容和地址以及發送消息的時間。SOAP是Web Service的基本通訊協議。SOAP規範還定義了怎樣用XML來描述程序數據(Program Data),怎樣執行RPC(Remote Procedure Call)。大多數SOAP解決方案都支持RPC-style應用程序。SOAP還支持 Document-style應用程序(SOAP消息只包含XML文本信息)。
最後SOAP規範還定義了HTTP消息是怎樣傳輸SOAP消息的。MSMQ、SMTP、TCP/IP均可以作SOAP的傳輸協議。
SOAP 是一種輕量級協議,用於在分散型、分佈式環境中交換結構化信息。 SOAP 利用 XML 技術定義一種可擴展的消息處理框架,它提供了一種可經過多種底層協議進行交換的消息結構。 這種框架的設計思想是要獨立於任何一種特定的編程模型和其餘特定實現的語義。
SOAP 定義了一種方法以便將 XML 消息從 A 點傳送到 B 點。 爲此,它提供了一種基於 XML 且具備如下特性的消息處理框架: 1) 可擴展, 2) 可經過多種底層網絡協議使用, 3) 獨立於編程模型
47.當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
48.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
答:都不能。
49.List, Set, Map是否繼承自Collection接口?
答:List、Set是,Map不是
50.Set裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==仍是equals()? 它們有何區別?
答:Set裏的元素是不能重複的,那麼用iterator()方法來區分重複與否。equals()是判讀兩個Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,爲的是當兩個分離的對象的內容和類型相配的話,返回真值。
51.數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String沒有length()這個方法,有length屬性。
52.sleep() 和wait() 有什麼區別?
答:sleep()方法是使線程中止一段時間的方法。在sleep 時間間隔期滿後,線程不必定當即恢復執行。這是由於在那個時刻,其它線程可能正在運行並且沒有被調度爲放棄執行,除非(a)「醒來」的線程具備更高的優先級
(b)正在運行的線程由於其它緣由而阻塞。
wait()方法是線程交互時,若是線程對一個同步對象x 發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
53.short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
答:short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉化爲short型,須要強制轉換類型。可修改成s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
54.談談final, finally, finalize的區別。
答:
final—修飾符(關鍵字)若是一個類被聲明爲final,意味着它不能再派生出新的子類,不能做爲父類被繼承。所以一個類不能既被聲明爲abstract的,又被聲明爲final的。將變量或方法聲明爲final,能夠保證它們在使用中不被改變。被聲明爲final的變量必須在聲明時給定初值,而在之後的引用中只能讀取,不可修改。被聲明爲final的方法也一樣只能使用,不能重載
finally—在異常處理時提供finally 塊來執行任何清除操做。若是拋出一個異常,那麼相匹配的catch 子句就會執行,而後控制就會進入finally 塊(若是有的話)。
finalize—方法名。Java 技術容許使用finalize() 方法在垃圾收集器將對象從內存中清除出去以前作必要的清理工做。這個方法是由垃圾收集器在肯定這個對象沒有被引用時對這個對象調用的。它是在Object 類中定義的,所以全部的類都繼承了它。子類覆蓋finalize() 方法以整理系統資源或者執行其餘清理工做。finalize() 方法是在垃圾收集器刪除對象以前對這個對象調用的。
55.如何處理幾十萬條併發數據?
答:用存儲過程或事務。取得最大標識的時候同時更新..注意主鍵不是自增量方式這種方法併發的時候是不會有重複主鍵的..取得最大標識要有一個存儲過程來獲取.
56.Session有什麼重大BUG,微軟提出了什麼方法加以解決?
答:是IIS中因爲有進程回收機制,系統繁忙的話Session會丟失,能夠用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件。
57.進程和線程的區別?
答:
1.線程(Thread)與進程(Process)兩者都定義了某種邊界,不一樣的是進程定義的是應用程序與應用程序之間的邊界,不一樣的進程之間不能共享代碼和數據空間,而線程定義的是代碼執行堆棧和執行上下文的邊界。
2.一個進程能夠包括若干個線程,同時建立多個線程來完成某項任務,即是多線程。而同一進程中的不一樣線程共享代碼和數據空間。用一個比喻來講,若是一個家庭表明一個進程,在家庭內部,各個成員就是線程,家庭中的每一個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也能夠派出幾個成員來協同完成,而家庭以外的人則沒有辦法直接消費不屬於本身家庭的財產。
或者:
進程是系統進行資源分配和調度的單位;
線程是CPU調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進程的資源。
58.堆(Heap)和棧(stack)的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量一般在棧上。
堆:通常由程序員分配釋放。用new、malloc等分配內存函數分配獲得的就是在堆上。
59.成員變量和成員函數前加static的做用?
答:它們被稱爲常成員變量和常成員函數,又稱爲類成員變量和類成員函數。分別用來反映類的狀態。好比類成員變量能夠用來統計類實例的數量,類成員函數負責這種統計的動做。
60.ASP.NET與ASP相比,主要有哪些進步?
答:asp解釋形,aspx編譯型,性能提升,有利於保護源碼。
61.產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
62.請說明在.net中經常使用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
答:
session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被僞造
input ttype="hidden" 簡單,可能被僞造
url參數簡單,顯示於地址欄,長度有限
數據庫穩定,安全,但性能相對弱
63.請指出GAC的含義?
答:全局程序集緩存。
64.向服務器發送請求有幾種方式?
答:get,post。
get通常爲連接方式,post通常爲按鈕方式。
65.DataReader與Dataset有什麼區別?
答:一個是隻能向前的只讀遊標,一個是內存中的表。
66.軟件開發過程通常有幾個階段?每一個階段的做用?
答:可行性分析(風險控制),需求分析,架構設計,代碼編寫,測試,部署,維護
67.在c#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?
答:using 引入名稱空間或者使用非託管資源,使用完對象後自動執行實現了IDisposable接口的類的Dispose方法
new 新建實例或者隱藏父類方法
68.須要實現對一個字符串的處理,首先將該字符串首尾的空格去掉,若是字符串中間還有連續空格的話,僅保留一個空格,即容許字符串中間有多個空格,但連續的空格數不可超過一個.
答:string inputStr=" xx xx ";
inputStr=Regex.Replace(inputStr.Trim()," *"," ");
69.下面這段代碼輸出什麼?爲何?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
答:不相等,由於比較的是對象
70.什麼叫作SQL注入,如何防止?請舉例說明。
答:利用SQL關鍵字對網站進行攻擊。
預防SQL注入:過濾關鍵字、使用存儲過程、參數化等
71.什麼是反射?
答:動態獲取程序集信息
或者:
程序集包含模塊,而模塊又包括類型,類型下有成員,反射就是管理程序集,模塊,類型的對象,它可以動態的建立類型的實例,設置現有對象的類型或者獲取現有對象的類型,能調用類型的方法和訪問類型的字段屬性。它是在運行時建立和使用類型實例
72.用Singleton如何寫設計模式
答:static屬性裏面new ,構造函數private
73.什麼是Application Pool?
答:Web應用,相似Thread Pool,提升併發性能。
74.什麼是虛函數?什麼是抽象函數?
答:虛函數:沒有實現的,可由子類繼承並重寫的函數。
抽象函數:規定其非虛子類必須實現的函數,必須被重寫。
75.什麼是XML?
答:XML便可擴展標記語言。eXtensible Markup Language.標記是指計算機所能理解的信息符號,經過此種標記,計算機之間能夠處理包含各類信息的文章等。如何定義這些標記,便可以選擇國際通用的標記語言,好比HTML,也能夠使用像XML這樣由相關人士自由決定的標記語言,這就是語言的可擴展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。
76列舉一下你所瞭解的XML技術及其應用
答:xml用於配置,用於保存靜態數據類型。接觸XML最多的是web Services.和config,存儲常用可是不常常修改的數據
77.什麼是Web Service?UDDI?
答:Web Service即是基於網絡的、分佈式的模塊化組件,它執行特定的任務,遵照具體的技術規範,這些規範使得Web Service能與其餘兼容的組件進行互操做。
UDDI 的目的是爲電子商務創建標準;UDDI是一套基於Web的、分佈式的、爲Web Service提供的、信息註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業可以發現的訪問協議的實現標準。
78.什麼是ASP.net中的用戶控件?
答:用戶控件通常用在內容多爲靜態,或者少量會改變的狀況下。.用的比較多,相似ASP中的include。可是功能要強大的多。
79.什麼是code-Behind(代碼後置)技術。
答:ASPX、RESX和CS三個後綴的文件,這個就是代碼分離。實現了HTML代碼和服務器代碼分離,方便代碼編寫和整理。
80.ADO.net中經常使用的對象有哪些?
答:
SqlConnection 數據庫鏈接對象
SqlCommand 數據庫命令對象
SqlDataAdapter 數據適配器
SqlDataReader 數據庫讀取器,「只讀、向前」,不能後退地讀取數據
DataSet 數據集,至關於內存中的數據庫
81. 62-63=1 等式不成立,請移動一個數字(不能夠移動減號和等於號),使得等式成立,如何移動?
答:62移動成2的6次方
82.C#中property 與attribute的區別,他們各有什麼用處,這種機制的好處在哪裏?
答:一個是特性,用來標識類,方法等的附加性質;
一個是屬性,用於存取類的字段,
83.XML 與HTML 的主要區別
答:
1. XML是區分大小寫字母的,HTML不區分。
2. 在HTML中,若是上下文清楚地顯示出段落或者列表鍵在何處結尾,那麼你能夠省略</p>或者</li>之類的結束標記。在XML中,絕對不能省略掉結束標記。
3. 在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個/ 字符做爲結尾。這樣分析器就知道不用查找結束標記了。
4. 在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。
5. 在HTML中,能夠擁有不帶值的屬性名。在XML中,全部的屬性都必須帶有相應的值。
84.C#中的三元運算符是?
答:?:。
85.當整數a賦值給一個object對象時,整數a將會被?
答:裝箱。
86.類成員有_____種可訪問形式?
答:this.;
new Class().Method;
87.public static const int A=1;這段代碼有錯誤麼?是什麼?
答:const不能用static修飾。
88.float f=-123.567F; int i=(int)f;i的值如今是_____?
答:-123。
89.委託聲明的關鍵字是______?
答:delegate.
90.用sealed修飾的類有什麼特色?
答:密封,不能繼承。
91.在Asp.net中全部的自定義用戶控件都必須繼承自________?
答:Control。
92.在.Net中全部可序列化的類都被標記爲_____?
答:[serializable]
93.在.Net託管代碼中咱們不用擔憂內存漏洞,這是由於有了______?
答:GC(垃圾收集器)。
94.下面的代碼中有什麼錯誤嗎?_______
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();
答:abstract override 是不能夠一塊兒修飾.
95.當類T只聲明瞭私有實例構造函數時,則在T的程序文本外部,___能夠___(能夠or 不能夠)從T派生出新的類,不能夠____(能夠or 不能夠)直接建立T的任何實例。
答:不能夠,不能夠。
96.下面這段代碼有錯誤麼?
switch (i)
{
case(): 答://case()條件不能爲空
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault; 答://wrong,格式不正確
CaseTwo();
break;
}
97.在.Net中,類System.Web.UI.Page 能夠被繼承麼?
答:能夠。
98..net的錯誤處理機制是什麼?
答:.net錯誤處理機制採用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的catch爲止。
99.利用operator聲明且僅聲明瞭==,有什麼錯誤麼?
答:要同時修改Equale和GetHash() ? 重載了"==" 就必須重載"!="
100.在.net(C# or vb.net)中如何用戶自定義消息,並在窗體中處理這些消息。
答:在form中重載DefWndProc函數來處理消息:
protected override void DefWndProc ( ref System.WinForms.Message m ) operator
{
switch(m.msg)
{
case WM_Lbutton :
///string與MFC中的CString的Format函數的使用方法有所不一樣
string message = string.Format("收到消息!參數爲:{0},{1}",m.wParam,m.lParam);
MessageBox.Show(message);///顯示一個消息框
break;
case USER:
處理的代碼
default:
base.DefWndProc(ref m);///調用基類函數處理非自定義消息。
break;
}
}
101.在.net(C# or vb.net)中如何取消一個窗體的關閉。
答:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
102.在.net(C# or vb.net)中,Appplication.Exit 仍是Form.Close有什麼不一樣?(winform題目非asp.net題目)
答:一個是退出整個應用程序,一個是關閉其中一個form。
103.在C#中有一個double型的變量,好比10321.5,好比122235401.21644,做爲貨幣的值如何按各個不一樣國家的習慣來輸出。好比美國用$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");爲英國貨幣類型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
104.某一密碼僅使用K、L、M、N、O共5個字母,密碼中的單詞從左向右排列,密碼單詞必須遵循以下規則:
(1)密碼單詞的最小長度是兩個字母,能夠相同,也能夠不一樣
(2)K不多是單詞的第一個字母
(3)若是L出現,則出現次數不止一次
(4)M不能使最後一個也不能是倒數第二個字母
(5)K出現,則N就必定出現
(6)O若是是最後一個字母,則L必定出現
問題一:下列哪個字母能夠放在LO中的O後面,造成一個3個字母的密碼單詞?
A) K B)L C) M D) N
答案:B
問題二:若是能獲得的字母是K、L、M,那麼可以造成的兩個字母長的密碼單詞的總數是多少?
A)1個B)3個C)6個D)9個
答案:A
問題三:下列哪個是單詞密碼?
A) KLLN B) LOML C) MLLO D)NMKO
答案:C
105.對於這樣的一個枚舉類型:
enum Color:byte
{
Red,Green,Blue,Orange
}
答:string[] ss=Enum.GetNames(typeof(Color));
byte[] bb=Enum.GetValues(typeof(Color));
106. C#中 property 與attribute的區別,他們各有什麼用處,這種機制的好處在哪裏?
答:attribute:自定義屬性的基類;property :類中的屬性
107.C#能否對內存進行直接的操做?
答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序員。但在C#中,不能直接實現Finalize方法,而是在析構函數中調用基類的Finalize()方法
108.ADO.NET相對於ADO等主要有什麼改進?
答:
1:ado.net不依賴於ole db提供程序,而是使用.net託管提供的程序,
2:不使用com
3:不在支持動態遊標和服務器端遊標
4:,能夠斷開connection而保留當前數據集可用
5:強類型轉換
6:xml支持
109.寫一個HTML頁面,實現如下功能,左鍵點擊頁面時顯示「您好」,右鍵點擊時顯示「禁止右鍵」,並在2分鐘後自動關閉頁面。
答:
<script language=javascript>
setTimeout('window.close();',3000);
function show()
{
if (window.event.button == 1)
{
alert("左");
}
else if (window.event.button == 2)
{
alert("右");
}
}
</script>
110.大概描述一下ASP.NET服務器控件的生命週期
答:初始化,加載視圖狀態,處理回發數據,加載,發送回發更改通知,處理回發事件,預呈現保存狀態,呈現,處置,卸載。
111.Anonymous Inner Class (匿名內部類) 是否能夠extends(繼承)其它類,是否能夠implements(實現)interface(接口)?
答:不能,能夠實現接口
112.Static Nested Class 和Inner Class的不一樣(說得越多越好)
答:Static Nested Class是被聲明爲靜態(static)的內部類,它能夠不依賴於外部類實例被實例化。而一般的內部類須要在外部類實例化後才能實例化。
113.&和&&的區別。
答:&是位運算符,表示按位與運算;
&&是邏輯運算符,表示邏輯與(and).
114.HashMap和HashTable的區別。
答:HashMap是HashTable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap容許空(null)鍵值(key),因爲非線程安全,效率上可能高於Hashtable。
115.概述反射和序列化(serializable)
反射:反射提供了封裝程序集,模塊和類型對象,能夠用反射動態的建立類型的實例,將類型綁定到現有對象,或者從現有對象類型裏獲取類型,而後調用類型的方法或訪問字段的屬性。
序列化:將對象轉換爲另外一種媒介傳輸的格式過程,如,序列化一個對象,用HTTP經過internet在客戶端和服務器之間傳遞該對象,在另外一端用反序列化從該流中從新獲得對象。
116.Overloaded的方法是否能夠改變返回值的類型?
答:Overloaded的方法是能夠改變返回值的類型。
117.Error和Exception有什麼區別?
答:
Error表示恢復不是不可能但很困難的狀況下的一種嚴重問題。好比說內存溢出。不可能期望程序能處理這樣的狀況。
Exception表示一種設計或實現問題。也就是說,它表示若是程序運行正常,從不會發生的狀況。
118.<% # %> 和<% %> 有什麼區別?
答:<% # %>表示綁定的數據源
<% %>是服務器端代碼塊
119.你以爲ASP.NET 2.0(VS2005)和你之前使用的開發工具(.Net 1.0或其餘)有什麼最大的區別?你在之前的平臺上使用的哪些開發思想(pattern / architecture)能夠移植到ASP.NET 2.0上(或者已經內嵌在ASP.NET 2.0中)
答:
1 ASP.NET 2.0 把一些代碼進行了封裝打包,因此相比1.0相同功能減小了不少代碼.
2 同時支持代碼分離和頁面嵌入服務器端代碼兩種模式,之前1.0版本,.NET提示幫助只有在分離的代碼文件,沒法 在頁面嵌入服務器端代碼得到幫助提示,
3 代碼和設計界面切換的時候,2.0支持光標定位.這個我比較喜歡
4 在綁定數據,作表的分頁.UPDATE,DELETE,等操做均可以可視化操做,方便了初學者
5 在ASP.NET中增長了40多個新的控件,減小了工做量
120.重載與覆蓋的區別?
答:
一、方法的覆蓋是子類和父類之間的關係,是垂直關係;方法的重載是同一個類中方法之間的關係,是水平關係
二、覆蓋只能由一個方法,或只能由一對方法產生關係;方法的重載是多個方法之間的關係。
三、覆蓋要求參數列表相同;重載要求參數列表不一樣。
四、覆蓋關係中,調用那個方法體,是根據對象的類型(對象對應存儲空間類型)來決定;重載關係,是根據調用時的實參表與形參表來選擇方法體的。
121.描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:C#中索引器的實現過程,所謂索引器就是一類特殊的屬性,經過它們你就能夠像引用數組同樣引用本身的類,顯然,這一功能在建立集合類的場合特別適用,而在其餘某些狀況下,好比處理大型文件或者抽象某些有限資源等,能讓類具備相似數組的行爲
給類定義的索引器:
this [argument list]
{
get
{
// Get codes goes here
}
set
{
// Set codes goes here
}
}
如:
class Sample
{
public string this [int index]
{
get {return "You passed " + index; }
}
}
相似數組的行爲常受到程序言的喜好,因此還能夠爲接口定義索引器,IList和IDictionary集合接口都聲明瞭索引器,在爲接口聲明索引器的時候,記住聲明只是表示索引器的存在,如:
interface IImplementMe {
string this[int index]
{
get;
set;
}
不是。能夠用任意類型。
122.列舉ADO.NET中的共享類和數據庫特定類
共享類:DataSet、DataTable、DataRow、DataColumn、DataRelation、Constraint、
DataColumnMapping、DataTableMapping
特定類:(x)Connection、(x)Command、(x)CommandBuilder、(x)DataAdapter、
(x)DataReader、(x)Parameter、(x)Transaction
123.死鎖的必要條件?
答:系統的資源不足,進程的推動的順序不合適,資源分配不當,一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已阻塞,對已得到資源不放,進程得到資源時,未完成前,不能強行剝奪。
124.Collection與Collections的區別?
答:Collection是集合類的上級接口,Collections是針對集合類的一個幫助類,它提供一系列靜態方法來實現對各類集合的搜索,排序,線程安全操做。
125.分析如下代碼。
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。因此理論上並不是全部異常都會被捕捉。)
126.const和ReadOnly的區別?
const是編程時申明常量,ReadOnly用來申明運行時常量
127.什麼是WSE?目前最新的版本是多少?
答:WSE (Web Service Extension) 包來提供最新的WEB服務安全保證,目前最新版本2.0。
128.在下面的例子裏
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()建立B的實例時,產生什麼輸出?
答:X=1,Y=0
129.下面的例子中
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);
}
}
產生的輸出結果是什麼?
答:x=1,y=2
130.String和StringBuilder的區別。
答案:由於StringBuffer內部實現是char數組,默認初始化長度爲16,每當字符串長度大於
char數組長度的時候,JVM會構造更大的新數組,並將原先的數組內容複製到新數組。String是不可變對象,每次"+="操做都會形成構造新的String對象。
關鍵點
1). 簡單的認爲 .append() 效率好於 "+=" 是正確的!
2). 不要使用 new 建立 String
3). 注意 .intern() 的使用
4). 在編譯期可以肯定字符串值的狀況下,使用"+"效率最高
5). 避免使用 "+=" 來構造字符串
6). 在聲明StringBuffer對象的時候,指定合適的capacity,不要使用默認值(16)
在.Net中是StringBuilder,而在JAVA中是StringBuffer
String s=new String ("abc");
131.簡述asp.net緩存技術。
1.整頁緩存:適用於不須要頻繁更新數據的頁面,佔用大量時間和資源才能編譯生成的頁面
2.頁面部分緩存:適用於頁面內某些部分可能每次請求時都須要最新數據的狀況,用緩存後替換的方法:就是將整個頁面緩存,而後替換頁面中不須要緩存的部分,主要經過使用Substitution控件實現的。
注意:Substitution控件MethodName屬性所調用的方法必須知足:
必須是靜態的方法
返回類型必須是String型
參數類型必須是HttpContext類型
3.應用程序緩存:是用來存儲與應用程序相關的對象,主要由Cache類,實現緩存依賴的添加,檢索,刪除,它給咱們提供了一種機制,使得咱們能夠經過編碼方式靈活的控制緩存的操做,與前兩種緩存方式相比,應用程序緩存的優勢是靈活性
注意添加緩存的方法:
1.指定鍵值
2.使用Add()方法
3.使用Insert()方法
132.Asp.net中經常使用的幾種頁面傳遞參數的方法,優缺點?
答:session(viewstate)簡單,但易丟失
application 全局的
cookie簡單,但可能不支持,長度有限
數據庫,穩定,安全,但性能相對弱
133.ASP.NET和ASP相比的進步?
asp解釋型,aspx編譯型,性能高,能夠跟美工的工做分開進行,更有利於團隊開發
134.sleep() 和 wait() 有什麼區別?
sleep()方法是將當前線程掛起指定的時間。
wait()釋放對象上的鎖並阻塞當前線程,直到它從新獲取該鎖。
135.new 關鍵字用法
new 運算符 用於建立對象和調用構造函數。
new 修飾符 用於向基類成員隱藏繼承成員。
new 約束 用於在泛型聲明中約束可能用做類型參數的參數的類型。
new實現多態
136.如何把一個Array複製到ArrayList裏
實現1 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);
實現2 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);
137.DataGrid的DataSouse能夠鏈接什麼數據源
DataTable
DataView
DataSet
DataViewManager
任何實現IListSource接口的組件
任何實現IList接口的組件
138.什麼是強類型,什麼是弱類型?哪一種更好些?爲何?
強類型是在編譯的時候就肯定類型的數據,在執行時類型不能更改,而弱類型在執行的時候纔會肯定類型。
沒有好很差,兩者各有好處,強類型安全,由於它事先已經肯定好了,並且效率高。
通常用於編譯型編程語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運行的時候容易出現錯誤,但它靈活,多用於解釋型編程語言,如javascript,vb等。
139.DateTime是否能夠爲null?
不能,由於其爲Struct類型,而結構屬於值類型,值類型不能爲null,只有引用類型才能被賦值null
140.using() 語法有用嗎?什麼是IDisposable?它是如何實現肯定性終結的
有用,實現了IDisposiable的類在using中建立,using結束後會自定調用該對象的Dispose方法,釋放資源。不明白什麼是肯定性終結
141.Assembly.Load("foo.dll"); 這句話是否正確?
錯誤,正確的應該是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");
142.如何理解死鎖的概念?死鎖是如何造成的?在應用中應注意什麼事項避免死鎖?
死鎖是一種條件,不只僅是在關係數據庫管理系統(RDBMS) 中發生,在任何多用戶系統中均可以發生的。當兩個用戶(或會話)具備不一樣對象的鎖,而且每一個用戶須要另外一個對象的鎖時,就會出現死鎖。每一個用戶都等待另外一個用戶釋放他的鎖。當兩個鏈接陷入死鎖時,Microsoft? SQL Server? 會進行檢測。其中一個鏈接被選做死鎖犧牲品。該鏈接的事務回滾,同時應用程序收到錯誤。
阻塞
任何基於鎖的併發系統都不可避免地具備可能在某些狀況下發生阻塞的特徵。當一個鏈接控制了一個鎖,而另外一個鏈接須要衝突的鎖類型時,將發生阻塞。其結果是強制第二個鏈接等待,或在第一個鏈接上阻塞。
其實全部的死鎖最深層的緣由就是一個——資源競爭。
表現一:
一個用戶A 訪問表A(鎖住了表A),而後又訪問表B,另外一個用戶B 訪問表B(鎖住了表B),而後企圖訪問表A。這時用戶A因爲用戶B已經鎖住表B,它必須等待用戶B釋放表B,才能繼續,好了他老人家就只好老老實實在這等了。
一樣用戶B要等用戶A釋放表A才能繼續這就死鎖了。
解決方法:
這種死鎖是因爲你的程序的BUG產生的,除了調整你的程序的邏輯別無他法。
仔細分析你程序的邏輯:
1:儘可能避免同時鎖定兩個資源;
2: 必須同時鎖定兩個資源時,要保證在任什麼時候刻都應該按照相同的順序來鎖定資源。
表現二:
用戶A讀一條紀錄,而後修改該條紀錄,這是用戶B修改該條紀錄,這裏用戶A的事務裏鎖的性質由共享鎖企圖上升到獨佔鎖(for update),而用戶B裏的獨佔鎖因爲A有共享鎖存在因此必須等A釋放掉共享鎖,而A因爲B的獨佔鎖而沒法上升的獨佔鎖也就不可能釋放共享鎖,因而出現了死鎖。
這種死鎖比較隱蔽,但其實在稍大點的項目中常常發生。
解決方法:
讓用戶A的事務(即先讀後寫類型的操做),在select 時就是用Update lock
143.什麼是事務? 使用事務的語句有哪些?
答:事務是一種機制,是一個操做序列,它包括了一組數據庫操做命令,而且全部的命令做爲一個總體向
系統提交或者撤消操做請求,要麼所有,要麼所有不執行.
begin transaction
commit transaction
rollback transaction
145.請談談你對OOP的理解。
面向對象編程(Object Oriented Programming,OOP,面向對象程序設計)是一種計算機編程架構。OOP 的一條基本原則是計算機程序是由單個可以起到子程序做用的單元或對象組合而成。OOP 達到了軟件工程的三個主要目標:重用性、靈活性和擴展性。爲了實現總體運算,每一個對象都可以接收信息、處理數據和向其它對象發送信息。OOP 主要有如下的概念和組件:
組件 -數據和功能一塊兒在運行着的計算機程序中造成的單元,組件在 OOP 計算機程序中是模塊和結構化的基礎。
抽象性 -程序有能力忽略正在處理中信息的某些方面,即對信息主要方面關注的能力。
封裝 -也叫作信息封裝:確保組件不會以不可預期的方式改變其它組件的內部狀態;只有在那些提供了內部狀態改變方法的組件中,才能夠訪問其內部狀態。每類組件都提供了一個與其它組件聯繫的接口,並規定了其它組件進行調用的方法。
多態性 -組件的引用和類集會涉及到其它許多不一樣類型的組件,並且引用組件所產生的結果得依據實際調用的類型。
繼承性 - 容許在現存的組件基礎上建立子類組件,這統一併加強了多態性和封裝性。典型地來講就是用類來對組件進行分組,並且還能夠定義新類爲現存的類的擴展,這樣就能夠將類組織成樹形或網狀結構,這體現了動做的通用性。
146.UDP鏈接和TCP鏈接的異同。
答:前者只管傳,無論數據到不到,無須創建鏈接.後者保證傳輸的數據準確,需要連結.
或者
TCP是傳輸控制協議,提供的是面向鏈接的,是可靠的,字節流服務,當用戶和服務器彼此進行數據交互的時候,必須在他們數據交互前要進行 TCP鏈接以後才能傳輸數據。TCP提供超時重撥,檢驗數據功能。
UDP是用戶數據報協議,是一個簡單的面向數據報的傳輸協議,是不可靠的鏈接。
147.經常使用的調用web service方法有哪些?
答:
能夠從瀏覽器、ASP頁或其餘WEB服務調用能夠使用HTTP-GET HTTP-POST訪問WEB服務也能夠從ASP頁或其餘WEB服務向其餘WEB服務發出SOAP請求HTTP-GET HTTP-POST SOAP 使用WEB服務代理
148.私有程序集與共享程序集有什麼區別?
一個私有程序集一般爲單個應用程序所使用,而且存儲於這個應用程序所在的目錄之中,或此目錄下面的一個子目錄中。共享程序集一般存儲在全局程序集緩存(Global Assembly Cache)之中,這是一個由.NET運行時所維護的程序集倉庫。共享程序集一般是對許多應用程序都有用的代碼庫,好比.NET Framework類。
149.CLR與IL分別是什麼含義?
CLR:公共語言運行時,相似於Java中的JVM,Java虛擬機;在.Net環境下,各類編程語言使用一種共同的基礎資源環境,這就是CLR,CLR將直接與*做系統進行通訊,而編程語言如C#.NET將盡可能避免直接與*做系統直接通訊,增強了程序代碼的執行安全性,能夠這樣看:CLR就是具體的編程語言如:C#.NET與*做系統之間的翻譯,同時它爲具體的編程語言提供了許多資源:
IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;全部.NET源代碼(無論用哪一種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成爲機器碼,被解釋及執行。
150.請解釋ASP.NET中以什麼方式進行數據驗證
答:Asp.net 中有非空驗證,比較驗證,取值範圍驗證,正則表達式驗證及客戶自定義驗證五大控件,另還有一個集中驗證信息處理控件
150.請解釋web.config文件中的重要節點
appSettings包含自定義應用程序設置。
system.web 系統配置
compilation動態調試編譯設置
customErrors自定義錯誤信息設置
authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization受權, 此節設置應用程序的受權策略.
151.請解釋ASP.NET中的web頁面與其隱藏類之間的關係?
一個ASP.NET頁面通常都對應一個隱藏類,通常都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx的頁面聲明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 代表經編譯此頁面時使用哪個代碼文件
Inherits="T1.Tst1" 表用運行時使用哪個隱藏類。
152.什麼是viewstate,可否禁用?是否所用控件均可以禁用?
Viewstate是保存狀態的一種機制,EnableViewState屬性設置爲false便可禁用。
153.發現不能讀取頁面上的輸入的數據時頗有多是什麼緣由形成的?怎麼解決?
頗有多是在Page_Load中數據處理時沒有進行Page的IsPostBack屬性判斷
154.請解釋什麼是上下文對象,在什麼狀況下要使用上下文對象
上下文對象是指HttpContext類的Current 屬性,當咱們在一個普通類中要訪問內置對象(Response,Request,Session,Server,Application等)時就要以使用此對象
155.請簡述一下用Socket進行同步通信編程的詳細步驟
一、在應用程序和遠程設備中使用協議和網絡地址初始化套接字
二、在應用程序中經過指定端口和地址創建監聽
三、遠程設備發出鏈接請求
四、應用程序接受鏈接產生通訊scoket
五、應用程序和遠程設備開始通信(在通信中應用程序將掛起直到通信結束)
六、通信結束,關閉應用程序和遠程設備的Socket回收資源
156.能用foreach遍歷訪問的對象須要實現?
答:須要實現IEnumerable接口和GetEnumerator ()方法。
157.維護數據庫的完整性、一致性、你喜歡用觸發器仍是自寫業務邏輯?爲何
答:儘量用約束(包括CHECK、主鍵、惟一鍵、外鍵、非空字段)實現,這種方式的效率最好;其次用觸發器,這種方式能夠保證不管何種業務系統訪問數據庫都能維持數據庫的完整性、一致性;最後再考慮用自寫業務邏輯實現,但這種方式效率最低、編程最複雜,當爲下下之策
158.ASP.NET與ASP相比,主要有哪些進步?
答 asp.net 能夠使用強類型語言
頁面是編譯,執行速度快, 增長安全性和可靠性
,經過繼承機制來支持代碼的重用,提供聲明性服務器控件減小代碼行數
Asp須要解釋,執行速度慢,重用代碼不方便,沒有調試機制
159.用最有效的方法算出等已8對於幾?
答:2<<3.
160.請解釋轉發與跳轉的區別?
答:Transfer是轉發包括HttpHandler對象,Redirect是跳轉。
Server.Transfer(ASP 3.0 以上)和Response.Redirect 在之前的ASP中就存在了,Page.Navigate是ASP.NET Beta 1 提供的新功能,它們之間的區別在於:
一、 Server.Transfer - 用於把處理的控制權從一個頁面轉移到另外一個頁面,在轉移的過程當中,沒有離開服務器,內部控件(如:request, session 等)的保存的信息不變,所以,你能從頁面 A 跳到頁面 B 而不會丟失頁面 A 中收集的用戶提交信息。此外,在轉移的過程當中,瀏覽器的 URL 欄不變。
二、Response.Redirect - 發送一個 HTTP 響應到客戶端,告訴客戶端跳轉到一個新的頁面,客戶端再發送跳轉請求到服務器。使用此方法時,將沒法保存全部的內部控件數據,頁面 A 跳轉到頁面 B,頁面 B 將沒法訪問頁面 A 中 Form 提交的數據。
三、Page.Navigate - Page.Navigate 實現的功能和 Response.Redirect 差很少,它實際上包括三個步驟:首先調用 Response.Redirect,其次依次卸載全部的控件,最後調用 Response.End。
161.請解釋ASP.NET中button、linkbutton、imagebutton及hyperlink這四個控件之間的區別。
答: button和imagebutton 將數據傳遞迴服務器
hyperlinK 頁面之間的導航
linkbutton主要用於將數據保存到服務器或訪問服務器上的數據
162.若是出現ASP.NET中的事件不能觸發可能因爲什麼緣由形成?
若是在web窗體中使用了驗證控件,那麼當驗證控件中的驗證邏輯沒有經過時通常會使事件不能觸發執行。
若是使用了諸如Textchange、Checkchange、Selectedindexchanged這類事件並在
服務器端進行了事件處理,可是沒有設置AutoPostBack屬性時會使事件不能觸發執行。
163.什麼狀況用HTML控件,什麼狀況用WEB控件,並比較二者差異
答:客戶端表現用html控件,若是想和server端交互,那麼加上runat=server,它就成了服務器端控件,但它沒有web控件的不少方法和屬性,若是你須要用到,那麼仍是用webcontrols。
164.你在寫複雜web界面的時候遇到的最大困難是哪些方面
其實,複雜頁面最大的困難並不是如何畫出此界面,而是如何讓此界面清晰有條理.咱們作頁面,並不是僅顯示數據,而是要準確/清晰地顯示數據,想一想看,若是用戶要在此頁面中查找一個數據,卻雜亂無章,難以查看,你說用戶會滿意嗎?
166.NET裏面的datagrid翻頁大可能是先把數據讀所有取到dataset裏面,可是遇到10W條數據以上,這樣的翻頁事件開銷會很大,頁面執行起來反映很慢,你有什麼好方法解決?
在數據量大的時候,有兩個解決辦法
1.使用存儲過程.而且,並不是由於存儲過程比較快的緣由.因爲在數據庫內部的存儲過程,可以實現一些特殊的功能,好比說,能夠直接根據當前的排序結果,僅僅取須要的幾條數據,如此,不管數據是多少,它僅僅取須要的幾條.
2.在實際的操做中,取出的數據,並不是你有10萬條,它就會把10萬條所有取出來,而是受限於服務器的緩存,其實一次通常僅取1000條左右的記錄,不管你數據多少,它僅會一次取這麼多出來.因此,配合分頁控件,再配合.NET提供的加載N條數據的方法,數據量大的狀況下,不見得就會慢.
據我測試,真正慢的,是在取數據總共多少條這個步驟上.此操做在數據少時,沒有影響,但在百萬條記錄以上時,求取數據總數,耗時就會大量增長.因此,大數據量條件下,即不該再顯示"共幾條/當前第幾條"這樣的信息.
167.權限控制方面問題:
從面向對象的角度講,若是一個程序中,沒有應用角色及角色組的話,那麼這個程序是不合格的.通常來講,權限是由權限及流程角色組合而來的,若是僅有權限而沒有角色,那麼這個控制不靈活;若是僅有角色沒有權限,那麼這個控制不細緻.
固然,用SESSION確定是要的,但這個SESSION,應當只記錄當前用戶的我的信息,好比他的用戶名.在須要判斷的時候,根據他的用戶名(惟一),至數據庫中去取他的權限,或在類中編寫權限/角色,根據此用戶的用戶號及當前模塊號,計算當前用戶是否對當前頁面有操做權限.不過,若是把用戶的權限也取出來放在SESSION中的話,這種作法通常僅在很小的網站中使用,稍大一點的系統,基本不容許這麼作,並且也作不到。
168.如何理解.net中的垃圾回收機制?
答:.NET中的垃圾回收機制是引用程序對內存的回收和釋放。當每次用new關鍵字建立一個對象時,運行庫都要從託管堆中爲其分配內存,由於空間是有限的,最終垃圾回收機制是要回收不用的內存的。已釋放內存,從新使用。
169.解釋一下UDDI、WSDL的意義及其做用?
答:UDDI是統一描述集成協議,是一套基於Web的,分佈式的,爲WEB服務提供的信息註冊的實現標準規範,同時爲也是爲企業自己提供的 Web服務註冊以讓別的企業可以發現並訪問的協議標準。提供了基於標準的規範,用於描述和發現服務,還提供了一組基於因特網的實現。
WSDL這是一個基於XML的描述WEB服務的接口。
170.在.NET中全部類的基類是?
答:object。
171.WEB控件能夠激發服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什麼?爲何要使用自動傳回。
在web控件發生事件時,客戶端採用提交的形式將數據交回服務端,服務端先調用Page_Load事件,而後根據傳回的狀態信息自動調用服務端事件自動傳回是當咱們在點擊客戶端控件時,採用提交表單的形式將數據直接傳回到服務端
只有經過自動傳回才能實現服務端事件的機制,若是沒有自動回傳機制就只能調用客戶端事件,而不能調用服務端事件
172.值類型和引用類型的區別?
答:值類型的值是存放在堆棧中的,改變其值,不改變變量原有的值,而引用類型的值是存放在棧中的,其引用的地址是存放在堆棧中的,改變其值也就改變了變量原有的值。值類型不容許包含null值,然而可空類型能夠將null賦值給值類型。
173.什麼叫應用程序域?什麼是託管代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別做何解釋?
答:應用程序域:就是爲安全性,可靠性,隔離性,和版本控制,及卸載程序提供的隔離邊界。它一般由運行庫宿主建立,應用程序域提供了一個更安全,用途更廣的處理單元。
託管代碼:使用CLR編譯語言編輯器開發編寫的代碼就叫託管代碼。
裝箱和拆箱:是把值類型轉換爲引用類型的過程,是隱式的,相反的過程就是拆箱,是顯式的。
CTS是公共類型系統,CLS是公共語言規範,CLR公共語言運行庫。
強類型系統:每一個變量和對象都必須具備申明類型。
174.構造器Constructor是否能夠被繼承?是否能夠被Override?
答:Constructor不能夠被繼承,所以不能被重寫(Overriding),但能夠被重載(Overloading)。
175.當一個線程進入一個對象的方法後,其它線程是否能夠進入該對象的方法
答:不能夠,一個對象的方法只能由一個線程訪問。
176.接口是否能夠繼承接口?抽象類是否能夠實現接口?抽象類是否能夠繼承實體類?
答:接口是能夠繼承接口的,抽象類是能夠實現接口的,抽象類能夠繼承實體類,可是有個條件,條件是,實體類必需要有明確的構造函數。
177.談談final,finally,finallize的區別?
答:final用於申明屬性,方法和類,表示屬性不可變,方法不能夠被覆蓋,類不能夠被繼承。
Finally是異常處理語句結構中,表示老是執行的部分。
Finallize表示是object類一個方法,在垃圾回收機制中執行的時候會被調用被回收對象的方法。
如下是08年3月新增面試題
1. asp.net中web應用程序獲取數據的流程:
A.Web Page
B.Fill
C.Sql05
D.Data Sourse
E.DataGrid
F.DataSet
G.Select and Connect
Commands H.Sql Data Adapter
答案:a,e,d,f,h,g,b,c
2. Asp.net執行模式中各組件填入到對應位置:
A.Output Cache
B.Parser
C.Assembly Cache
D.IE
E.Memory
F.Compiler
WebPage被第一次請求時:
D->__->__->__->__->D
WebPage被第二次請求時:
D->__->__->D
WebPage的頁面輸出緩存被打開時:
D->__->D
答案:
WebPage被第一次請求時:
D->_b_->_f_->_a_->_e_->D
WebPage被第二次請求時:
D->_b_->_e_->D
WebPage的頁面輸出緩存被打開時:
D->_a_->D
3.兩個數組[n] [m] n>m 第一個數組的數字無序排列第二個數組爲空取出第一個數組的最小值放到第二個數組中第一個位置, 依次類推. 不能改變A數組,不能對之進行排序,也不能夠倒到別的數組中。
int[] a = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };
int[] b = new int[10];
int intTmp = a[0], intMaxNum;
for (int i = 0; i < a.Length; i++)
{
intTmp = a[i] > intTmp ? a[i] : intTmp;
}
intMaxNum = intTmp;
for (int j = 0; j < b.Length; j++)
{
for (int i = 0; i < a.Length; i++)
{
if (j == 0)
intTmp = a[i] < intTmp ? a[i] : intTmp;
else
{
if (a[i] > b[j - 1])
intTmp = a[i] < intTmp ? a[i] : intTmp;
}
}
b[j] = intTmp;
intTmp = intMaxNum;
}
foreach (int bb in b)
{
Console.WriteLine(bb);
}
Console.ReadLine();
4.請將字符串"I am a student"按單詞逆序輸出如"student a am I"
string S = "I am a student";
char[] C = new char[] { ' '};
string[] n =S.Split(C);
int length = S.Length;
for (int i =length-1 ; i >=0; i--)
{
Console.Write(n[i]);
if (i != 0)
{
Console.Write(" ");
}
}
在網上找來的,但願對你們有所幫助。
1 (1)面向對象的語言具備__繼承性_性、_封裝性_性、_多態性 性。
(2)能用foreach遍歷訪問的對象須要實現 _ IEnumerable 接口或聲明_ GetEnumerator 方法的類型。1.c#中的三元運算符是__?:__
2.當整數a賦值給一個object對象時,整數a將會被__裝箱___?
3.類成員有__3__種可訪問形式?
4.public static const int A=1;這段代碼有錯誤麼?是什麼? const成員都是static因此應該去掉static
5.float f=-123.567F;
int i=(int)f;
i的值如今是_-123____?
6.利用operator聲明且僅聲明瞭==,有什麼錯誤麼? 要同時修改Equale和GetHash() ? 重載了"==" 就必須重載 "!="
7.委託聲明的關鍵字是___ delegate ___?
8.用sealed修飾的類有什麼特色?不可被繼承
9.在Asp.net中全部的自定義用戶控件都必須繼承自_ System.Web.UI.UserControl _______?
10.在.Net中全部可序列化的類都被標記爲__[serializable]___?
11.在.Net託管代碼中咱們不用擔憂內存漏洞,這是由於有了_ gC __?
12.下面的代碼中有什麼錯誤嗎?_ abstract override 是不能夠一塊兒修飾______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
13.當類T只聲明瞭私有實例構造函數時,則在T的程序文本外部,_不能夠_(能夠 or 不能夠)從T派生出新的類,_不能夠_(能夠 or 不能夠)直接建立T的任何實例。
14.下面這段代碼有錯誤麼?case():不行 default;
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
dufault;
CaseTwo();
break;
}
15.在.Net中,類System.Web.UI.Page 能夠被繼承麼?能夠
2. 不定項選擇:
(1) 如下敘述正確的是: B C
A. 接口中能夠有虛方法。B. 一個類能夠實現多個接口。 C. 接口不能被實例化。 D. 接口中能夠包含已實現的方法。
(2) 從數據庫讀取記錄,你可能用到的方法有:B C D
A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader
2.對於一個實現了IDisposable接口的類,如下哪些項能夠執行與釋放或重置非託管資源相關的應用程序定義的任務?(多選) ( ABC )
A.Close B.Dispose C.Finalize
D.using E.Quit
3.如下關於ref和out的描述哪些項是正確的?(多選) ( ACD )
A.使用ref參數,傳遞到ref參數的參數必須最早初始化。
B.使用out參數,傳遞到out參數的參數必須最早初始化。
C.使用ref參數,必須將參數做爲ref參數顯式傳遞到方法。
D.使用out參數,必須將參數做爲out參數顯式傳遞到方法。
1.在對SQL Server 數據庫操做時應選用(A)。
a)SQL Server .NET Framework 數據提供程序;
b)OLE DB .NET Framework 數據提供程序;
c)ODBC .NET Framework 數據提供程序;
d)Oracle .NET Framework數據提供程序;
2.下列選項中,(C)是引用類型。
a)enum類型 b)struct類型 c)string類型 d)int類型
3.關於ASP.NET中的代碼隱藏文件的描述正確的是(C)
a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的建立用於與窗體交互。編程邏輯惟一與用戶界面不一樣的文件中。該文件稱做爲「代碼隱藏」文件,若是用C#建立,該文件將具備「.ascx.cs」擴展名。
b)項目中全部Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。
c)項目中全部的Web窗體頁的代碼隱藏文件都被編譯成項目動態連接庫(.dll)文件。
d)以上都不正確。
4.如下描述錯誤的是(A)
a)在C++中支持抽象類而在C#中不支持抽象類。
b)C++中可在頭文件中聲明類的成員而在CPP文件中定義類的成員,在C#中沒有頭文件而且在同一處聲明和定義類的成員。
c)在C#中可以使用 new 修飾符顯式隱藏從基類繼承的成員。
d)在C#中要在派生類中從新定義基類的虛函數必須在前面加Override。
5.C#的數據類型有(A)
a)值類型和調用類型; b)值類型和引用類型;c)引用類型和關係類型;d)關係類型和調用類型;
6.下列描述錯誤的是(D)
a)類不能夠多重繼承而接口能夠;
b)抽象類自身能夠定義成員而接口不能夠;
c)抽象類和接口都不能被實例化;
d)一個類能夠有多個基類和多個基接口;
7.在DOM中,裝載一個XML文檔的方法(D)
a)save方法 b)load方法 c)loadXML方法 d)send方法
8.下列關於構造函數的描述正確的是(C)
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]的值是(D)。
a)9 b)2 c)6 d)越界
11.接口是一種引用類型,在接口中能夠聲明(A),但不能夠聲明公有的域或私有的成員變量。
a)方法、屬性、索引器和事件; b)方法、屬性信息、屬性; c)索引器和字段; d)事件和字段;
12.ASP.NET框架中,服務器控件是爲配合Web表單工做而專門設計的。服務器控件有兩種類型,它們是(A )
a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件 d)HTML控件和IIS控件
13.ASP.NET中,在Web窗體頁上註冊一個用戶控件,指定該控件的名稱爲」Mike」,正確的註冊指令爲( D)
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()方法,下面敘述錯誤的是(C)。
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控件的屬性和事件的描述不正確的是(D)。
a)Buttons屬性表示ToolBar控件的全部工具欄按鈕
b)ButtonSize屬性表示ToolBar控件上的工具欄按鈕的大小,如高度和寬度
c)DropDownArrows屬性代表工具欄按鈕(該按鈕有一列值須要如下拉方式顯示)旁邊是否顯示下箭頭鍵
d)ButtonClick事件在用戶單擊工具欄任何地方時都會觸發
17.在ADO.NET中執行一個存儲過程時,若是要設置輸出參數則必須同時設置參數的方向和(B ),必要時還要設置參數尺寸。
a)大小; b)上限; c)初始值; d)類型;
18.若是將窗體的FormBoderStyle設置爲None,則( B)。
a)窗體沒有邊框並不能調整大小; b)窗體沒有邊框但能調整大小;
c)窗體有邊框但不能調整大小; d)窗體是透明的;
19.若是要將窗體設置爲透明的,則( B)
a)要將FormBoderStyle屬性設置爲None; b)要將Opacity屬性設置爲小於100%得值;
c)要將locked 屬性設置爲True; d)要將 Enabled屬性設置爲True;
20.下列關於C#中索引器理解正確的是(B/C )
a)索引器的參數必須是兩個或兩個以上 b)索引器的參數類型必須是整數型
c)索引器沒有名字 d)以上皆非
21.下面描述錯誤的是( C/D)。
a)窗體也是控件; b)窗體也是類; c)控件是從窗體繼承來的; d)窗體的父類是控件類;
22.要對註冊表進行操做則必須包含( D)。
a)System.ComponentModel命名空間; b)System.Collections命名空間;
c)System.Threading命名空間; d)Microsoft.Win32命名空間;
23.要建立多文檔應用程序,須要將窗體的(D )屬性設爲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的描述錯誤的是(D)。
a)XML提供一種描述結構化數據的方法;
b)XML 是一種簡單、與平臺無關並被普遍採用的標準;
c)XML文檔可承載各類信息;
d)XML只是爲了生成結構化文檔;
1.裝箱、拆箱操做發生在: ( C )
A.類與對象之間 B.對象與對象之間
C.引用類型與值類型之間 D.引用類型與引用類型之間
2.用戶類若想支持Foreach語句須要實現的接口是: ( A )
A.IEnumerableB.IEnumerator
C.ICollectionD.ICollectData
3..Net Framework經過什麼與COM組件進行交互操做?( C )
A.Side By SideB.Web Service
C.InteropD.PInvoke
4..Net依靠如下哪一項技術解決COM存在的Dll Hell問題的?( A )
A.Side By SideB.Interop
C.PInvokeD.COM+
5.裝箱與拆箱操做是不是互逆的操做?( B )
A.是B.否
6.如下哪一個是能夠變長的數組?( D )
A.Array B.string[]
C.string[N] D.ArrayList
7.用戶自定義異常類須要從如下哪一個類繼承:( A )
A.Exception B.CustomException
C.ApplicationException D.BaseException
8.如下代碼段中可否編譯經過?請給出理由。
try
{
}
catch(FileNotFoundException e1)
{
}
catch(Exception e2)
{
}
catch(IOException e3)
{
}
catch
{
}
9.對於一個實現了IDisposable接口的類,如下哪些項能夠執行與釋放或重置非託管資源相關的應用程序定義的任務?(多選) ( ABC )
A.Close B.DisposeC.Finalize
D.using E.Quit
10.Net依賴如下哪項技術實現跨語言互用性?( C )
A.CLR B.CTS C.CLS D.CTT
11.請問: String類與StringBuilder類有什麼區別?爲何在.Net類庫中要同時存在這2個類?(簡答)
若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.NET框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。
12.如下哪一個類是int的基類?( )
A.Int32 B.Object C.ValueType D.Int16
2、C# 部分*
13.如下哪些能夠做爲接口成員?(多選) ( ABDE )
A.方法B.屬性C.字段D.事件E.索引器
F.構造函數G.析構函數
14.如下關於ref和out的描述哪些項是正確的?(多選) ( ACD )
A.使用ref參數,傳遞到ref參數的參數必須最早初始化。
B.使用out參數,傳遞到out參數的參數必須最早初始化。
C.使用ref參數,必須將參數做爲ref參數顯式傳遞到方法。
D.使用out參數,必須將參數做爲out參數顯式傳遞到方法。
15.「訪問範圍限定於此程序或那些由它所屬的類派生的類型」是對如下哪一個成員可訪問性含義的正確描述?( B )
A.public B.protected C.internal D.protected internal
16.class Class1
{
private static int count = 0;
static Class1()
{
count++;
}
public Class1()
{
count++;
}
}
Class1 o1 = new Class1();
Class1 o2 = new Class1();
請問,o1.Count的值是多少?( C )
A.1 B.2 C.3 D.4
17.abstract class BaseClass
{
public virtual void MethodA()
{
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA(string arg)
{
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
Console.WriteLine(o.MethodA());
}
}
請問,o.MethodA調用的是: ( A )
A.BaseClass.MethodAB.Class2.MethodA
C.Class1.MethodAD.都不是
18.請敘述屬性與索引器的區別。
屬性 索引器
經過名稱標識。 經過簽名標識。
經過簡單名稱或成員訪問來訪問。 經過元素訪問來訪問。
能夠爲靜態成員或實例成員。 必須爲實例成員。
屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具備與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 參數。 除了 value 參數外,索引器的 set 訪問器還具備與索引器相同的形參表。
19.請敘述const與readonly的區別。
每個class至多隻能夠定義一個static構造函數,而且不容許增長訪問級別關鍵字,參數列必須爲空。
爲了避免違背編碼規則,一般把static數據成員聲明爲private,而後經過statci property提供讀寫訪問。
const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。
const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。由於它是在編譯時就須要徹底評估。
const成員能夠使用另外一個const成員來初始化,前提是二者之間沒有循環依賴。
readonly在運行期評估賦值,使咱們得以在確保「只讀訪問」的前提下,把object的初始化動做推遲到運行期進行。
readonly 關鍵字與 const 關鍵字不一樣: const 字段只能在該字段的聲明中初始化。readonly 字段能夠在聲明或構造函數中初始化。所以,根據所使用的構造函數,readonly 字段可能具備不一樣的值。另外,const 字段是編譯時常數,而 readonly 字段可用於運行時常數。
readonly 只能在聲明時或者構造函數裏面初始化,而且不能在 static 修飾的構造函數裏面。
21.您須要建立一個ASP.NET應用程序,公司考慮使用Windows身份認證。
全部的用戶都存在於AllWin這個域中。您想要使用下列認證規則來配置這個應用程序:
a、 匿名用戶不容許訪問這個應用程序。
b、 全部僱員除了Tess和King都容許訪問這個應用程序。
請問您應該使用如下哪個代碼段來配置這個應用程序?( A )
A. <authorization>
<deny users=」allwin\tess, allwin\king」>
<allow users=」*」>
<deny users=」?」>
</authorization>
B. <authorization>
<allow users=」*」>
<deny users=」allwin\tess, allwin\king」>
<deny users=」?」>
</authorization>
C. <authorization>
<deny users=」allwin\tess, allwin\king」>
<deny users=」?」>
<allow users=」*」>
</authorization>
D. <authorization>
<allow users=」allwin\tess, allwin\king」>
<allow users=」*」>
</authorization>
E.<authorization>
<allow users=」*」>
<deny users=」allwin\tess, allwin\king」>
</authorization>
22.您要建立一個顯示公司員工列表的應用程序。您使用一個DataGrid控件顯示員工的列表。您打算修改這個控件以便在這個Grid的Footer顯示員工合計數。請問您應該怎麼作?( C? )
A.重寫OnPreRender事件,當Grid的Footer行被建立時顯示合計數。
B.重寫OnItemCreated事件,當Grid的Footer行被建立時顯示合計數。
C.重寫OnItemDataBound事件,當Grid的Footer行被建立時顯示合計數。
D. 重寫OnLayout事件,當Grid的Footer行被建立時顯示合計數。
23.您要建立ASP.NET應用程序用於運行AllWin公司內部的Web站點,這個應用程序包含了50個頁面。您想要配置這個應用程序以便當發生一個HTTP代碼錯誤時它能夠顯示一個自定義的錯誤頁面給用戶。您想要花最小的代價完成這些目標,您應該怎麼作?(多選)( CD )
A.在這個應用程序的Global.asax文件中建立一個Application_Error過程去處理ASP.NET代碼錯誤。
B.在這個應用程序的Web.config文件中建立一個applicationError節去處理ASP.NET代碼錯誤。
C.在這個應用程序的Global.asax文件中建立一個CustomErrors事件去處理HTTP錯誤。
D.在這個應用程序的Web.config文件中建立一個CustomErrors節去處理HTTP錯誤。
E.在這個應用程序的每一頁中添加一個Page指示符去處理ASP.NET 代碼錯誤。
F. 在這個應用程序的每一頁中添加一個Page指示符去處理ASP.NET HTTP錯誤。
24.您的公司有一個DB Server,名爲AllWin,其上裝了MS SQLSERVER 2000。如今須要您寫一個數據庫鏈接字符串,用以鏈接AllWin上SQL SERVER中的一個名爲PubBase實例的Test庫。請問,應該選擇下面哪個字符串?( B )
A. 「Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI」
B. 「Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI」
C. 「Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI」
D. 「Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI」
25.您爲AllWin公司建立了一個ASP.NET應用程序。這個應用程序調用一個 Xml Web Service。這個 Xml Web Service 將返回一個包含了公司僱員列表的DataSet對象。請問您該如何在這個程序中使用這個 Xml Web Service?( ? )
A.在「引用」對話框的.Net標籤中選擇 System.Web.Services.dll。
B.在「Web引用」對話框中輸入這個 XML Web service 的地址。
C.在您的 Global.asax.cs 中添加一條 using 語句並指定這個 XML Web service 的地址。
D.在您的 Global.asax.cs 中寫一個事件處理器導入這個 Xml Web Service 相應的 .wsdl 和 .disco 文件。
26.您要建立一個ASP.NET應用程序在DataGrid控件中顯示一個通過排序的列表。產品數據被存放於一個名爲PubBase的Microsoft SQL Server 數據庫。每一個產品的主鍵是ProductID,Numeric型而且每一個產品有一個字母描述字段,名爲ProductName。您使用一個SqlDataAdapter對象和一個SqlCommand對象經過調用一個存儲過程從數據庫中獲取產品數據。您將SqlCommand對象的CommandType屬性設置爲CommandType.StoredProcedure,並將它的CommandText屬性設置爲procProductList。您成功的獲取了一個DataTable對象,其中是已經按ProductID降序排列的產品列表。您打算顯示以相反的字母順序排列的ProductName,請問該怎麼作? ( B )
A. 將SqlCommand對象的CommandType屬性修改成CommandType.Text,將CommandText屬性修改成」SELECT * FROM procProductList ORDER BY ProductName DESC」。而後將這個DataTable對象綁定到DataGrid控件。
B. 建立一個基於這個DataTable對象的新的DataView並將這個DataView的Sort屬性設置爲「ProductName DESC」。而後將這個DataView對象綁定到DataGrid控件。
C. 將DataGrid控件的AllowSorting屬性設置爲True,並將DataGridColumn的SortExpression屬性設置爲 「ProductName DESC」.以顯示ProductName。而後將這個DataTable對象綁定到DataGrid控件。
D. 將DataTable對象的DisplayExpression屬性設置爲 「ORDER BY ProductName DESC」.。而後將這個DataTable對象綁定到DataGrid控件。
76.C#代碼實現,確保windows程序只有一個實例(instance)
///<summary>
///應用程序的主入口點。
///</summary>
[STAThread]
staticvoid Main()
{
//防止程序屢次運行
if(!OneInstance.IsFirst("GetPayInfo"))
{
MessageBox.Show ("警告:程序正在運行中! 請不要重複打開程序!可在右下角系統欄找到!","程序錯誤提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
Application.Run(new Form1());
}
// ******************* 防止程序屢次執行 **************************
publicabstractclass OneInstance
{
///<summary>
///判斷程序是否正在運行
///</summary>
///<param name="appId">程序名稱</param>
///<returns>若是程序是第一次運行返回True,不然返回False</returns>
publicstaticbool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}
3. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。
private : 私有成員, 在類的內部才能夠訪問。protected : 保護成員,該類內部和繼承類中能夠訪問。public : 公共成員,徹底公開,沒有訪問限制。internal: 在同一命名空間內能夠訪問。
4. 寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer, 以自動增加的ID做爲主鍵, 注意:ID可能不是連續的。)
select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
5 .列舉ASP.NET 頁面之間傳遞值的幾種方式。
1. 使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session變量
3.使用Server.Transfer
2。請說明在.net中經常使用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被僞造
input ttype="hidden" 簡單,可能被僞造
url參數簡單,顯示於地址欄,長度有限
數據庫穩定,安全,但性能相對弱
2.override與重載的區別
Override用來重寫父類的方法,重載使用相同名的方法或操做符擁有不一樣類型的參數
3、.net的錯誤處理機制是什麼
.net錯誤處理機制採用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的Catch爲止。
4、C#中接口和類的異同
接口和類都是類,不一樣的事,接口只包含方法或屬性的聲明,不包含具體實現方法的代碼,接口能夠實現多繼承,而類只能是單繼承,繼承接口的類必須實現接口中聲明的方法或屬性。接口主要定義一種規範,統一調用方法,在大型項目中接口正發揮日益重要的做用。
4、DataReader和DataSet的異同
DataReader和DataSet最大的區別在於,DataReader使用時始終佔用SqlConnection,在線操做數據庫..任何對SqlConnection的操做都會引起DataReader的異常..由於DataReader每次只在內存中加載一條數據,因此佔用的內存是很小的..由於DataReader的特殊性和高性能.因此DataReader是隻進的..你讀了第一條後就不能再去讀取第一條了..
DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接..由於DataSet將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行回傳更新操做...
1. 在c#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?
Using 引入一個名子空間,或在使用了一個對像後自動調用其IDespose,New 實例化一個對像,或修飾一個方法,表此方法徹底重寫此方法
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()建立B的實例時,產生什麼輸出?X=1,Y=0
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);
}
}
產生的輸出結果是什麼?x=1,y=2
4.談談類和結構的區別?
最大區別一個是引用類型,一個是值類型 默認成員訪問爲public是另一個區別
1. 在.net(C# or vb.net)中如何得到當前窗體或控件的句柄,特別是控件自己的句柄(請列舉)。
this(C#) Me(vb.net).
2在.net(C# or vb.net)中如何用戶自定義消息,並在窗體中處理這些消息。
在form中重載DefWndProc函數來處理消息:
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);///顯示一個消息框
break;
case USER:
處理的代碼
default:
base.DefWndProc(ref m);///調用基類函數處理非自定義消息。
break;
}
}
3. 在.net(C# or vb.net)如何啓動另外一個程序。process
4. 在.net(C# or vb.net)中如何取消一個窗體的關閉
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}
5. 在.net(C# or vb.net)中,Appplication.Exit 仍是 Form.Close有什麼不一樣?
答案:一個是退出整個應用程序,一個是關閉其中一個form
6. 在C#中有一個double型的變量,好比10321.5,好比122235401.21644,做爲貨幣的值如何按各個不一樣國家的習慣來輸出。好比美國用$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");爲英國貨幣類型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);
7. 某一密碼僅使用K、L、M、N、O共5個字母,密碼中的單詞從左向右排列,密碼單詞必須遵循以下規則:
(1)密碼單詞的最小長度是兩個字母,能夠相同,也能夠不一樣
(2) K不多是單詞的第一個字母
(3)若是L出現,則出現次數不止一次
(4) M不能使最後一個也不能是倒數第二個字母
(5) K出現,則N就必定出現
(6) O若是是最後一個字母,則L必定出現
問題一:下列哪個字母能夠放在LO中的O後面,造成一個3個字母的密碼單詞?
A) K B)L C) M D) N
答案:B
問題二:若是能獲得的字母是K、L、M,那麼可以造成的兩個字母長的密碼單詞的總數是多少?
A)1個 B)3個 C)6個 D)9個
答案:A
問題三:下列哪個是單詞密碼?
A) KLLN B) LOML C) MLLO D)NMKO
答案:C
8. 62-63=1 等式不成立,請移動一個數字(不能夠移動減號和等於號),使得等式成立,如何移動?
答案:62移動成2的6次方
new有幾種用法
第一種:new Class();
第二種:覆蓋方法
public new XXXX(){}
第三種:new 約束指定泛型類聲明中的任何類型參數都必須有公共的無參數構造函數。
2.如何把一個array複製到arrayList裏
foreach( object o in array )arrayList.Add(o);
3.datagrid.datasouse能夠鏈接什麼數據源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList
4.概述反射和序列化
反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您能夠使用反射動態地建立類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。而後,能夠調用類型的方法或訪問其字段和屬性
序列化:序列化是將對象轉換爲容易傳輸的格式的過程。例如,能夠序列化一個對象,而後使用 HTTP 經過 Internet 在客戶端和服務器之間傳輸該對象。在另外一端,反序列化將從該流從新構造對象。
5.概述o/r mapping 的原理
利用反射,配置 將類於數據庫表映射
7.用sealed修飾的類有什麼特色
sealed 修飾符用於防止從所修飾的類派生出其它類。若是一個密封類被指定爲其它類的基類,則會發生編譯時錯誤。
密封類不能同時爲抽象類。
sealed 修飾符主要用於防止非有意的派生,可是它還能促使某些運行時優化。具體說來,因爲密封類永遠不會有任何派生類,因此對密封類的實例的虛擬函數成員的調用能夠轉換爲非虛擬調用來處理。
11.詳述.NET裏class和struct的異同!
class:放在 ? struct放在?
struct值傳遞
類與結構有不少類似之處:結構能夠實現接口,而且能夠具備與類相同的成員類型。然而,結構在幾個重要方面不一樣於類:結構爲值類型而不是引用類型,而且結構不支持繼承。結構的值存儲在「在堆棧上」或「內聯」。細心的程序員有時能夠經過聰明地使用結構來加強性能。
12.概述.NET裏對 remoting 和 webservice 兩項技術的理解和實際中的應用。
遠程邏輯調用,remoing接口只能用在.net中
13.什麼是code-behind技術 aspx and cs
14.概述三層結構體系 web/business/dataaccess
15.asp.net如何實現MVC模式,舉例說明! web/business/dataaccess
2.什麼是ASP.net中的用戶控件
答:用戶控件就是.ascx擴展名的東西嘍,能夠拖到不一樣的頁面中調用,以節省代碼.好比登錄可能在多個頁面上有,就能夠作成用戶控件,可是有一個問題就是用戶控件拖到不一樣級別的目錄下后里面的圖片等的相對路徑會變得不許確,須要自已寫方法調整.
3.什麼叫應用程序域?什麼是受管制的代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別做何解釋?
答:裝箱就是把值類型轉成引用類型,從MS IL角度看好像是boxing,沒記錯的話是把值從堆棧轉到堆中.拆箱相反,重載就是指一個方法名同,參數個數不一樣,返回值能夠相同的方法.CLR是通用語言運行時,其它的不清楚.
4.列舉一下你所瞭解的XML技術及其應用
答:XML但是好東西,保存配置,站與站之間的交流,WEB SERVICE都要用它.
5.值類型和引用類型的區別?寫出C#的樣例代碼。
答:結構是值類型,類是引用類型,因此傳結構就是值類型的應用啦,傳對象或類就是引用類型的,這個不用多寫了吧.
6.ADO.net中經常使用的對象有哪些?分別描述一下。
答:connection command sqladapter dataset datatable dataview等等.寫不完了.
7.如何理解委託?
答:聽說至關於函數指針,定義了委託就能夠在不調用原方法名稱的狀況下調用那個方法.
msdn2005中是這樣解釋的:
委託具備如下特色:
委託相似於 C++ 函數指針,但它是類型安全的。
委託容許將方法做爲參數進行傳遞。
委託可用於定義回調方法。
委託能夠連接在一塊兒;例如,能夠對一個事件調用多個方法。
方法不須要與委託簽名精確匹配。有關更多信息,請參見協變和逆變。
C# 2.0 版引入了匿名方法的概念,此類方法容許將代碼塊做爲參數傳遞,以代替單獨定義的方法。
8.C#中的接口和類有什麼異同。
答:接口是負責功能的定義,項目中經過接口來規範類,操做類以及抽象類的概念!
而類是負責功能的具體實現!
在類中也有抽象類的定義,抽象類與接口的區別在於:
抽象類是一個不徹底的類,類裏面有抽象的方法,屬性,也能夠有具體的方法和屬性,須要進一步的專業化。
但接口是一個行爲的規範,裏面的全部東西都是抽象的!
一個類只能夠繼承一個基類也就是父類,但能夠實現多個接口
9.。net中讀寫數據庫須要用到哪些類?他們的做用
答:這個類自已能夠寫的啊,你是指基類嗎?那configuration,sqlconnection,sqlcommand等都要用到.
10.UDP鏈接和TCP鏈接的異同。
答:前者只管傳,無論數據到不到,無須創建鏈接.後者保證傳輸的數據準確,需要連結.
11.ASP.net的身份驗證方式有哪些?分別是什麼原理?
答:form認證,windows集成認證等,原理不清楚.
13.什麼是code-Behind技術。
答:代碼分離,這是個明智的東西,像ASP這樣混成一堆很不爽.或者能夠理解成HTML代碼寫在前臺,C#代碼寫在後臺.固然前臺也有腳本,類的調用等,其實寫在一塊兒也是能夠的.
15..net中讀寫XML的類都歸屬於哪些命名空間?
答:System.Xml
16.解釋一下UDDI、WSDL的意義及其做用。
答:
17.什麼是SOAP,有哪些應用。
答:SOAP(Simple Object Access Protocol )簡單對象訪問協議是在分散或分佈式的環境中交換信息並執行遠程過程調用的協議,是一個基於XML的協議。使用SOAP,不用考慮任何特定的傳輸協議(最經常使用的仍是HTTP協議),能夠容許任何類型的對象或代碼,在任何平臺上,以任何一直語言相互通訊。這種相互通訊採用的是XML格式的消息,具體請看:http://playist.blogchina.com/2521621.html
20.經常使用的調用webservice方法有哪些?
答:
能夠從瀏覽器、ASP頁或其餘WEB服務調用能夠使用HTTP-GET HTTP-POST訪問WEB服務也能夠從ASP頁或其餘WEB服務向其餘WEB服務發出SOAP請求HTTP-GET HTTP-POST SOAP 使用WEB服務代理
6. 私有程序集與共享程序集有什麼區別?
一個私有程序集一般爲單個應用程序所使用,而且存儲於這個應用程序所在的目錄之中,或此目錄下面的一個子目錄中。共享程序集一般存儲在全局程序集緩存(Global Assembly Cache)之中,這是一個由.NET運行時所維護的程序集倉庫。共享程序集一般是對許多應用程序都有用的代碼庫,好比.NET Framework類。
7. 請解釋進程與線程的區別?進程與程序的區別?
通常,一個應用程序對應於一個或多個進程,能夠把進程看做是該應用程序在*做系統中的標識;而一個進程一般由多個線程組成,而線程是*做系統爲該應用程序分配處理時間的最小單元。
8. CLR與IL分別是什麼含義?
CLR:公共語言運行時,相似於Java中的JVM,Java虛擬機;在.Net環境下,各類編程語言使用一種共同的基礎資源環境,這就是CLR,CLR將直接與*做系統進行通訊,而編程語言如C#.NET將盡可能避免直接與*做系統直接通訊,增強了程序代碼的執行安全性,能夠這樣看:CLR就是具體的編程語言如:C#.NET與*做系統之間的翻譯,同時它爲具體的編程語言提供了許多資源:
IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;全部.NET源代碼(無論用哪一種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成爲機器碼,被解釋及執行。
10 .請解釋ASP。NET中以什麼方式進行數據驗證
Aps.net 中有非空驗證,比較驗證,取值範圍驗證,正則表達式驗證及客戶自定義驗證五大控件,另還有一個集中驗證信息處理控件
11. WEB控件能夠激發服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什麼?爲何要使用自動傳回。
在web控件發生事件時,客戶端採用提交的形式將數據交回服務端,服務端先調用Page_Load事件,而後根據傳回的狀態信息自動調用服務端事件自動傳回是當咱們在點擊客戶端控件時,採用提交表單的形式將數據直接傳回到務端
只有經過自動傳回才能實現服務端事件的機制,若是沒有自動回傳機制就只能調用客戶端事件,而不能調用服務端事件
12. WEB控件及HTML服務端控件可否調用客戶端方法?若是能,請解釋如何調用?
能夠調用
例如:<asp:TextBox id="TextBox1" onclick="clientfunction();" runat="server">
</asp:TextBox>
<INPUT id="Button2" value="Button" name="Button2"
runat="server" onclick="clientfunction();">
13. 請解釋web.config文件中的重要節點
appSettings包含自定義應用程序設置。
system.web 系統配置
compilation動態調試編譯設置
customErrors自定義錯誤信息設置
authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization受權, 此節設置應用程序的受權策略.
14. 請解釋ASP。NET中的web頁面與其隱藏類之間的關係?
一個ASP.NET頁面通常都對應一個隱藏類,通常都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx的頁面聲明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 代表經編譯此頁面時使用哪個代碼文件
Inherits="T1.Tst1" 表用運行時使用哪個隱藏類
15. 什麼是viewstate,可否禁用?是否所用控件均可以禁用?
Viewstate是保存狀態的一種機制,EnableViewState屬性設置爲false便可禁用
16. 當發現不能讀取頁面上的輸入的數據時頗有多是什麼緣由形成的?怎麼解決
頗有多是在Page_Load中數據處理時沒有進行Page的IsPostBack屬性判斷
17. 請解釋什麼是上下文對象,在什麼狀況下要使用上下文對象
上下文對象是指HttpContext類的Current 屬性,當咱們在一個普通類中要訪問內置對象(Response,Request,Session,Server,Appliction等)時就要以使用此對象
18. 請解釋轉發與跳轉的區別?
轉發就是服務端的跳轉A頁面提交數據到B頁面,B頁面進行處理而後從服務端跳轉到其它頁面
跳轉就是指客戶端的跳轉
1.請簡述一下用Socket進行同步通信編程的詳細步驟
一、在應用程序和遠程設備中使用協議和網絡地址初始化套接字
二、在應用程序中經過指定端口和地址創建監聽
三、遠程設備發出鏈接請求
四、應用程序接受鏈接產生通訊scoket
五、應用程序和遠程設備開始通信(在通信中應用程序將掛起直到通信結束)
六、通信結束,關閉應用程序和遠程設備的Socket回收資源
1、在C#中,string str = null 與 string str = 「」 請儘可能使用文字或圖象說明其中的區別。
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 );
四、分析如下代碼,完成填空(10分)
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j= i還真的不知道, j=10
5、SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號, LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句得到最後更新的事務號。(10)
select top ID from table1 order by LastUpdateData desc
8、簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。(10)
remoting是.net 中用來跨越machine, process, appdomain 進行方法調用的技術,對於三成結構的程序,就能夠使用remoting技術來構建.它是分佈應用的基礎技術.至關於之前的DCOM Web Service是一種構建應用程序的普通模型,並能在全部支持internet網通信的操做系統上實施。Web Service令基於組件的開發和web的結合達到最佳,基於組件的對象模型
9.什麼叫作SQL注入,如何防止?請舉例說明。
利用sql關鍵字對網站進行攻擊。過濾關鍵字'等
所謂SQL注入(SQL Injection),就是利用程序員對用戶輸入數據的合法性檢測不嚴或不檢測的特色,故意從客戶端提交特殊的代碼,從而收集程序及服務器的信息,從而獲取想獲得的資料。
http://localhost/lawjia/show.asp?ID=444 and user>0,這時,服務器運行Select * from 表名 where 字段=444 and user>0這樣的查詢,固然,這個語句是運行不下去的,確定出錯,錯誤信息以下:
·錯誤類型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]將 nvarchar 值 'sonybb' 轉換爲數據類型爲 int 的列時發生語法錯誤。
a 產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
20.請敘述類與結構的區別。
1)、結構是值類型;
2)、結構不支持繼承;
3)、結構不能定義默認的構造函數;
4)、結構不能定義析構函數;
5)、結構不能使用初始值設置域值。
用.net作B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲何要這樣分層?
答:
從下至上分別爲:數據訪問層、業務邏輯層(又或成爲領域層)、表示層
數據訪問層:有時候也稱爲是持久層,其功能主要是負責數據庫的訪問
業務邏輯層:是整個系統的核心,它與這個系統的業務(領域)有關
表示層:是系統的UI部分,負責使用者與整個系統的交互。
優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點: 增長成本。
分層式結構究竟其優點何在?
一、開發人員能夠只關注整個結構中的其中某一層;
二、能夠很容易的用新的實現來替換原有層次的實現;
三、能夠下降層與層之間的依賴;
四、有利於標準化;
五、利於各層邏輯的複用。
歸納來講,分層式設計能夠達至以下目的:分散關注、鬆散耦合、邏輯複用、標準定義。
分層式結構也不可避免具備一些缺陷:
一、下降了系統的性能。這是不言而喻的。若是不採用分層式結構,不少業務能夠直接造訪數據庫,以此獲取相應的數據,現在卻必須經過中間層來完成。
二、有時會致使級聯的修改。這種修改尤爲體如今自上而下的方向。若是在表示層中須要增長一個功能,爲保證其設計符合分層式結構,可能須要在相應的業務邏輯層和數據訪問層中都增長相應的代碼。
MVC模式
MVC(Model-View-Controller)把交互系統的組成分解成模型、視圖、控制器三種部件
mvc的優勢:
1.經過把項目分紅model view和controller,使得複雜項目更加容易維護。
2.沒有使用view state和服務器表單控件,能夠更方便的控制應用程序的行爲
3.應用程序經過controller來控制程序請求,能夠提供豐富的url重寫。
4.對單元測試的支持更加出色
5.在團隊開發模式下表現更出衆
MVC的不足:
(1)增長了系統結構和實現的複雜性。對於簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增長結構的複雜性,並可能產生過多的更新操做,下降運行效率。
(2)視圖與控制器間的過於緊密的鏈接。視圖與控制器是相互分離,但確實聯繫緊密的部件,視圖沒有控制器的存在,其應用是頗有限的,反之亦然,這樣就妨礙了他們的獨立重用。
(3)視圖對模型數據的低效率訪問。依據模型操做接口的不一樣,視圖可能須要屢次調用才能得到足夠的顯示數據。對未變化數據的沒必要要的頻繁訪問,也將損害操做性能。
asp.net如何實現MVC模式,舉例說明!
web/business/dataaccess
列舉ASP.NET 頁面之間傳遞值的幾種方式。
1.使用QueryString, 如….?id=1; response. Redirect()….
2.使用Session變量
3.使用Server.Transfer
請說明在.net中經常使用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
QueryString 傳遞一個或多個安全性要求不高或是結構簡單的數值。可是對於傳遞數組或對象的話,就不能用這個方法了
session(viewstate) 簡單,但易丟失 做用於用戶我的,過量的存儲會致使服務器內存資源的耗盡。
application 對象的做用範圍是整個全局,也就是說對全部用戶都有效。其經常使用的方法用Lock和UnLock
cookie 簡單,但可能不支持,可能被僞造 Cookie是存放在客戶端的,而session是存放在服務器端的。並且Cookie的使用要配合ASP.NET內置對象Request來使用
input ttype="hidden" 簡單,可能被僞造
url參數簡單,顯示於地址欄,長度有限
Server.Transfer 把流程從當前頁面引導到另外一個頁面中,新的頁面使用前一個頁面的應答流
數據庫穩定,安全,但性能相對弱
什麼是Viewstate?它有什麼做用?
ViewState用來保存頁面狀態,就是說提交以後咱們還能夠看到文本框裏面的內容就是ViewState保存的功勞。
ViewState只維護當前頁面的狀態,不一樣頁面之間不能共享,Session能夠。
ViewState你能夠理解爲一個隱藏控件。
ASP.Net頁面生命週期
每一個頁面的生命週期爲用戶的每一次訪問,也就是說每一次客戶端與服務器之間的一個往返過程.全局變量的生命週期在此之間.
1. Page_Init();
2. Load ViewState and Postback data;
3. Page_Load();
4. Handle control events;
5. Page_PreRender();
6. Page_Render();
7. Unload event;
8. Dispose method called;
ADO.net中經常使用的對象有哪些?分別描述一下。
答:
Connection 打開數據庫鏈接
Command 執行數據庫命令
DataAdapter 鏈接數據,執行數據庫命令,填充DataSet
DataSet 數據在內存中的緩存,數據結構
DataReader 只讀向前的讀取數據庫
DataReader和DataSet的異同
DataReader使用時始終佔用SqlConnection,在線操做數據庫..任何對SqlConnection的操做都會引起DataReader的異常..由於DataReader每次只在內存中加載一條數據,因此佔用的內存是很小的..由於DataReader的特殊性和高性能.因此DataReader是隻進的..你讀了第一條後就不能再去讀取第一條了..
DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接..由於DataSet將數據所有加載在內存中.因此比較消耗內存…可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行回傳更新操做…
存儲過程和sql語句的優缺點
優勢:
1.提升性能,減小網絡傳輸,節約時間 。
2.減小網絡流量 存儲過程位於服務器上,調用的時候只須傳遞存儲過程的名稱以及參數,不用每次訪問都傳遞很長的sql 語句。
4.安全性 減小sql 注入式攻擊。
5.可維護性高 更新存儲過程一般比更改、測試以及從新部署程序集須要較少的時間和精力。
缺點:
1.交互性差 。
2.可移植性差
說出你所瞭解的數據庫訪問組件(例如ADO,至少4種)
答:ADO,ADO.Net,MDAC(Microsoft Data Access Components),Microsoft SQL Server OLE DB Provider,
Microsoft Jet OLE DB Provider,Desktop Database Drivers ODBC Driver,Visual FoxPro ODBC Driver
什麼是面向對象
萬物都是對象,其主要特徵:封裝、繼承、多態
怎樣實現多態
1.經過對象直接調用成員函數時,始終默認使用該對象的類的成員函數(除非用::顯示指定類名)。
2.經過指向對象的指針或引用調用成員函數時:若是該函數是實函數,則調用該指針或引用的類的成員函數;若是該函
數是虛函數,則調用該指針或引用指向的對象的類的成員函數。
面向對象的思想主要包括什麼?
答:任何事物均可以理解爲對象,其主要特徵: 繼承。封裝。多態。特色:代碼好維護,安全,隱藏信息
什麼是裝箱和拆箱?
答:從值類型接口轉換到引用類型裝箱。從引用類型轉換到值類型拆箱。裝箱(boxing)是將值類型的數據轉化成引用類型,int i=3; objecto = i ;即是裝箱過程,而拆箱(unboxing)是將飲用類型數據轉換值類型,好比int j = (int)o;屬於拆箱
什麼是Interface?它與Abstract Class有什麼區別?
接口(Interface)是用來定義行爲規範的,不會有具體實現,而抽象類除定義行爲規範外,能夠有部分實現,但一
個類能實現多個接口,但只能繼承一個父類
何時使用抽象類,何時用接口
接口用於規範,抽象類用於共性。接口中只能聲明方法,屬性,事件,索引器。而抽象類中能夠有方法的實
現,也能夠定義非靜態的類變量。抽象類是類,因此只能被單繼承,可是接口卻能夠一次實現多個。抽象類能夠
提供某些方法的部分實現,接口不能夠.抽象類的實例是它的子類給出的。接口的實例是實現接口的類給出的。
再抽象類中加入一個方法,那麼它的子類就同時有了這個方法。而在接口中加入新的方法,那麼實現它的類就要
從新編寫(這就是爲何說接口是一個類的規範了)。接口成員被定義爲公共的,但抽象類的成員也能夠是私有
的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程序的代碼或派生類中訪問)。
此外接口不能包含字段、構造函數、析構函數、靜態成員或常量。
什麼是抽象類(abstract class)?
一種不能夠被實例化的類。抽象類中通常含有抽象方法,固然也可有具體實現。繼承類只有實現過全部抽
象類的抽象方法後才能被實例化。
什麼時候必須聲明一個類爲抽象類?
當這個類中包含抽象方法時,或是該類並無徹底實現父類的抽象方法時。
接口(interface)是什麼?
只含有共有抽象方法(public abstract method)的類。這些方法必須在子類中被實現。
爲何不能指定接口中方法的修飾符?
接口中的方法用來定義對象之間通訊的契約,指定接口中的方法爲私有或保護沒有意義。他們默認爲公有方法。
能夠繼承多個接口麼?
固然。
那麼若是這些接口中有重複的方法名稱呢?
這種狀況中你能夠決定如何實現。固然須要特別得當心。可是在編譯環節是沒有問題的。
接口和抽象類的區別是什麼?
接口中全部方法必須是抽象的,而且不能指定方法的訪問修飾符。抽象類中能夠有方法的實現,也能夠指
定方法的訪問修飾符。
詳述.NET裏class和struct的異同!
類是引用類型,能夠繼承類、接口和被繼承,有默認的構造函數,有析構函數,能夠使用abstract和sealed,有protected修飾符,必須使用new初始化。
結構是值類型,只能繼承接口,不能被繼承,沒有默認的構造函數,能夠建立,沒有析構函數,不能夠用abstract和sealed,沒有protected修飾符,能夠不用new初始化。
如何選擇結構仍是類
1. 堆棧的空間有限,對於大量的邏輯的對象,建立類要比建立結構好一些
2. 結構表示如點、矩形和顏色這樣的輕量對象
例如,若是聲明一個含有 1000 個點對象的數組,則將爲引用每一個對象分配附加的內存。
在此狀況下,結構的成本較低。
3. 在表現抽象和多級別的對象層次時,類是最好的選擇
4. 大多數狀況下該類型只是一些數據時,結構時最佳的選擇
C#中的接口和類有什麼異同。
異:
不能直接實例化接口。
接口不包含方法的實現。
接口、類和結構可從多個接口繼承。可是C# 只支持單繼承:類只能從一個基類繼承實現。
類定義可在不一樣的源文件之間進行拆分。
同:
接口、類和結構可從多個接口繼承。
接口相似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的全部成員。
接口能夠包含事件、索引器、方法和屬性。
一個類能夠實現多個接口。
const和readonly有什麼區別?
const關鍵字用來聲明編譯時常量,readonly用來聲明運行時常量。
用sealed修飾的類有什麼特色
sealed 修飾符用於防止從所修飾的類派生出其它類。若是一個密封類被指定爲其餘類的基類,則會發生編譯時錯誤。
密封類不能同時爲抽象類。
sealed 修飾符主要用於防止非有意的派生,可是它還能促使某些運行時優化。具體說來,因爲密封類永
遠不會有任何派生類,因此對密封類的實例的虛擬函數成員的調用能夠轉換爲非虛擬調用來處理。
虛函數的用法
答:
1)virtual指明一成員函數爲虛函數,而virtual僅用於類的定義裏,在類外可不加此關鍵字.
2)一個類的成員函數被定義爲虛函數時,子類該函數仍保持虛函數特徵.
3)子類覆蓋此函數時,定義裏可不加virtual關鍵字,但函數聲明要和基類的徹底一致!且此聲明是必須的.
4)不是純虛函數時,父類的虛函數必需要實現; 而若將父類的虛函數設定爲純虛函數時,子類必須要覆蓋之並且必需要實現之!
解釋virtual、sealed、override和abstract的區別
virtual申明虛方法的關鍵字,說明該方法能夠被重寫
sealed說明該類不可被繼承
override重寫基類的方法
abstract申明抽象類和抽象方法的關鍵字,抽象方法不提供實現,由子類實現,抽象類不可實例化。
重載和覆寫有什麼區別?
答:重載是方法的名稱相同,不一樣的參數類型,不一樣的參數個數,不一樣的參數順序。覆寫提供了子類中改變父類方法行爲的實現(是進行基類中函數的重寫)。
在方法定義中,virtual有什麼含義?
答:被virtual修飾的方法能夠被子類覆寫
可以將非靜態的方法覆寫成靜態方法嗎?
答:不能,覆寫方法的簽名必須與被覆寫方法的簽名保持一致,除了將virtual改成override。
能夠覆寫私有的虛方法嗎?
答:不能夠,甚至子類中沒法訪問父類中的私有方法
可以阻止某一個類被其餘類繼承嗎?
答:能夠,使用關鍵字sealed
可以實現容許某個類別繼承,但不容許其中的某個方法被覆寫嗎?
答:能夠,標記這個類爲public,並標記這個方法爲sealed。
如何區別重載方法?
不一樣的參數類型,不一樣的參數個數,不一樣的參數順序
c#繼承:
base 表示當前對象基類的實例(使用base關鍵字能夠調用基類的成員)this表示當前類的實例
在靜態方法中不能夠使用base和this關鍵字
派生類會繼承基類全部的成員可是構造函數和析構函數不會被繼承
注意若是派生類的方法和基類的方法同名則基類中的方法將會被隱藏若是須要隱藏則能夠使用關鍵字new來隱藏若是不寫new關鍵字默認處理爲隱藏雖然基類中同名的方法被隱藏了可是仍是能夠經過base關鍵字來調用
//若是子類方法的方法名和基類的方法名相同時,系統將隱藏基類同名方法,自動調用子類的同名方法
//派生類會繼承基類全部的成員,可是不能顯示調用基類的是有成員
//在派生類中不能夠調用基類的是有成員,如num1,num2,可是能夠實現調用基類方法
virtual 用在基類中指定一個虛方法屬性表示這個方法屬性能夠重寫
override 用在派生類中表示對基類虛方法屬性的重寫
不能重寫非虛方法或靜態方法重寫的基方法必須是 virtualabstract 或 override 的爲何 override 也能夠重寫呢由於基類中的 override 其實是對基類的基類進行的重寫因爲繼承可傳遞因此也能夠對基類中 override 的方法進行重寫
override 聲明不能更改 virtual 方法的可訪問性override 方法和 virtual 方法必須具備相同的訪問級別修飾符
不能使用修飾符 newstaticvirtual 或 abstract 來修改 override 方法
重寫屬性聲明必須指定與繼承屬性徹底相同的訪問修飾符類型和名稱而且被重寫的屬性必須是 virtualabstract 或 override 的
標記容許被重寫修飾靜態方法中不容許使用virtual關鍵字成員變量容許使用virtual關鍵字
屬性能夠被聲明爲虛屬性(使用virtual關鍵字)
重寫基類的方法(重寫同名的方法中有virtual關鍵字的方法)
重寫和隱藏的區別隱藏(new關鍵字)是給子類的同名方法分配新的內存空間重寫(override關鍵字)是子類的同名方法放在基類同名方法的原來所在位置基類的同名方法位置向後移
屬性也能夠重寫
virtual關鍵字和override關鍵字是成對出現的不然是語法錯誤
派生類能夠經過將重寫聲明爲 sealed 來中止虛擬繼承這須要在類成員聲明中的 override 關鍵字前面放置 sealed 關鍵字
在子類中重寫基類中的虛方法時能夠使用base關鍵字調用基類中的虛方法
//使用base關鍵能夠在子類中訪問基類同名的方法
//父類的引用指向子類的實例
Test ts = new Test2();
父類的引用指向子類的實例(調用的是子類的方法)
父類的引用只認識父類的方法不認識子類的新方法能夠用來調用被子類覆蓋的父類的方法
父類的引用依然到父類方法位置去調用若是基類方法被聲明爲virtual而且在子類中被override結果訪問到的是被子類override的方法
C#中的委託是什麼?事件是否是一種委託?
委託能夠把一個方法做爲參數代入另外一個方法。委託能夠理解爲指向一個函數的引用。是,是一種特殊的委託
C#中的堆和棧
棧(Stack)由系統管理生存期,存儲代碼執行和調用路徑,執行或調用完畢即從棧中清除;
堆(Heap)中保存值和對象,調用完畢以後依然存在,由垃圾回收器查找棧中有無指向該值或對象的引用,無則從堆中刪除
你對泛型瞭解嗎?簡單說明一下泛型的有什麼好處?
泛型:經過參數化類型來實如今同一份代碼上操做多種數據類型。利用「參數化類型」將類型抽象化,從而實現靈活的複用
好處是——類型安全和減小裝箱、拆箱。提升性能、類型安全和質量,減小重複性的編程任務
C#中全部對象共同的基類是什麼?
System.Object.
如何在C#中實現繼承?
在類名後加上一個冒號,再加上基類的名稱。
C#支持多重繼承嗎?
不支持。能夠用接口來實現。
被protected修飾的屬性/方法在何處能夠訪問?
在繼承或間接繼承與這個類的子類中能夠訪問。
私有成員會被繼承麼?
會,可是不能被訪問。因此看上去他們彷佛是不能被繼承的,但實際上確實被繼承了。
C#提供一個默認的無參構造函數,當我實現了另一個有一個參數的構造函數時,還想保留這個無參數的構
造函數。這樣我應該寫幾個構造函數?
答:兩個,一旦你實現了一個構造函數,C#就不會再提供默認的構造函數了,因此須要手動實現那個無參構造
函數。
簡述 private、 protected、 public、 internal 修飾符的訪問權限。
private : 私有成員, 在類的內部才能夠訪問。
protected : 保護成員,該類內部和繼承類中能夠訪問。
public : 公共成員,徹底公開,沒有訪問限制。
internal: 在同一命名空間內能夠訪問。
new的兩種用法
答:實例話對象,隱藏基類方法。
.new有幾種用法
第一種:new Class();
第二種:覆蓋方法
public new XXXX(){}
第三種:new 約束指定泛型類聲明中的任何類型參數都必須有公共的無參數構造函數。
3.datagrid.datasouse能夠鏈接什麼數據源 [dataset,datatable,dataview]
dataset,datatable,dataview , IList
類成員有( )種可訪問形式
可訪問性:public ,protected ,private,internal
委託與事件的用法
答:public delegate void handels();//返回值是void,沒有參數
public event handels eventHandels;
his.eventHandels = new handels(fun);
public void fun()
{ }
傳入某個屬性的SET方法的隱含參數的名稱是什麼?
答:value,它的類型和屬性所聲明的類型相同。
string是值類型仍是引用類型?
引用類型
String類與StringBuilder類有什麼區別?爲何在.Net類庫中要同時存在這2個類?(簡答)
stringBuilder比string更節約內存,因此stringBuilder更快
String 對象是不可改變的。每次使用 System.String 類中的方法之一或進行運算時(如賦值、拼接等)時,都要
在內存中建立一個新的字符串對象,這就須要爲該新對象分配新的空間。而 StringBuilder 則不會。在須要對字
符串執行重複修改的狀況下,與建立新的 String 對象相關的系統開銷可能會很是昂貴。若是要修改字符串而不
建立新的對象,則能夠使用 System.Text.StringBuilder 類。例如,當在一個循環中將許多字符串鏈接在一塊兒時
,使用 StringBuilder 類能夠提高性能。
在C#中,string str = null 與 string str = 「」 請儘可能使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度爲空字符串的內存空間。
ASP.net的身份驗證方式有哪些?分別是什麼原理?
答:Windwos(默認) 用IIS…From(窗體) 用賬戶….Passport(密鑰)
Session有什麼重大BUG,微軟提出了什麼方法加以解決?
答:是iis中因爲有進程回收機制,系統繁忙的話Session會丟失,能夠用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件
c#中的三元運算符是?:
.能用foreach遍歷訪問的對象須要實現() 接口或聲明 ( GetEnumerator)方法的類型。
.<%# %> 和 <% %> 有什麼區別?
<%# %>表示綁定的數據源 <% %>是服務器端代碼塊 常量
在.net(C# or vb.net)中如何得到當前窗體或控件的句柄,特別是控件自己的句柄(請列舉)
this(C#) Me(vb.net).
.C#能否對內存進行直接的操做?
在.net下,.net引用了垃圾回收(GC)功能,它替代了程序員 不過在C#中,不能直接實現Finalize方法,而是在析構函數中調用基類的Finalize()方法
DateTime是否能夠爲null? 不能,由於其爲Struct類型,而結構屬於值類型,值類型不能爲null,只有引用類型才能被賦值null
DateTime.Parse(myString); 這行代碼有什麼問題?
有問題,當myString不能知足時間格式要求的時候,會引起異常,建議使用DateTime.TryParse()
net的錯誤處理機制是:
採用try->catch->finally結構,
爲何不提倡catch(Exception)
try..catch在出現異常的時候影響性能; 應該捕獲更具體得異常,好比IOExeception,OutOfMemoryException等
catch(Exception e){throw e;}和catch(Exception e){throw;}的區別
將發生的異常對象拋出,另外一個只是拋出異常,並無拋出原異常對象)
error和exception區別:
error 表示恢復不是不可能但很困難的狀況下的一種嚴重問題。好比說內存溢出。不可能期望程序能處理這樣的狀況。
exception 表示一種設計或實現問題。也就是說,它表示若是程序運行正常,從不會發生的狀況。
GET與POST的區別
在 FORM提交的時候,若是不指定Method,則默認爲GET請求,Form中提交的數據將會附加在url以後,以?分開與url分開。字母數字字符原樣發送,但空格轉換爲「+「號,其它符號轉換爲%XX,其中XX爲該符號以16進製表示的ASCII(或ISOLatin-1)值。GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;
在使用 POST 方法的狀況下,傳輸數據時不會將數據做爲 URL 的一部分;它們會做爲一個獨立的實體來傳輸。所以,POST 方法更安全,你也能夠用這個方法傳輸更多的數據。並且用 POST 傳輸的數據不必定要是文本,用 GET 方法傳輸的卻必定要是文本。
(1)get是從服務器上獲取數據,post是向服務器傳送數據。
(1)在客戶端,Get方式在經過URL提交數據,數據在URL中能夠看到;POST方式,數據放置在HTML HEADER內提交。
(2)對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。
(2)GET方式提交的數據最多隻能有1024字節,而POST則沒有此限制。
(3)安全性問題。正如在(1)中提到,使用 Get 的時候,參數會顯示在地址欄上,而 Post 不會。因此,若是這些數據是中文數據並且是非敏感數據,那麼使用 get;若是用戶輸入的數據不是中文字符並且包含敏感數據,那麼仍是使用 post爲好。
Bind和Eval函數的區別
綁定表達式
<%# Eval("字段名") %>
<%# Bind("字段名") %>
1 Eval 單向綁定:數據是隻讀的
Bind 雙向綁定:數據能夠更改,並返回服務器端,服務器能夠處理更改後的數據,如存入數據庫.
2.當對次表達式操做時候,必須用Eval 如<%# Eval("字段名").ToString().Trim() %>
3 綁定控件的屬性時要用Bind,而Eval則是其它一些。
例如:<asp:TextBox ID="First" RunAt="Server" Text=’<%# Bind("FirstName") %>’ />
例如:<td><%# Eval("ProductID") %></td>
Response.Redirect和Server.Transfer
請求的過程:
1)瀏覽器aspx文件請求—>服務器執行—>遇到Response.Redirect語句->服務器發送Response.Redirect後面的地址給客戶機端的瀏覽器—>瀏覽器請求執行新的地址
2)瀏覽器aspx文件請求->服務器執行->遇到Server.Transfer語句->服務器轉向新的文件
能夠見Server.Transfer比Response.Redirect少了一次服務器發送回來和客戶端再請求的過程.
跳轉對象:
1)Response.Redirect能夠切換到任何存在的網頁。
2)Server.Transfer只能切換到同目錄或者子目錄的網頁.
數據保密:
一、Response.Redirect後地址會變成跳轉後的頁面地址。
二、Server.Transfer後地址不變,隱藏了新網頁的地址及附帶在地址後邊的參數值。具備數據保密功能。
傳遞的數據量(網址後附帶的參數):
一、Response.Redirect可以傳遞的數據以2KB(也就是地址欄中地址的最大的長度)爲限。
二、傳遞的數據超過2KB時,務必使用Server.Transfer。
Server.UrlEncode、HttpUtility.UrlDecode的區別
Server.UrlEncode的編碼方式是按照本地程序設置的編碼方式進行編碼的,而HttpUtility.UrlEncode是默認的按照.net的utf-8格式進行編碼的。
Static 和非Static的區別:
1、用Static聲明的方法和變量,不須要實例化該類就調用;
2、Static的,就必定要用實例化的對象來調用,即用new來實例化。
舉例說:
若是有一個類People,有一個Static的方法MiaoShu(), 調用方法就是 People.MisoShu()
有一個非Static的方法getName(), 調用方法就是 People p= new People(); p.getName();
如何實現鏈接池
確保你每一次的鏈接使用相同的鏈接字符串(和鏈接池相同);只有鏈接字符串相同時鏈接池纔會工做。若是鏈接字符串不相同,應用程序就不會使用鏈接池而是建立一個新的鏈接。
優勢
使用鏈接池的最主要的優勢是性能。建立一個新的數據庫鏈接所耗費的時間主要取決於網絡的速度以及應用程序和數據庫服務器的(網絡)距離,並且這個過程一般是一個很耗時的過程。而採用數據庫鏈接池後,數據庫鏈接請求能夠直接經過鏈接池知足而不須要爲該請求從新鏈接、認證到數據庫服務器,這樣就節省了時間。
缺點
數據庫鏈接池中可能存在着多個沒有被使用的鏈接一直鏈接着數據庫(這意味着資源的浪費)。
技巧和提示
1. 當你須要數據庫鏈接時纔去建立鏈接池,而不是提早創建。一旦你使用完鏈接當即關閉它,不要等到垃圾收集器來處理它。
2. 在關閉數據庫鏈接前確保關閉了全部用戶定義的事務。
3. 不要關閉數據庫中全部的鏈接,至少保證鏈接池中有一個鏈接可用。若是內存和其餘資源是你必須首先考慮的問題,能夠關閉全部的鏈接,而後在下一個請求到來時建立鏈接池。
鏈接池FAQ
1.什麼時候建立鏈接池?
當第一個鏈接請求到來時建立鏈接池;鏈接池的創建由數據庫鏈接的鏈接字符創來決定。每個鏈接池都與一個不一樣的鏈接字符串相關。當一個新的鏈接請求到來時若是鏈接字符串和鏈接池使用的字符串相同,就從鏈接池取出一個鏈接;若是不相同,就新建一個鏈接池。
2. 什麼時候關閉鏈接池?
當鏈接池中的全部鏈接都已經關閉時關閉鏈接池。
3. 當鏈接池中的鏈接都已經用完,而有新的鏈接請求到來時會發生什麼?
當鏈接池已經達到它的最大鏈接數目時,有新的鏈接請求到來時,新的鏈接請求將放置到鏈接隊列中。當有鏈接釋放給鏈接池時,鏈接池將新釋放的鏈接分配給在隊列中排隊的鏈接請求。你能夠調用close和dispose將鏈接歸還給鏈接池。
4. 我應該如何容許鏈接池?
對於.NET應用程序而言,默認爲容許鏈接池。(這意味着你能夠沒必要爲這件事情作任何的事情)固然,若是你能夠在SQLConnection對象的鏈接字符串中加進Pooling=true;確保你的應用程序容許鏈接池的使用。
5. 我應該如何禁止鏈接池?
ADO.NET默認爲容許數據庫鏈接池,若是你但願禁止鏈接池,能夠使用以下的方式:
1) 使用SQLConnection對象時,往鏈接字符串加入以下內容:Pooling=False;
2) 使用OLEDBConnection對象時,往鏈接字符串加入以下內容:OLE DB Services=-4;
提升.NET的性能
1 使用異步方式調用Web服務和遠程對象
只要有可能就要避免在請求的處理過程當中對Web服務和遠程對象的同步調用,由於它佔用的是的ASP.NET 線程池中的工做線程,這將直接影響Web服務器響應其它請求的能力。
2 使用適當的Caching策略來提升性能
3 判斷字符串,不要用""比較。
//避免
if(strABC!=null && strABC!="")
{}
//推薦
if(!strABC.IsNullOrEmpty)
{}
4 頁面優化
5 用完立刻關閉數據庫鏈接
6 儘可能使用存儲過程,並優化查詢語句
7 只讀數據訪問用SqlDataReader,不要使用DataSet
……….
.UDP鏈接和TCP鏈接的異同
答:前者只管傳,無論數據到不到,無須創建鏈接.後者保證傳輸的數據準確,需要連結.
請解釋轉發與跳轉的區別
轉發就是服務端的跳轉A頁面提交數據到B頁面,B頁面進行處理而後從服務端跳轉到其它頁面
跳轉就是指客戶端的跳轉
簡述你對XML Web Service的原理的認識?
答:利用SOAP(簡單對象訪問協議)在http上執行遠程方法的調用,也能夠使用WSDL(Web服務描述語言)來
完成完整的描述Web服務,而後用UDDI註冊各個服務提供商提供的服務,以便共享他們。
什麼叫應用程序域?
答:應用程序域能夠理解爲一種輕量級進程。起到安全的做用。佔用資源小。
CTS、CLS、CLR分別做何解釋?
答:CTS:通用語言系統。CLS:通用語言規範。CLR:公共語言運行庫。
什麼是受管制的代碼?
答:unsafe:非託管代碼。不通過CLR運行。
什麼是強類型系統?
答:RTTI:類型識別系統。
什麼是code-behind技術
codebehind是指代碼和用戶界面分開
aspx and cs
在.net中,配件的意思是?
答:程序集。(中間語言,源數據,資源,裝配清單)
經常使用的調用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜單選項
net Remoting 的工做原理是什麼?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以肯定對象的位置。
O/R Mapping 的原理
答:利用反射,配置將對象和數據庫表映射
remoting和webservice兩項技術的理解以及實際中的應用。
答:WS主要是可利用HTTP,穿透防火牆。而Remoting能夠利用TCP/IP,二進制傳送提升效率。
out保留字怎麼使用,何時使用
答:有時爲了從一個函數中返回多個值,咱們須要使用out關鍵字,把輸出值賦給經過引用傳遞給方法的變量(也就是參數)。但C#要求變量再被引用的前必須初始化。在調用該方法時,還須要添加out關鍵字
PDB是什麼東西? 在調試中它應該放在哪裏?
PDB是用於保存調試和項目狀態信息的文件,在debug的時候將產生pdb文件,調試的時候應該放在和對應應用
程序集相同目錄。
使用ASMX的XML Web服務與使用SOAP的.NET Remoting的區別?
Web服務使用的消息機制,而Remoting採用的RPC. Web Service能用於不一樣平臺,不一樣語言,Remoting只適用
於.Net。效率上Remoting高於Xml Web Service
類型系統是由XMLSchema表示的嗎?CLS是XMLSchema表示的嗎?
不清楚
從概念上闡述前期綁定(early-binding)和後期綁定(late-binding)的區別?
這個就像是強弱類型的比較類似,前期綁定是在編譯的時候就肯定了要綁定的數據,然後期綁定是在運行的時候
才填充數據。因此前期綁定若是失敗,會在編譯時報編譯錯誤,然後期綁定失敗只有在運行時的時候才發生
調用Assembly.Load算靜態引用仍是動態引用?
動態
列舉一下你所瞭解的XML技術及其應用
答:保存配置,站與站之間的交流,WEB SERVICE。以及與數據庫的數據交互等地方都要用它.
7.如何理解委託?
答:
至關於函數指針,定義了委託就能夠在不調用原方法名稱的狀況下調用那個方法.
委託具備如下特色:
委託相似於 C++ 函數指針,但它是類型安全的。
委託容許將方法做爲參數進行傳遞。
委託可用於定義回調方法。
委託能夠連接在一塊兒;例如,能夠對一個事件調用多個方法。
方法不須要與委託簽名精確匹配。有關更多信息,請參見協變和逆變。
C# 2.0 版引入了匿名方法的概念,此類方法容許將代碼塊做爲參數傳遞,以代替單獨定義的方法。
概述反射和序列化
反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對
象。您能夠使用反射動態地建立類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。而後,
能夠調用類型的方法或訪問其字段和屬性
序列化:序列化是將對象轉換爲容易傳輸的格式的過程。例如,能夠序列化一個對象,而後使用 HTTP 通
過 Internet 在客戶端和服務器之間傳輸該對象。在另外一端,反序列化將從該流從新構造對象。
11) XmlSerializer是如何工做的?使用這個類的進程須要什麼ACL權限?
我只知道XmlSerializer是將對象的屬性和字段進行序列化和反序列化的,序列化成爲xml數據,反序列化再將xml
轉換成對象。應該至少須要ACL權限中的讀權限.
23)XmlSerializer使用的針對屬性的模式有什麼好處?解決了什麼問題?
只序列化有用的數據,而不是序列化整個對象。實現不必的數據冗餘,和提高序列化時的性能。
26.根據委託(delegate)的知識,請完成如下用戶控件中代碼片斷的填寫:
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 );
27.分析如下代碼,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j=
答:i=13,j=10
28.SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號,
LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句得到最後更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
29.根據線程安全的相關知識,分析如下代碼,當調用test方法時i>10時是否會引發死鎖?並簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i–;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,因此每次改變的都只是一個副本,所以不會出現死鎖。但若是
把int換作一個object,那麼死鎖會發生)
3)什麼叫圈複雜度(cyclomatic complexity)?爲何它很重要?
不知道,望指教 ?
4)寫一個標準的lock(),在訪問變量的先後建立臨界區,要有"雙重檢查",
lock的使用
public void LockTest()
{
Object lockObj = new Object();
lock (lockObj)
{
//
}
}
5)什麼叫FullTrust?放入GAC的assembly是不是FullTrust的?
FullTrust徹底信任。放入GAC中的Assembly是否FullTrust個人理解不是。我理解FullTrust是能夠經過代碼設定的
6)代碼加上須要安全權限的特性有什麼好處?
能夠更加靈活的設置對代碼的訪問權限,實現代碼級保護。?這點不是特清楚,有明白的給講解下
7) gacutil /l | find /i "Corillian" 這句命令的做用是什麼?
全局程序集緩存中若是有Corillian就更新該程序集,沒有就安裝
8) sn -t foo.dll 這句命令是幹嗎的?
顯示程序集foo.dll的公鑰標記
9) DCOM須要防火牆打開哪些端口?端口135是幹嗎用的?
135端口,由於DCOM的端口號是隨機分配的,默認狀況下,會分配1024以上的端口號,因此默認狀況下,DCOM
不能穿越防火牆。由於根本不曉得開哪一個端口。但有解決辦法能夠使DCOM分配的端口號固定,135是遠程過程
調用(RPC)的默認端口
10)對比OOP和SOA,它們的目的分別是什麼?
我想OOP和SOA應該沒有對比性吧。OOP是一種編程模型,強調將複雜的邏輯分解出小的模塊,特性是繼承,封
裝和多態 。而SOA是一個技術框架,技術框架和編程模型應該說不是一碼事吧?SOA的思想是將業務邏輯封裝
成服務或者中間件提供給應用程序來調用,固然其組件化思想是繼承和發揚了OOP的優勢。
13)Debug.Write和Trace.Write有什麼不一樣?什麼時候應該使用哪個?
Debug.Write是調試的時候向跟蹤窗口輸出信息。當編譯模式爲debug的時候纔有效,爲release的時
候Debug.Write在編譯的時候會忽略,而Trace則是在debug和release兩種模式下都可以向跟蹤窗口輸出信息。
14)Debug Build和Release Build的區別,是否會有明顯的速度變化?請說明理由。
Debug會產生pdb文件,release不會。Debug用於開發時的調試,不能要於部署,而release用於部署.debug編
譯一些特殊代碼,好比#IFDEBUG Debug.Write等,而Release則會將那些特殊標記省略
15)JIT是以assembly爲單位發生仍是以方法爲單位發生?這對於工做區有何影響?
方法,道理很簡單,由於對於一次運行,極可能只用到一個程序集中極少數類型和對象,而大部分可能並不會被
使用,此時CLR傻乎乎的給整個程序集都給Compile了,CLR不是傻瘋了麼
17)a.Equals(b)和a == b同樣嗎?
不同。a.Equals(b)表示a與b一致, a==b表示a與b的值相等
18)在對象比較中,對象一致和對象相等分別是指什麼?
對象一致是指兩個對象是同一個對象,引用相同。而對象相等是指兩個對象的值相同,但引用不必定相同
19)在.NET中如何實現深拷貝(deep copy)?
實現IClonable接口
20)請解釋一下IClonable
IClonable方法是實現深度複製的接口,實現它應該能深度複製一個對象出來。深度複製的特徵的調用對象的構造
方法,建立新的對象,包括建立對象中嵌套的引用對象的新實例。而Shadow複製則不一樣,是淺表複製,不從新
建立新實例。淺表複製的實現是Object.MemberWiseClone().
深度複製(Deep Copy)與淺表複製(Shadow Copy)的比較
public class Name
{
public string FirstName;
public string LastName;
}
public class Person:ICloneable
{
public Name PersonName;
public string Email;
/**//// <summary>
/// Deep Copy的例子
/// </summary>
/// <returns></returns>
public Object Clone()
{
Person p = new Person();
p.Email = this.Email;
p.PersonName = new Name();
p.PersonName.FirstName = this.PersonName.FirstName;
p.PersonName.LastName = this.PersonName.LastName;
return p;
}
public void ChangLastName(string lastName)
{
this.PersonName.LastName = lastName;
}
public static void Main()
{
Person p = new Person();
p.PersonName = new Name();
p.PersonName.LastName = "jill";
p.PersonName.FirstName = "zhang";
p.Email = "jillzhang@126.com";
Person sameNamePerson = p.Clone() as Person;
sameNamePerson.ChangLastName("clr_");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Person samePerson = p.MemberwiseClone() as Person;
samePerson.ChangLastName("Shadow");
Console.WriteLine(p.PersonName.LastName);
Console.WriteLine(sameNamePerson.PersonName.LastName);
Console.Read();
}
}
24)爲何不該該在.NET中使用out參數?它究竟好很差?
我挺喜歡用out參數的,特別是當函數須要有多於1個返回的時候,我比較願意用out,至於它好很差沒研究過 ?
25)特性可以放到某個方法的參數上?若是能夠,這有什麼用?
能夠,做用能夠對參數有進一步限定,好比輸入參數爲int類型,能夠經過容許AttributeTargets=ParameterInfo
的Attribute自定義實現來限定輸入參數的大小,好比當輸入參數小於100的時候便抱錯。
對方法的參數設置Attribute的例子
[AttributeUsage(AttributeTargets.Parameter)]
public class ParameterAtt : Attribute
{
public int Min = 100;
}
public class AttributeTest
{
public void TestMethod([ParameterAtt(Min = 100)] int par1)
{
ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0];
ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as
ParameterAtt;
if (att.Min > par1)
{
throw new Exception("要求para1最小爲" + att.Min);
}
}
}
9.執行下面代碼後:
String strTemp ="abcdefg 某某某";
Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;
Int j = strTemp.Length;
問:i=(14 ) ;j=(11 )
i=(14 ) ;j=(11 ) 中文兩個字節
12.概述.NET裏對 remoting 和 webservice 兩項技術的理解和實際中的應用。
遠程邏輯調用,remoing接口只能用在.net中
9. 如何給服務器端控件增長客戶端腳本。
答:控件的Attributes
6.私有程序集與共享程序集有什麼區別?
一個私有程序集一般爲單個應用程序所使用,而且存儲於這個應用程序所在的目錄之中,或此目錄下面的一個子
目錄中。共享程序集一般存儲在全局程序集緩存(Global Assembly Cache)之中,這是一個由.NET運行時所維
護的程序集倉庫。共享程序集一般是對許多應用程序都有用的代碼庫,好比.NET Framework類。
10 .請解釋ASP.NET中以什麼方式進行數據驗證
Aps.net 中有非空驗證,比較驗證,取值範圍驗證,正則表達式驗證及客戶自定義驗證五大控件,另還有一個集
中驗證信息處理控件
11.WEB控件能夠激發服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什麼?爲何要
使用自動傳回。
在web控件發生事件時,客戶端採用提交的形式將數據交回服務端,服務端先調用Page_Load事件,而後根據傳
回的狀態信息自動調用服務端事件自動傳回是當咱們在點擊客戶端控件時,採用提交表單的形式將數據直接傳回
到務端
只有經過自動傳回才能實現服務端事件的機制,若是沒有自動回傳機制就只能調用客戶端事件,而不能調用服務
端事件
13. 請解釋web.config文件中的重要節點
appSettings包含自定義應用程序設置。
system.web 系統配置
compilation動態調試編譯設置
customErrors自定義錯誤信息設置
authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization受權, 此節設置應用程序的受權策略.
14. 請解釋ASP。NET中的web頁面與其隱藏類之間的關係?
一個ASP.NET頁面通常都對應一個隱藏類,通常都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx
的頁面聲明以下
<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>
Codebehind="Tst1.aspx.cs" 代表經編譯此頁面時使用哪個代碼文件
Inherits="T1.Tst1" 表用運行時使用哪個隱藏類
15. 什麼是viewstate,可否禁用?是否所用控件均可以禁用?
Viewstate是保存狀態的一種機制,EnableViewState屬性設置爲false便可禁用
16. 當發現不能讀取頁面上的輸入的數據時頗有多是什麼緣由形成的?怎麼解決?
頗有多是在Page_Load中數據處理時沒有進行Page的IsPostBack屬性判斷
17. 請解釋什麼是上下文對象,在什麼狀況下要使用上下文對象
上下文對象是指HttpContext類的Current 屬性,當咱們在一個普通類中要訪問內置對
象(Response,Request,Session,Server,Appliction等)時就要以使用此對象
16、解釋一下ajax及實現原理
答:Ajax的核心是JavaScript對象XmlHttpRequest,它使您能夠使用JavaScript向服務器提出請求並處理響應, 而不阻塞用戶,異步請求。
1、delegate是引用類型仍是值類型?enum、int[]和string呢(難度係數40%)?
答案:delegate引用類型,enum值類型,int[]引用類型,string引用類型。
3、base這個關鍵字有哪幾種語法?override呢?
答案:base兩個語法,分別是調用基類構造函數和調用基類方法,override用於重寫基類方法。
4、請指出C#中是否有下列關鍵字?virtual、sealed、abstract、import、as、in、goto、final、Const、signed、
String(提示,僅指出C#中沒有的便可)(難度係數50%)。
答案:沒有的關鍵字:import、final、Const、signed、String
5、在循環:for( int i = 0; i < 100; i++ ) Console.WriteLine( i );中,請指出i++的執行時機。
答案:在Console.WriterLine( i );執行以後
6、試說明continue關鍵字的用處。
答案:立刻開始下一次循環,忽略循環體餘下的語句
7、object是C#的關鍵字嗎?請指出C#中有哪些類型關鍵字,如int、float。(提示,寫得越多越好)。
答案:是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、boo
l,如回答:enum、struct、class、delegate也算對。
8、C#的XML文檔註釋中(以///開頭的註釋),<summary>標籤用於描述什麼?<param>標籤呢?
答案:<summary>用於某個元素的概要說明,<param>用於某個方法的參數概要說明。
9、咱們知道[]是數組和索引器的訪問操做符,但它還有一個語法,是什麼?
答案:特性(Attribute)
18.請敘述屬性與索引器的區別。
屬性 索引器
經過名稱標識。 經過簽名標識。
經過簡單名稱或成員訪問來訪問。 經過元素訪問來訪問。
能夠爲靜態成員或實例成員。 必須爲實例成員。
屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具備與索引器相同的形參表。
屬性的 set 訪問器包含隱式 value 參數。 除了 value 參數外,索引器的 set 訪問器還具備與索引
器相同的形參表。
1) 描述線程與進程的區別?
線程(Thread)與進程(Process)兩者都定義了某種邊界,不一樣的是進程定義的是應用程序與應用程序之間的邊
界,不一樣的進程之間不能共享代碼和數據空間,而線程定義的是代碼執行堆棧和執行上下文的邊界。一個進程可
以包括若干個線程,同時建立多個線程來完成某項任務,即是多線程。而同一進程中的不一樣線程共享代碼和數據
空間。用一個比喻來講,若是一個家庭表明一個進程,在家庭內部,各個成員就是線程,家庭中的每一個成員都有
義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也能夠派出幾個
成員來協同完成,而家庭以外的人則沒有辦法直接消費不屬於本身家庭的財產。
2) 什麼是Windows服務,它的生命週期與標準的EXE程序有什麼不一樣
Windows服務是運行在windows後臺指定用戶下(默認System)的應用程序,它沒有標準的UI界面,想比標準
的EXE程序,Windows服務是在服務開始的時候建立,而在服務結束的時候銷燬,並且能夠設置服務是否與操做
系統一塊兒啓動,一塊兒關閉。它支持三種方式:1)自動方式 2)手動方式 3)禁用 。自動方式的時
候,windows服務將在OS啓動後自動啓動運行,而手動方式則必須手工啓動服務,禁用的狀況下服務將不能被
啓動。另外標準的EXE默認使用的當前登陸的用戶,而windows服務則默認使用System用戶,這在對系統資源訪
問的時候特別須要注意。
3) Windows單個進程所能訪問的最大內存量是多少?它與系統的最大虛擬內存同樣嗎?這對於系統設計有什麼
影響?
這個須要針對硬件平臺,公式爲單個進程能訪問的最大內存量=2的處理器位數次方/2,好比一般狀況下,32位
處理器下,單個進程所能訪問的最大內存量爲:232 /2 = 2G 。單個進程能訪問的最大內存量是最大虛擬內存
的1/2,由於要分配給操做系統一半虛擬內存。
4) 什麼是強類型,什麼是弱類型?哪一種更好些?爲何?
強類型是在編譯的時候就肯定類型的數據,在執行時類型不能更改,而弱類型在執行的時候纔會肯定類型。沒有
好很差,兩者各有好處,強類型安全,由於它事先已經肯定好了,並且效率高。通常用於編譯型編程語
言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運行的時候容易出現錯誤,但它靈活,多用於解釋型編
程語言,如javascript,vb等
5) PID是什麼?在作系統的故障排除時如何使用它?
PID是進程編號,在系統發現故障的時候,能夠根據它尋找故障所發生的具體進程,而且可經過visual studio.net
等ide將故障進程附加到進程中進行調試(debug)
6) 單個TCP/IP端口上可以被多少個進程偵聽?
1個
7) 什麼是GAC?它解決了什麼問題?
Gloal Assembly Cache,全局應用程序集緩存。它解決了幾個程序共享某一個程序集的問題。沒必要再將那個被共
享的程序集拷貝到應用程序目錄了,其實這道理很簡單,.net應用程序在加載的時候,會首先查看全局應用程序
集緩存,若是有就能夠直接使用,沒有再到應用程序目錄進行查找。
1.白盒測試和黑盒測試
答:黑盒測試:已知產品的功能設計規格,能夠進行測試證實每一個實現了的功能是否符合要求。
白盒測試:已知產品的內部工做過程,能夠經過測試證實每種內部操做是否符合設計規格要求,全部內部成
分是否以通過檢查。
軟件的黑盒測試意味着測試要在軟件的接口處進行。這種方法是把測試對象看作一個黑盒子,測試人員徹底
不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明
。所以黑盒測試又叫功能測試或數據驅動測試。黑盒測試主要是爲了發現如下幾類錯誤:
一、是否有不正確或遺漏的功能?
二、在接口上,輸入是否能正確的接受?可否輸出正確的結果?
三、是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤?
四、性能上是否可以知足要求?
五、是否有初始化或終止性錯誤?
軟件的白盒測試是對軟件的過程性細節作細緻的檢查。這種方法是把測試對象看作一個打開的盒子,它容許
測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序全部邏輯路徑進行測試。經過在不
同點檢查程序狀態,肯定實際狀態是否與預期的狀態一致。所以白盒測試又稱爲結構測試或邏輯驅動測試。白盒
測試主要是想對程序模塊進行以下檢查:
一、對程序模塊的全部獨立的執行路徑至少測試一遍。
二、對全部的邏輯斷定,取「真」與取「假」的兩種狀況都能至少測一遍。
三、在循環的邊界和運行的界限內執行循環體。
四、測試內部數據結構的有效性,等等。
請簡述一下用Socket進行同步通信編程的詳細步驟
一、在應用程序和遠程設備中使用協議和網絡地址初始化套接字
二、在應用程序中經過指定端口和地址創建監聽
三、遠程設備發出鏈接請求
四、應用程序接受鏈接產生通訊scoket
五、應用程序和遠程設備開始通信(在通信中應用程序將掛起直到通信結束)
六、通信結束,關閉應用程序和遠程設備的Socket回收資源
OSI網絡結構的七層模型及其核心思想是什麼
第七層:應用層
定義了用於在網絡中進行通訊和數據傳輸的接口 – 用戶程式;
提供標準服務,好比虛擬終端、文件以及任務的傳輸和處理;
第六層:表示層
掩蓋不一樣系統間的數據格式的不一樣性;
指定獨立結構的數據傳輸格式;
數據的編碼和解碼;加密和解密;壓縮和解壓縮
第五層:會話層
管理用戶會話和對話;
控制用戶間邏輯鏈接的創建和掛斷;
報告上一層發生的錯誤
第四層:傳輸層
管理網絡中端到端的信息傳送;
經過錯誤糾正和流控制機制提供可靠且有序的數據包傳送;
提供面向無鏈接的數據包的傳送;
第三層:網絡層
定義網絡設備間如何傳輸數據;
根據惟一的網絡設備地址路由數據包;
提供流和擁塞控制以防止網絡資源的損耗
第二層:數據鏈路層
定義操做通訊鏈接的程序;
封裝數據包爲數據幀;
監測和糾正數據包傳輸錯誤
第一層:物理層
定義經過網絡設備發送數據的物理方式;
做爲網絡媒介和設備間的接口;
定義光學、電氣以及機械特性。
2 幾十上百萬行,如何快速查詢出表數據
答:用分頁存儲過程
/*
函數名稱: GetRecordFromPage
函數功能: 獲取指定頁的數據
參數說明: @tblName 包含數據的表名
@fldName 關鍵字段名
@PageSize 每頁記錄數
@PageIndex 要獲取的頁碼
@OrderType 排序類型, 0 – 升序, 1 – 降序
@strWhere 查詢條件 (注意: 不要加 where)
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), — 表名
@fldName varchar(255), — 字段名
@PageSize int = 10, — 頁尺寸
@PageIndex int = 1, — 頁碼
@OrderType bit = 0, — 設置排序類型, 非 0 值則降序
@strWhere varchar(2000) = 」 — 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) — 主語句
declare @strTmp varchar(1000) — 臨時變量
declare @strOrder varchar(500) — 排序類型
if @OrderType != 0
begin
set @strTmp = ‘<(select min’
set @strOrder = ‘ order by [' + @fldName + '] desc’
end
else
begin
set @strTmp = ‘>(select max’
set @strOrder = ‘ order by [' + @fldName +'] asc’
end
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + ']‘ + @strOrder + ‘) as tblTmp)’
+ @strOrder
if @strWhere != 」
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + '] where ‘ + @strWhere + ‘ ‘
+ @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrder
if @PageIndex = 1
begin
set @strTmp = 」
if @strWhere != 」
set @strTmp = ‘ where (‘ + @strWhere + ‘)’
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + ']‘ + @strTmp + ‘ ‘ + @strOrder
end
exec (@strSQL)
GO
3、數據庫查詢優化:
一、多態性,多種數據庫兼容;
二、支持翻頁,支持查詢總數,頁碼顯示;
三、能處理100萬以上數據量;
答:
CREATE PROCEDURE dbo.LSP_SP_SelectElementByPage
@SelectFields varchar(200),/*要查詢的字段列表*/
@Condition varchar(300),/*查詢條件*/
@PageSize int =20,/*頁面大小,默認爲20*/
@PageNumber int =1/*頁號,默認爲第一頁*/
/*@PageCount int out返回知足條件的總頁數*/
AS
begin
declare @count int
select @count =count(*) from lsp_t_elementInfo
if(@count %@PageSize=0)
set @count = @count/@PageSize
else
set @count = @count/@PageSize +1
select @count PageCount
select IDENTITY(int,1,1) as iid,ElementName,Type into #temptable from LSP_T_ElementInfo
select * from #temptable where iid between @PageSize * (@PageNumber -1) and @PageSize * @PageNumber
end
GO
1.兩個表,寫查詢語句,根據兩個字段一個是升序,一個將序。
答:select * from a,b where a.字段1 = b.字段1 order by a.字段2 asc,b.字段2 desc
2.根據第一題,每頁面顯示10條記錄,在第25頁時怎樣顯示
答:
/*
函數名稱: GetRecordFromPage
函數功能: 獲取指定頁的數據
參數說明: @tblName 包含數據的表名
@fldName 關鍵字段名
@PageSize 每頁記錄數
@PageIndex 要獲取的頁碼
@OrderType 排序類型, 0 – 升序, 1 – 降序
@strWhere 查詢條件 (注意: 不要加 where)
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), — 表名
@fldName varchar(255), — 字段名
@PageSize int = 10, — 頁尺寸
@PageIndex int = 1, — 頁碼
@OrderType bit = 0, — 設置排序類型, 非 0 值則降序
@strWhere varchar(2000) = 」 — 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) — 主語句
declare @strTmp varchar(1000) — 臨時變量
declare @strOrder varchar(500) — 排序類型
if @OrderType != 0
begin
set @strTmp = ‘<(select min’
set @strOrder = ‘ order by [' + @fldName + '] desc’
end
else
begin
set @strTmp = ‘>(select max’
set @strOrder = ‘ order by [' + @fldName +'] asc’
end
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + ']‘ + @strOrder + ‘) as tblTmp)’
+ @strOrder
if @strWhere != 」
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['
+ @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['
+ @fldName + '] from [' + @tblName + '] where ‘ + @strWhere + ‘ ‘
+ @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrder
if @PageIndex = 1
begin
set @strTmp = 」
if @strWhere != 」
set @strTmp = ‘ where (‘ + @strWhere + ‘)’
set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['
+ @tblName + ']‘ + @strTmp + ‘ ‘ + @strOrder
end
exec (@strSQL)
GO
2.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer, 以自動增加的ID做爲主鍵, 注意:ID可能不是連續的。)
select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
3.public class c{ public c(string a) : this() {;}; public c() {;} } 解釋第一個構造函數中發生了什麼?這個構造函數有什麼用?
(第一個構造函數調用了第二個構造函數,這個構造函數構造了一個c對象的實例。)
4.一個長度爲10000的字符串,經過隨機從a-z中抽取10000個字符組成。請用c#語言編寫主要程序來實現。
答:
using System.Text;
StringBuilder sb = new StringBuilder(0, 10000);
string strABC = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
string[] ABC = strABC.Split(‘,’);
int len = ABC.Length;
Random rd = new Random();
for (int i = 0; i < 10000; i++)
{
sb.Append(ABC[rd.Next(len)]);
}
5.產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
2.如何把一個Array複製到ArrayList裏
答:
foreach( object o in array )arrayList.Add(o);
8.用C#寫一段選擇排序算法,要求用本身的編程風格。
答:private int min;
public void xuanZhe(int[] list)//選擇排序
{
for (int i = 0; i < list.Length – 1; i++)
{
min = i;
for (int j = i + 1; j < list.Length; j++)
{
if (list[j] < list[min])
min = j;
}
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
4.寫一個函數計算當參數爲N的值:1-2+3-4+5-6+7……+N
答:public int returnSum(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
{
int k = i;
if (i % 2 == 0)
{
k = -k;
}
sum = sum + k;
}
return sum;
}
public int returnSum1(int n)
{
int k = n;
if (n == 0)
{
return 0;
}
if (n % 2 == 0)
{
k = -k;
}
return aaa(n – 1) + k;
}
7. 某一密碼僅使用K、L、M、N、O共5個字母,密碼中的單詞從左向右排列,密碼單詞必須遵循以下規則 :
(1) 密碼單詞的最小長度是兩個字母,能夠相同,也能夠不一樣
(2) K不多是單詞的第一個字母
(3) 若是L出現,則出現次數不止一次
(4) M不能使最後一個也不能是倒數第二個字母
(5) K出現,則N就必定出現
(6) O若是是最後一個字母,則L必定出現
問題一:下列哪個字母能夠放在LO中的O後面,造成一個3個字母的密碼單詞?
A) K B)L C) M D) N
答案:B
問題二:若是能獲得的字母是K、L、M,那麼可以造成的兩個字母長的密碼單詞的總數是多少?
A)1個 B)3個 C)6個 D)9個
答案:A
問題三:下列哪個是單詞密碼?
A) KLLN B) LOML C) MLLO D)NMKO
答案:C
62-63=1 等式不成立,請移動一個數字(不能夠移動減號和等於號),使得等式成立,如何移動?
答案:62移動成2的6次方
17、列出經常使用的使用javascript操做xml的類包
答:
XML.prototype.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
XML.prototype.InitXML=InitXML;
XML.prototype.getFirstChild=getFirstChild;
XML.prototype.getLastChild=getLastChild;
XML.prototype.getChild=getChild; // 取得節點值
XML.prototype.getNodeslength=getNodeslength; // 最得節點下的子節點的個數
XML.prototype.getNode=getNode; // 取得指定節點
XML.prototype.delNode=delNode; // 刪除指定節點,若是節點相同,則刪除最前面的節點.
XML.prototype.getNodeAttrib=getNodeAttrib; // 取得節點的指定屬性值.
XML.prototype.InsertBeforeChild=InsertBeforeChild; // 在指定節點以前插入一個節點.
XML.prototype.InsertChild=InsertChild; // 在指定節點下插入節點.
XML.prototype.setAttrib=setAttrib; // 設置指定屬性的值.
XML.prototype.setNodeValue=setNodeValue; // 設置指定節點的值.
XML.prototype.CreateNodeS=CreateNodeS; // 建立一個指定名的節點.
XML.prototype.addAttrib=addAttrib; // 爲指定節點添加指定屬性,並設置初值.
XML.prototype.FindString=FindString; // 在指定節點下查找字符串.
給定如下XML文件,完成算法流程圖<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 );
}
}
6.C#代碼實現,確保windows程序只有一個實例(instance)
///<summary>
///應用程序的主入口點。
///</summary>
[STAThread]
staticvoid Main()
{
//防止程序屢次運行
if(!OneInstance.IsFirst("GetPayInfo"))
{
MessageBox.Show ("警告:程序正在運行中! 請不要重複打開程序!可在右下角系統欄找到!","程序錯誤提
示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
Application.Run(new Form1());
}
// ******************* 防止程序屢次執行 **************************
publicabstractclass OneInstance
{
///<summary>
///判斷程序是否正在運行
///</summary>
///<param name="appId">程序名稱</param>
///<returns>若是程序是第一次運行返回True,不然返回False</returns>
publicstaticbool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}
做者:曾祥展
出處:學無止境-博客園 (http://www.cnblogs.com/zengxiangzhan/)
版權聲明:本文的版權歸做者與博客園共有。轉載時須註明本文的詳細連接,不然做者將保留追究其法律責任。
————————————————————————————————————————————–
從學習中獲得樂趣,從樂趣中獲得靈感,從靈感中創造真知。Think well,just do it.
1.C#中全部類型的基類是什麼?請具體說明。
答:在.NET CTS(Common TypeSystem)中,每個類型都直接或間接繼承自Object類,全部這些類型其實都包含於命名空間System中,因此C#中全部類型的基類是 System.Object。CTS中所定義的每種類型,若是不是引用類型,那麼就是值類型。引用類型直接繼承自Object,全部值類型直接繼承自 ValueType,ValueType又繼承自Object。
.NET中引用類型包括:Class, Interface, Array, String, Delegate等.除此以外的那些類型都是值類型。
2. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。
答:private : 私有成員, 在類的內部才能夠訪問。
protected : 保護成員,在該類內部和繼承類中能夠訪問。
public : 公共成員,徹底公開,沒有訪問限制。
internal: 在同一命名空間內能夠訪問。
3.列舉ASP.NET頁面之間傳遞值的幾種方式。
答:1.URL傳值
這是經典的傳值方式, 如XXX.aspx?id=1&name=c; 不過所傳遞的值是會顯示在瀏覽器的地址欄上的,並且不能傳遞對象。因此這種方法通常用於傳遞的值少且安全性要求不高的狀況下。
2.Session傳值
這種方法將每份數據存儲於服務器變量中,能夠傳遞比較多的數據,而且安全性較高,因此經常使用於用戶身份的驗證功能中。不過,Session變量若是存儲過多的數據會消耗過多的服務器資源,編程者在使用時應該慎重。Session可在應用程序的多個頁面中以名稱/值對的方式共享,直到瀏覽用戶關閉本身的瀏覽器或者服務器Session超時(可設置,默認爲20分鐘)中止。
Session具備如下特色:
Session中的數據保存在服務器端;
Session中能夠保存任意類型的數據;
Session默認的生命週期是20分鐘,能夠手動設置更長或更短的時間。
3.Cookie傳值
Cookie 是一種比較特殊的數據存儲方式,由於這種方式將數據存儲於瀏覽用戶的電腦中,以文本文件的形式存在於磁盤中。這種方式很是有意思,不少登陸系統就是利用 Cookie實現用戶自動登陸。即用戶登陸一次的登陸信息將被寫入到用戶電腦的Cookie文件中,下次登陸時,網站自動讀取該Cookie完成身份驗證。經過Cookie傳遞數據雖然很方便,保存時間能夠自由設置,可是安全性不高,編程者不該過於依賴Cookie,而應採用結合的方式完成敏感數據的存儲。
Cookie保存數據有如下特色:
Cookie中的數據保存在客戶端;
Cookie中只能保存字符串類型的數據,若是須要在Cookie中保存其它類型數據,須要將其轉換成字符串類型後保存;
Cookie也有其默認生命週期,也能夠手動設置,最大可設置成50年以後過時。
4.Server.Transfer傳值
這個方法的步驟相對較多,使用該方法能夠在另外一個頁面以公開對象屬性的方式來存取值,使用這種方法是面向對象的。該方法的代碼編寫並不複雜,首先經過定義一個public權限的屬性,該屬性可返回所需傳遞的值。而後在第二個頁面中,使用Context.Handler屬性來得到前一個頁面實例對象的引用,便可經過訪問自定義的屬性獲取須要的值。
5.Application傳值
嚴格地說應該是經過HttpApplication對象在服務器端生成一個狀態變量來存儲所需的信息,該HttpApplication對象變量的可用範圍覆蓋整個WEB應用程序。因此該對象通常存儲一些要公佈的信息,如在線人數等,而對於那些涉及用戶我的的敏感數據則不用這種方法存儲。 HttpApplication對象有兩個經常使用的方法,即Lock和UnLock方法,可用於處理多個用戶對存儲在Application變量中的數據進行寫入的問題。Lock方法鎖定所有的Application變量,從而阻止其餘用戶修改Application對象的變量值,UnLock方法則解除對 HttpApplication對象變量的鎖定。經過HttpApplication對象傳值的方法和Session比較類似,可是Session是對於每一個單獨的用戶,當該用戶關閉瀏覽器,則Session失效。HttpApplication對象存儲的變量是針對全部訪問程序的用戶,即便有用戶關閉了瀏覽器,變量的值不會丟失。
6.跨頁面傳送
跨頁面傳送和調用HttpServerUtility對象的Transfer方法有類似之處,不過效率更高。由於調用HttpServerUtility對象的Transfer方法是基於服務器的方法,而跨頁面傳送是基於瀏覽器端的。這個方法主要是設置控件的「PostBackUrl」屬性,使該控件(如 Button)操做後轉向指定頁面,而且這個指定頁面能夠直接獲取前一個頁面的全部控件對象及其屬性值。
7.若是有特殊須要,還能夠使用其餘方法,例如經過數據庫存儲臨時數據等。
4.什麼是委託?事件是否是一種委託?委託和事件的區別?爲何要使用委託?
答 : 委託是指具備相同函數簽名(返回類型相同,參數類型、參數順序及參數個數相同)的函數或方法的抽象,關鍵字爲delegate。
主要用途是三個:1)函數回調;2)傳遞方法;3)事件機制。
一個委託就是一個對象,它包含一個引用,指向一個方法。一旦建立並加以初始化,就能夠將委託做爲參數傳入另外一個方法並調用,委託不帶方法體。
事件是一種消息機制,一個狹義的委託,也就是事件是一個用於事件驅動模型的專用委託,對事件的聲明,實際是聲明一個私有的委託變量,對委託變量進行封裝,即委託變量加上event關鍵字後,無論其前面的訪問修飾符是public仍是private,編譯器都會將其編譯爲private。事件是一種特殊的委託。
委託是一個類,它定義了方法的類型,使得能夠將方法看成另外一個方法的參數來進行傳遞,這種將方法動態地賦給參數的作法,能夠避免在程序中大量使用If-Else(Switch)語句,同時使得程序具備更好的可擴展性。以委託爲參數的函數具備必定的通用性。使用委託能夠將多個方法綁定到同一個委託變量,當調用此變量時(這裏用「調用」這個詞,是由於此變量表明一個方法),能夠依次調用全部綁定的方法。
5.override與重載的區別
答 :重載是方法的名稱相同,但參數或參數類型不一樣。進行屢次重載以適應不一樣的需求。
override 是進行對基類中方法的重寫。主要針對標識virtual的虛函數。兩者實質就不一樣。
6.一列數的規則以下: 一、一、二、三、五、八、1三、2一、34…… 求第30位數是多少, 用遞歸算法實現。
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i – 2);
}
}
7.請編程遍歷頁面上全部TextBox控件並給它賦值爲string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
8.請編程實現一個冒泡排序算法?
答:
int [] array = new int ;
int temp = 0 ;
for (int i = 0 ; i < array.Length – 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
9.求如下表達式的值,寫出您想到的一種或幾種實現方法: 1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum – I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
10.描述一下C#中索引器的實現過程,是否只能根據數字進行索引?
答:C# 中的索引器一般用於索引數組,索引器不單能索引數字(數組下標),還能索引一些HASHMAP的字符串,因此,一般來講,C#中類的索引器一般只有一個,就是THIS,但也能夠有無數個,只要你的參數列表不一樣就能夠了,索引器和返回值無關。 不是隻能根據數字進行索引,能夠用任意類型。
11.在下面的例子裏
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()建立B的實例時,產生什麼輸出?
答:X=1,Y=0;
12.ASP.net的身份驗證方式有哪些?分別是什麼原理?
答:Windows驗證(默認)用IIS,Forms驗證用帳戶,Passport驗證用密鑰。
13.在C#中,string str = null 與 string str = "" 請儘可能使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度爲空字符串的內存空間。
14.請詳述在.NET中類(class)與結構(struct)的異同?
答:結構不能有默認的構造函數,爲結構的副本是由編譯器建立和銷燬的,因此不須要默認的構造函數和析構函數。結構是值類型,因此對結構變量所作的改變不會影響其原值,而類是引用類型,改變其變量的值會改變其原值。向方法傳遞結構時是經過值傳遞的,而不是經過引用。Class能夠被實例化,屬於引用類型,是分配在內存的堆上的,Struct屬於值類型,是分配在內存的棧上的。類能夠實現接口。Class默認成員訪問爲private的,而結構是public的。
15.根據委託(delegate)的知識,請完成如下用戶控件中代碼片斷的填寫:
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 );
16.分析如下代碼,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代碼執行完後,i= j=
答:i=13,j=10
17.給定如下XML文件,完成算法流程圖。
<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 );
}
}
C#:
Public void DomDepthFirst(XmlNode currentNode)
{
XmlNode node=currentNode.FirstChild;
while(node!=null)
{
DomDepthFirst(node);
node=node.NextSibling;
}
if(node.Name=="File")
{
Console.Write(((XmlElement)node).GetAttribute("FileName")+"\r\n");
}
}
18.GC是什麼? 爲何要有GC?
答:GC是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。要請求垃圾收集,能夠調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
19.String s = new String("xyz");建立了幾個String Object?
答:兩個對象,一個是「xyz」,一個是指向「xyz」的引用對象s。
20.抽象類和接口有什麼區別?
答:抽象類是abstract修飾符用於表示所修飾的類不是完整的,而且只能用做基類。它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。抽象類不能建立類的實例,然而能夠建立一個變量,其類型是一個抽象類,並讓它含有對非抽象類的實例的引用。不能有抽象構造函數或抽象靜態方法。abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類。抽象類不能被密封。
接口(interface)是抽象類的變體。接口中的全部方法都是抽象的,沒有一個有程序體。多繼承性可經過實現這樣的接口而得到。接口只能夠定義static final成員變量。接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。
21.short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
答:short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,因此不能顯式轉化爲short型,可修改成s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
22.談談final, finally, finalize的區別。
答:
final,修飾符(關鍵字)若是一個類被聲明爲final,意味着它不能再派生出新的子類,不能做爲父類被繼承。所以 一個類不能既被聲明爲abstract的,又被聲明爲final的。將變量或方法聲明爲final,能夠保證它們在使用中不被改變。被聲明爲final的變量必須在聲明時給定初值,而在之後的引用中只能讀取,不可修改。被聲明爲 final的方法也一樣只能使用,不能重載。
finally,在異常處理時提供 finally 塊來執行任何清除操做。若是拋出一個異常,那麼相匹配的 catch 子句就會執行,而後控制就會進入finally 塊(若是有的話)。
finalize,方法名。Finallize表示是object類一個方法,在垃圾回收機制中執行的時候會被調用被回收對象的方法。
23.進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進程的資源。
24.產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
25.大概描述一下ASP.NET服務器控件的生命週期。
答:頁請求->開始->頁初始化-> 加載-> 驗證-> 處理回發事件-> 預呈現-> 保存狀態-> 呈現-> 卸載.
26.HashMap和Hashtable的區別。
答:HashMap是Hashtable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在於HashMap鍵值能夠爲空(null),因爲非線程安全,效率上可能高於Hashtable.
27.error和exception有什麼區別?
答:error 表示恢復不是不可能但很困難的狀況下的一種嚴重問題。好比說內存溢出。不可能期望程序能處理這樣的狀況。exception 表示一種設計或實現問題。也就是說,它表示若是程序運行正常,從不會發生的狀況。
28.下面的例子中
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);
}
}
產生的輸出結果是什麼?
答:x=1,y=2
29.死鎖的必要條件?怎麼克服?
答:系統的資源不足,進程的推動的順序不合適,資源分配不當,一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已阻塞,對已得到資源不放,進程得到資源時,未使用完前,不能強行剝奪。
30.接口是否能夠繼承接口?抽象類是否能夠實現接口?抽象類是否能夠繼承實體類?
答:接口是能夠繼承接口的,抽象類是能夠實現接口的,抽象類能夠繼承實體類,可是有個條件,條件是,實體類必需要有明確的構造函數。
31.New有幾種用法?
答:有3種,第一種是,實例化如:New Class()。第二種是,public new 隱藏基類的方法。
第三種是,在泛型類申明中的任何類型參數都必須有公共的無參構造函數。
32.UDP和TCP鏈接有和異同?
答:TCP 是傳輸控制協議,提供的是面向鏈接的,是可靠的,字節流服務,當用戶和服務器彼此進行數據交互的時候,必須在他們數據交互前要進行TCP鏈接以後才能傳輸數據。TCP提供超時重撥,檢驗數據功能。UDP是用戶數據報協議,是一個簡單的面向數據報的傳輸協議,是不可靠的鏈接。
33.什麼叫應用程序域?什麼是託管代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別做何解釋?
答:應用程序域:就是爲安全性,可靠性,隔離性,和版本控制,及卸載程序提供的隔離邊界。它一般由運行庫宿主建立,應用程序域提供了一個更安全,用途更廣的處理單元。
託管代碼:使用CLR編譯語言編輯器開發編寫的代碼就叫託管代碼。
裝箱和拆箱:是把值類型轉換爲引用類型的過程,是隱式的,相反的過程就是拆箱,是顯式的。
裝箱分3部:
1)分配內存空間。包括要裝箱的值類型的空間、方法表、SynBlockIndex,其中後二者用來管理引用對象。
2)值複製。把堆棧中要裝箱的值複製到堆上。
3)返回引用對象的引用。
拆箱也分3部:
1) 檢查類型,確保引用類型是裝箱的結果。
2)指針返回,返回要拆箱的引用類型中的值的地址。
3)字段拷貝,把引用類型中的字段拷貝到堆棧中。
CTS是通用類型系統,CLS是通用語言規範,CLR通用語言運行時。
強類型系統:每一個變量和對象都必須具備申明類型。
34.web service 數據傳輸有什麼限制? 爲何?DataTable能夠做爲web service參數傳遞嗎?
答:所傳輸的數據必須是可序列化的。由於須要轉換爲XML格式以能夠穿越防火牆,作到真正的數據共享。由於DataSet處理DataTable的序列化以便進行封送處理,因此沒法傳遞單個DataTable。在ADO.NET 的三個基本數據對象 — DataReader、DataTable 和 DataSet 中,只有 DataSet 能夠與 Web服務之間傳遞。這是由於,爲了與 Web 服務進行通訊,對象必須是可序列化的。(序列化是一個過程,它用於將對象的公共屬性轉換爲 XML,而且由於XML 只是純文本,因此能夠將其從一個應用程序傳輸到另外一個應用程序,而且能夠穿越防火牆,從而克服了 COM的主要障礙之一。)DataReader 沒法序列化,由於它們須要到服務器的開放鏈接。而且,由於 DataSet 處理 DataTable的序列化以便進行封送處理,因此您也沒法傳遞單個 DataTable。
35.垃圾回收機制?
答:CLR實現的自動內存管理。須要清楚的幾點:
1)什麼被認爲是可回收的對象?
GC採用必定的算法遍歷全部的對象,找出可達對象和不可達對象,不可達對象是可回收的對象。
2)何時回收?
一般狀況下:內存不足溢出時,確切的說,是第一代對象已滿的時候。
3)如何回收?
垃圾收集進程來釋放不可達對象的內存空間。
4)回收完後,還須要作什麼?
避免託管堆上的內存碎片,從新分配內存,壓縮託管堆。
5)避免垃圾回收帶來的性能影響,採用代齡機制。
36.string和stringBuilder的區別,爲何同時存在2個類?
答:String類對象是不可改變的(只讀),對於String對象的從新賦值在本質上是從新建立了一個String對象並將新值賦予該對象,其方法ToString對性能的提升並不是很顯著。 由於一旦建立了該對象,就不能修改該對象的值。
在處理字符串時,最好使用stringBuilder類,其.NET命名空間是System.Text。該類並非建立新的對象,而是經過 append,remove,insert等方法直接對字符串進行操做,經過toString方法返回操做結果,所以當你須要大量拼接、刪除、修改字符串時,使用stringBuilder能夠優化性能。
37.在.net中,配件的意思是?
答:程序集。包括(中間語言(IL),元數據(metaData),資源(resource),裝配清單(AL))。
38.談一下remoting和webservice兩項技術的理解(或有什麼區別)以及實際中的應用。
答:WS 主要是可利用HTTP,穿透防火牆。而Remoting能夠利用TCP/IP,二進制傳送提升效率。remoting是.net中用來跨越 machine, process, appdomain進行方法調用的技術,對於三層結構的程序,就能夠使用remoting技術來構建.它是分佈應用的基礎技術.至關於之前的DCOM 。主要用在C/S架構的系統中。webService是一種構建應用程序的普通模型,並能在全部支持internet 網通信的操做系統上實施。webService使基於組件的開發和web的結合達到最佳,基於組件的對象模型。主要用在B/S架構的系統中。
39.須要實現對一個字符串的處理,首先將該字符串首尾的空格去掉,若是字符串中間還有連續空格的話,僅保留一個空格,即容許字符串中間有多個空格,但連續的空格數不可超過一個.
答:string inputStr=" xx xx ";
inputStr = Regex.Replace(inputStr.Trim(), @"\s+", " ");
40.用.net作B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲何要這樣分層?
答:通常爲3層 數據訪問層,業務層,表示層。 數據訪問層對數據庫進行增刪查改。業務層通常分爲二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。 表示層爲了與用戶交互例如用戶添加表單。 優勢:分工明確,條理清晰,易於調試,並且具備可擴展性。 缺點: 增長成本。
41.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增加的ID做爲主鍵,注意:ID可能不是連續的。
答:解1: select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
42.ADO。NET相對於ADO等主要有什麼改進?
答:1:ado.net不依賴於ole db提供程序,而是使用.net託管提供的程序
2:不使用com
3:不在支持動態遊標和服務器端遊
4:,能夠斷開connection而保留當前數據集可用
5:強類型轉換
6:xml支持
43.讀下列程序,你能說出其中進行了幾回裝箱和拆箱的操做嗎?
using System;
class sample1
{
public static void Main()
{
int i=10;
object obj=i;
Console.WriteLine(i+","+(int)obj);
}
}
其中發生了三次裝箱操做和一次拆箱操做。第一次object obj=i;將i裝箱;而Console.WriteLine方法用的參數是String對象,所以,i+","+(int)obj中,i須要進行一次裝箱(轉換成String對象),(int)obj將obj對象拆箱成值類型,而根據WriteLine方法,比較將(int)obj值裝箱成引用類型。