1.asp.net中的身份驗證有那些?你當前項目采用什么方式驗證請解釋
身份驗證是從用戶獲取名稱和密碼等標識憑證并根據某些機構驗證這些憑據的過程。如果憑據有效,則提交該憑據的實體被視為通過身份驗證的標識。一旦標識通過了身份驗證,則身份驗證過程會確定該標識是否可以訪問給定的資源。
通過身份驗證提供程序、包含驗證請求者憑據所需代碼的代碼模塊來實現身份驗證。
Forms 身份驗證
通過其可將沒有通過身份驗證的請求重定向到使用 HTTP客戶端重定向的 HTML窗體的系統。用戶提供憑據并提交該窗體。如果應用程序驗證該請求,系統就會發出包含憑據或密鑰的 Cookie以重新獲取該標識。后續的請求在請求標題中隨 Cookie一起發出,ASP.NET事件處理程序會使用應用程序開發人員指定的任何驗證方法去驗證請求并給其授權。
assport 身份驗證 由 Microsoft提供的集中身份驗證服務,用于為成員站點提供單一登錄和核心配置服務。
Windows 身份驗證 身份驗證 ASP.NET會結合 Internet信息服務 (IIS)身份驗證使用 Windows身份驗證。IIS以下列三種方式執行身份驗證:基本身份驗證、摘要式身份驗證或集成 Windows身份驗證。當 IIS身份驗證完成后,ASP.NET會使用驗證過的標識授權訪問權限。
<authentication mode= "[Windows|Forms|Passport|None]"/>
2.什么是WEB控件?使用WEB控件有那些優勢?
HTML控件是在客戶端運行的,只有加上RUNAT=SERVER才能作為服務器控件(WEB控件)運行
也就是說,要在.NET程序中針對控件操作,只能是針對服務器控件,包括修改它的屬性
而不能夠針對HTML控件操作.HTML控件可以像ASP一樣,通過客戶端的腳本來控制
3.請解釋ASP。NET中以什么方式進行數據驗證?
a. RequiredFieldValidator:檢查用戶是否輸入;
b. CompareValidator:檢查兩個表單輸入項的輸入信息是否存在某種指定關系,比如大、等于等;
c. RangeValidator:檢查用戶輸入是否在某一指定范圍;
d. RegularExPRessionValidator:檢查用戶輸入是否符合某一指定的正則表達式要求;
e. CustomValidator:檢查用戶輸入是否符合開發者指定的驗證邏輯規則。
4.請談談對正則表達式的看法?
一個正則表達式,就是用某種模式去匹配一類字符串的一個公式
5.ASP。NET中共有幾種類型的控件?各有什么區別?
HTML 和 WEB
6.WEB控件可以激法服務端事件,請談談服務端事件是怎么發生并解釋其原理?自動傳回是什么?為什么要使用自動傳回。
Asp.net 中在客戶端觸發服務端事件分為兩種情況:一. WebControls中的Button和HtmlControls中的Type為submit的HtmlInputButton
這兩種按鈕最終到客戶端的表現形式為: input name="Submit1" id="Submit1" type="submit" value=”Submit”>,這是Form表單的提交按鈕,以后會作為參數發送到服務端,參數是這樣的:控件的name屬性=控件的value值,對應上面的例子就是:Submit1= Submit。服務端會根據接收到的控件的name屬性的這個key來得知是這個按鈕被了,從而在服務端觸發這個按鈕的事件。二. HtmlControls 中的 Type為button的HtmlInputButton和其它所有的控件事件,比如LinkButton,TextBox的Change事件等等:
這些事件在客戶端產生后會經過一個統一的機制發送到服務端。1.首先asp.net頁框架會使用兩個Hidden域來存放表示是哪個控件觸發的事件,以及事件的參數:!—表示觸發事件的控件,一般是這個控件的name -->input type="hidden" name="__EVENTTARGET" value="" />!—表示觸發事件的參數,一般是當某個控件有兩個以上的事件時,用來區別是哪個事件 -->input type="hidden" name="__EVENTARGUMENT" value="" />2. 服務端會生成一個jscript的方法來處理所有這些事件的發送,這段代碼是:script language="javascript">!--function __doPostBack(eventTarget,eventArgument) {var theform = document.WebForm2;theform.__EVENTTARGET.value= eventTarget;theform.__EVENTARGUMENT.value = eventArgument;theform.submit();}// -->/script>3.每個會
引發服務端事件的控件都會在響應的客戶端事件中調用上面的代碼:比如,HtmlControls中的 Type為button的HtmlInputButton的事件!—客戶端的事件調用__doPostBack,eventTarget參數為
‘Button2‘,表示是name為‘Button2’控件觸發的事件,eventArgument為空,表示這個Type為button的HtmlInputButton只有一個客戶端觸發的服務端事件-->input language="Javascript"
onclick="__doPostBack(‘Button2‘,‘‘)" name="Button2" id="Button2" type="button"value="Button" />又比如,TextBox控件的Change事件!—客戶端的onchange事件調用__doPostBack,
eventTarget參數為’TextBox1’,表示是name為’TextBox1’控件觸發的事件,而TextBox控件只有一個客戶端觸發的服務端事件TextChanged,故服務器就會去觸發這個TextBox的TextChanged事件->input name="TextBox1" type="text" id="TextBox1" onchange="__doPostBack(‘TextBox1‘,‘‘)" language="javascript" />4.客戶端觸發事件后調用__doPostBack方法,將表示觸發的控件源的eventTarget和事件參數eventArgument分別付給兩個隱藏域__EVENTTARGET和__EVENTARGUMENT,然后提交Form,在服務端根據__EVENTTARGET和__EVENTARGUMENT來判斷是哪個控件的什么事件觸發了。
7.寫出一條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)
8.override與重載的區別
Override用來重寫父類的方法,重載使用相同名的方法或操作符擁有不同類型的參數
9、.net的錯誤處理機制是什么?
.net錯誤處理機制采用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的Catch為止。
10.datagrid.datasouse可以連接什么數據源 [dataset,datatable,dataview] dataset,datatable,dataview , IList
11.什么是ASP.net中的用戶控件答:用戶控件就是.ascx擴展名的東西嘍,可以拖到不同的頁面中調用,以節省代碼.比如登陸可能在多個頁面上有,就可以做成用戶控件,但是有一個問題就是用戶控件拖到不
同級別的目錄下后里面的圖片等的相對路徑會變得不準確,需要自已寫方法調整.
12.值類型和引用類型的區別?寫出C#的樣例代碼。答:結構是值類型,類是引用類型,所以傳結構就是值類型的應用,傳對象或類就是引用類型的
13.ADO.net中常用的對象有哪些?分別描述一下。答:connection command sqldateadapter sqldatereader dataset datatable dataview等等.
14.。net中讀寫數據庫需要用到哪些類?他們的作用答:這個類自已可以寫的啊,你是指基類嗎?那configuration,sqlconnection,sqlcommand等都要用到.
15.什么是SOAP,有哪些應用。答:SOAP(Simple Object access Protocol )簡單對象訪問協議是在分散或分布式的環境中交換信息并執行遠程過程調用的協議,是一個基于xml的協議。使用SOAP,不用
考慮任何特定的傳輸協議(最常用的還是HTTP協議),可以允許任何類型的對象或代碼,在任何平臺上,以任何一直語言相互通信。這種相互通信采用的是XML格式的消息,
16.請解釋web.config文件中的重要節點 appSettings包含自定義應用程序設置。 system.web系統配置 compilation動態調試編譯設置 customErrors自定義錯誤信息設置 authentication身份驗證,
此節設置應用程序的身份驗證策略。 authorization授權,此節設置應用程序的授權策略.
17.請解釋轉發與跳轉的區別?轉發就是服務端的跳轉A頁面提交數據到B頁面,B頁面進行處理然后從服務端跳轉到其它頁面跳轉就是指客戶端的跳轉
18. CLR與IL分別是什么含義? CLR:公共語言運行時,類似于Java中的JVM,Java虛擬機;在.Net環境下,各種編程語言使用一種共同的基礎資源環境,這就是CLR,CLR將直接與系統進行通信,而編程語言如C#.NET將盡量避免直接與系統直接通信,加強了程序代碼的執行安全性,可以這樣看:CLR就是具體的編程語言如:C#.NET與系統之間的翻譯,同時它為具體的編程語言提供了許多資源:IL,中間語言,也稱MSIL,微軟中間語言,或CIL,通用中間語言;所有.NET源代碼(不管用哪種語言編寫)在進行編譯時都被編譯成IL。在應用程序運行時被即時(Just-In-Time,JIT)編譯器處理成為機器碼,被解釋及執行。
19 .請解釋ASP。NET中以什么方式進行數據驗證 Aps.net 中有非空驗證,比較驗證,取值范圍驗證,正則表達式驗證及客戶自定義驗證五大控件,另還有一個集中驗證信息處理控件
20.什么是受管制的代碼?
答:unsafe:非托管代碼。不經過CLR運行。
21.在.net中,配件的意思是?
答:程序集。(中間語言,源數據,資源,裝配清單)
22.請詳述在dotnet中類(class)與結構(struct)的異同?
答:Class可以被實例化,屬于引用類型,是分配在內存的堆上的,Struct屬于值類型,是分配在內存的棧上的. 23.請解釋什么是上下文對象,在什么情況下要使用上下文對象
下文對象是指HttpContext類的Current屬性,當我們在一個普通類中要訪問內置對象(Response,Request,session,Server,Appliction等)時就要以使用此對象
24.請解釋asp.net中的數據綁定與傳統數據綁定有什么區別?
傳統的數據綁定是一種“連接數據綁定”,即在數據綁定期間,客戶端一直保持與數據庫的連接,這種狀態下,數據庫的性能大受影響。
asp.net的數據綁定是一種“非連接數據綁定”,即只在讀取和更新數據的瞬間,才與數據庫連接并交換數據,之后便可釋放與數據庫的連接,數據庫的性能因此將大大提高。
25.請解釋.net采用委托實現的事件模型與JAVA中采用接口實現的事件模型有什么區別,以圖示方式解釋。
26.請解釋接口的顯式實現有什么意義?
C#中接口和類的異同接口和類都是類,不同的事,接口只包含方法或屬性的聲明,不包含具體實現方法的代碼,接口可以實現多繼承,而類只能是單繼承,繼承接口的類必須實現接口中聲明的方法或屬
性。接口主要定義一種規范,統一調用方法,在大型項目中接口正發揮日益重要的作用。
27.請編程遍歷頁面上所有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 ;
}
}
28.根據線程安全的相關知識,分析以下代碼,當調用test方法時i>10時是否會引起死鎖?并簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死鎖。但如果把int換做一個object,那么死鎖會發生)
29.簡要談一下您對微軟.NET構架下remoting和webservice兩項技術的理解以及實際中的應用。
答:WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進制傳送提高效率。
30.公司要求開發一個繼承System.Windows.Forms.ListView類的組件,要求達到以下的特殊功能:點擊ListView各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如DataGrid相
似)。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭,包該列的ID取出,按照該ID排序后,在給綁定到ListView中。
31.abstract class和interface有什么區別?
答:
聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract類的實例。然
而可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為
。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。
接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變
量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接
口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof運算符可以用來決定某對象的類是否實現了接口。
32.是否可以繼承String類?
答:String類是final類故不可以繼承。
33.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一個整數表達式。因此傳遞給 switch 和 case語句的參數應該是 int、 short、 char或者byte。long,string都不能作用于swtich。
34.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
答:都不能。
35.List, Set, Map是否繼承自Collection接口?
答:List,Set是Map不是
36.數組有沒有length()這個方法? String有沒有length()這個方法?
答:數組沒有length()這個方法,有length的屬性。String有有length()這個方法。
37.sleep()和 wait()有什么區別?
答:sleep()方法是使線程停止一段時間的方法。在sleep時間間隔期滿后,線程不一定立即恢復執行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執行,除非(a)"醒來"的線程
具有更高的優先級
(b)正在運行的線程因為其它原因而阻塞。
wait()是線程交互時,如果線程對一個同步對象x發出一個wait()調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
38.Session有什么重大BUG,微軟提出了什么方法加以解決?
答:是iis中由于有進程回收機制,系統繁忙的話Session會丟失,可以用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,而且無法捕獲Session的END事件。
39.堆和棧的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量通常在棧上。
堆:一般由程序員分配釋放。用new、malloc等分配內存函數分配得到的就是在堆上。
40.成員變量和成員函數前加static的作用?
答:它們被稱為常成員變量和常成員函數,又稱為類成員變量和類成員函數。分別用來反映類的狀態。比如類成員變量可以用來統計類實例的數量,類成員函數負責這種統計的動作
41.ASP。NET與ASP相比,主要有哪些進步?
答:asp解釋形,aspx編譯型,性能提高,有利于保護源碼。
42.請說明在.net中常用的幾種頁面間傳遞參數的方法,并說出他們的優缺點。
答:session(viewstate)簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被偽造
input ttype="hidden" 簡單,可能被偽造
url參數簡單,顯示于地址欄,長度有限
數據庫穩定,安全,但性能相對弱
43.什么是反射?
答:動態獲取程序集信息
44.當整數a賦值給一個object對象時,整數a將會被?
答:裝箱。
45.重載與覆蓋的區別?
答:1、方法的覆蓋是子類和父類之間的關系,是垂直關系;方法的重載是同一個類中方法之間的關系,是水平關系
2、覆蓋只能由一個方法,或只能由一對方法產生關系;方法的重載是多個方法之間的關系。
3、覆蓋要求參數列表相同;重載要求參數列表不同。
4、覆蓋關系中,調用那個方法體,是根據對象的類型(對象對應存儲空間類型)來決定;重載關系,是根據調用時的實參表與形參表來選擇方法體的。
46.請解釋web.config文件中的重要節點
appSettings包含自定義應用程序設置。
system.web 系統配置
compilation動態調試編譯設置
customErrors自定義錯誤信息設置
authentication身份驗證,此節設置應用程序的身份驗證策略。
authorization授權,此節設置應用程序的授權策略.
可以調用
例如:<asp:TextBox id="TextBox1" onclick="clientfunction();" runat="server">
</asp:TextBox>
<INPUT id="Button2" value="Button" name="Button2"
runat="server" onclick="clientfunction();"
新聞熱點
疑難解答