.NET面試題 – ASP.NET開發人員

來源:互聯網
上載者:User

本文大部分問題分析來源自網路,加上部分個人的部分。所有參考資料表明出處,或直接以網址形式給出。如有不正確支援望及時指出!謝謝!

ASP.NET(UI)開發人員

  1. 闡述一個基於瀏覽器的Form POST如何變成一個伺服器端的事件,如Button1_OnClick。

    對於這個問題看Artech大哥的此文http://www.cnblogs.com/artech/archive/2007/04/06/702658.html足以

  2. 什麼是PostBack?

    PostBack即回傳,也就是伺服器重建一次頁面並發送給用戶端的過程。此處推薦篇阿不同志的文章http://www.cnblogs.com/hjf1223/archive/2008/01/03/1024969.html

  3. 什麼是ViewState? 它是否被編碼過? 是否被加密過?誰會使用ViewState?

    ViewState是用來在PostBack之間儲存資訊的工具。這些資訊被儲存在頁面的一個hidden元素中。預設情況下ViewState採用了Base64來編碼。所以安全性上存在一定問題。要保護viewstate有兩種方式: 一種是防篡改,一種是加密. 一說到防篡改,我們就想起了使用散列代碼. 沒錯, 我們可以在頁面頂部加入如下代碼:Page EnableViewStateMAC=true。預設情況下asp.net是通過SHA1演算法而不是md5演算法來產生散列,不過這個可以在machine.config裡面配置machineKey validation="MD5"即可。viewstate加密, 只要在machine.config裡設定一下machineKey validation="3DES"即可實現用des加密viewstate了。

    像是控制項在兩次回傳之間就需要ViewState來儲存狀態值,如文字框中的值等。

  4. <machinekey>元素是幹嘛用的?它用於哪兩項ASP.NET技術?

    machineKey的作用在於下述情境:

    ASP.net 使用 forms authentication 時的 cookie 資料的加密和解密。以確保這部分資料不會被篡改。

    viewstate 資料的加密和解密。以確保這部分資料不會被篡改。

    使用進程外session(out-of-process session)時,對工作階段狀態標識進行驗證。

    摘自蟈蟈俊的文章http://blog.joycode.com/ghj/archive/2009/03/18/115516.joy

  5. 說出ASP.NET 1.1中的3種Session State提供者以及它們的優缺點?

    Process - 進程內。速度比較快,但比較難適應大型應用。

    ASP.NET State Service – ASP.NET狀態服務。速度,容量上折中。如果使用專用的狀態伺服器則可以擴充。

    SQL Server Session State Management:速度較慢。但可靠性是最強的。而且也有很高的擴充性,適合大型應用。

  6. 什麼叫Web Gardening? 在設計中如何使用它?

    Web Gardening又稱Web園,(注意這與Web Farm即Web場不是一個概念。)Web 園是在單台伺服器上通過為應用程式集區指定多個背景工作處理序而配置的。而 Web 場則是針對某個網站使用多個伺服器。以下對Web園的概念及使用方法的描述引用自TechNet:

Web園定義

在 IIS 6.0 工作進程隔離模式下,應用程式集區通過隔離應用程式與服務於這些應用程式的背景工作處理序來提高網站或應用程式的可靠性。如果要獲得更高的可靠性,可以將應用程式集區配置為由多個背景工作處理序支援。使用多個背景工作處理序的應用程式集區稱為"Web 園"。Web 園中的背景工作處理序將共用到達該特定應用程式集區的請求。如果一個背景工作處理序失敗,另一個背景工作處理序可以繼續處理請求。

 

Web園對網站的增強作用

  • 可靠的請求處理:當應用程式集區中的某個背景工作處理序停止處理時(例如,當指令碼引擎停止回應時),其他背景工作處理序可以接受並處理該應用程式集區的請求。

 

 

  • 減少了資源爭用:當 Web 園達到穩定點時,按照迴圈方案每個新 TCP/IP 串連將分配給 Web 園中的一個背景工作處理序。這可以產生平衡工作負載和減少綁定到背景工作處理序的資源爭用的效果。

 

配置 Web 園 - 使用 IIS 管理器(此處只附上這一種配置方法)

1. 使用管理員賬戶運行IIS管理器。在 IIS 管理器中,依次展開本機電腦和"應用程式集區",按右鍵該應用程式集區,然後單擊"屬性"。

2. 單擊"效能"選項卡,然後在"Web 園"下的"最大背景工作處理序數"框中,鍵入要嚮應用程式池指定的背景工作處理序數。(要形成 Web 園,必須為應用程式集區鍵入一個大於 1 的數值。)

3. 單擊"確定"。

 

  1. 假設有一個ASP.NET應用程式,那麼單獨一個進程中允許多少應用程式物件?那兩個進程呢?啟用了Web Gardening的2個進程呢?這對設計有何影響?

    一個進程中可以運行一個應用程式集區,一個應用程式集區可以運行多個應用程式物件,所以單獨一個進程中應該可以允許多個應用程式物件。再不配置Web Gardening的情況下一個進程中只能運行一個應用程式集區。則兩個進程運行兩個應用程式集區。當配置Web Gardenning後一個應用程式集區可以運行在兩個或兩個以上的進程中。所帶來的好處可以見第6問的分析。

     

  2. ASP.NET會重用多個請求之間的線程嗎?是否每個HttpRequest都有自己的線程?你是否應該用ASP.NET的Thread Local儲存?

    當有一個耗時較長的操作需要通過非同步方式完成時,可以使用ThreadPool利用線程池中的線程來一步進行這個操作。這時線程是可以重用的。每個HttpRequest應該都有自己的線程。另外關於Thread Local儲存沒有搜到與.net相關的內容。不過顧名思義-執行緒區域儲存應該就是與一個線程相關的變數的儲存。參考網上文章所提到的靜態方法中用到的靜態變數在多線程中會出問題這種說法,個人感覺Thread Local儲存可以在一定情況下解決這個問題。

     

  3. [ThreadStatic]屬性在ASP.NET中有用嗎?它有沒有副作用?是好是壞?

    [ThreadStatic]也可以解決上文上文提到的,靜態方法中的靜態變數在多線程環境中會出問題的情況。只需要將這些靜態變數標記為[ThreadStatic]即可。[ThreadStatic]特性即是可使變數線程唯一。至於副作用,有文章說[ThreadStatic]不是很穩定,在解決此類問題的最好的方法是使用Context Provider來存取與線程相關的資料。關於Context的使用可以參見這篇文章。http://www.cnblogs.com/vwxyzh/archive/2009/02/21/1395416.html

     

  4. 如何使用HttpHandler簡化現有的為.aspx頁面提供驗證圖片的設計 。

    張子陽的這篇文章很好的介紹了這一過程,我就不多廢話了,直接上網址。http://www.tracefact.net/Asp-Net/Introduction-to-Http-Handler.aspx

     

  5. HttpModule訂閱的是什麼類型的事件? 這對於實現有何影響?如果不打算重新編譯ASP.NE應用程式,應該怎麼做?

    HttpModule通過對HttpApplication對象的一系列事件的處理來對HTTP處理管道施加影響,這些事件在HttpModule的Init方法中進行註冊,包括:

BeginRequest

AuthenticateRequest

AuthorizeRequest

ResolveRequestCache

AcquireRequestState

PreRequestHandlerExecute

PostRequestHandlerExecute

ReleaseRequestState

UpdateRequestCache

EndRequest

後兩問實在不知原題何意,有待高手出來解答。

 

  1. 說出表示任意一個終端(URL)的方式,以及ASP.NET中把請求路由到那個終點的方式

    基本上路由一個url的方式是,首先擷取請求的url,然後分析,匹配一定規則的話則路由到一個指定的新url。這個過程可以在Global.asax的Application_Start事件處理或自訂的IHttpMoudle的 Application_BeginRequest時間處理函數中完成。可以參看這篇文章,小樣本很不錯。

    http://niunan.javaeye.com/blog/460681

     

  2. 解釋cookie的工作原理。給出一個濫用Cookie的例子。

    Cookie 是一小段文本資訊,伴隨著使用者請求和頁面在 Web 服務器和瀏覽器之間傳遞。使用者每次訪問網站時,Web 應用程式都可以讀取 Cookie 包含的資訊。 如果使用者再次訪問網站上的頁面,如當該使用者輸入URL:www.cnblogs.com時,瀏覽器就會在本地硬碟上尋找與該 URL 相關聯的 Cookie。如果該 Cookie 存在,瀏覽器就將它與頁面請求一起發送到您的網站。

    Cookie最根本的用途是:Cookie 能夠協助 Web 網站儲存有關訪問者的資訊。更概括地說,Cookie 是一種保持Web 應用程式連續性(即執行"狀態管理")的方法.使 Web 網站記住您。

    濫用的例子還未發現,但是根據其原理可以看出Cookie需要在Browser與Server間傳遞的特性決定了其不適合填充太多的內容。

     

  3. 解釋HttpRequest.ValidateInput()的重要性?

    HttpRequest 類使用輸入驗證標誌來跟蹤是否對通過 Cookies、 Form 和 QueryString 屬性訪問的請求集合執行驗證。ValidateInput 方法設定這些標誌,以便在調用 Cookies、 Form 或 QueryString 屬性的 get 訪問器時執行輸入驗證。驗證的工作原理是,將所有輸入資料與具有潛在危險的資料的寫入程式碼列表進行對照檢查。

    如果頁指令或配置啟用了驗證功能,則在頁的 ProcessRequest 處理階段調用此方法。如果未啟用驗證功能,則可通過代碼調用 ValidateInput 方法。

    對此的重要性還沒有很深的體會。請高手指點。

     

  4. 哪些資料是通過HTTP Header傳遞的?

    HTTP的頭域包括通用頭,要求標頭,回應標頭和實體頭四個部分。

    通用頭常見的如:Cache-Control頭域:Cache-Control指定請求和響應遵循的緩衝機制。Date頭域:Date頭域表示訊息發送的時間,時間的描述格式由rfc822定義。Pragma頭域:Pragma頭域用來包含實現特定的指令,最常用的是Pragma:no-cache。

    請求訊息:請求訊息如OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等。

    響應訊息:主要有5類,1xx:資訊響應類,表示接收到請求並且繼續處理。2xx:處理成功響應類,表示動作被成功接收、理解和接受。3xx:重新導向響應類,為了完成指定的動作,必須接受進一步處理。4xx:用戶端錯誤,客戶請求包含語法錯誤或者是不能正確執行。5xx:服務端錯誤,伺服器不能正確執行一個正確的請求。

    實體:包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。

     

  5. 對比HTTP動詞GET和POST? 什麼是HEAD?

    HTTP 定義了與伺服器互動的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用於多數請求,而保留 POST 僅用於更新網站。根據 HTTP 規範,GET 用於資訊擷取,而且應該是 安全的和 等冪的。所謂安全的意味著該操作用於擷取資訊而非修改資訊。換句話說,GET 請求一般不應產生副作用。等冪的意味著對同一 URL 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。從根本上講,其目標是當使用者開啟一個連結時,她可以確信從自身的角度來看沒有改變資源。比如,新聞網站的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和等冪的,因為它總是返回當前的新聞。反之亦然。POST 請求就不那麼輕鬆了。POST 表示可能改變伺服器上的資源的請求。仍然以新聞網站為例,讀者對文章的註解應該通過 POST 請求實現,因為在註解提交之後網站已經不同了(比方說文章下面出現一條註解); 
    在FORM提交的時候,如果不指定Method,則預設為GET請求,Form中提交的資料將會附加在url之後,以?分開與url分開。字母數字字元原樣發送,但空格轉換為"+"號,其它符號轉換為%XX,其中XX為該符號以16進位表示的ASCII(或ISO Latin-1)值。GET請求請提交的資料放置在HTTP請求協議頭中,而POST提交的資料則放在實體資料中;
    GET方式提交的資料最多隻能有1024位元組,而POST則沒有此限制。

    以上內容摘自:http://www.cnblogs.com/stu-acer/archive/2006/08/28/488802.html

    目前從實際應用來看GET與POST的區別沒有那麼明顯。

    HEAD動詞用於請求頁面的首部,貌似不常用。

  6. 說出至少6個HTTP狀態代碼以及它們的含義

    列舉幾個常用的:

    200 OK / 400 Bad Request / 403 Forbidden / 404 Not Found / 500 Internal Server Error / 504 Gateway Timeout

     

  7. if-not-modified-since的工作原理是什麼? 用ASP.NET如何?它?

    待高手解答。

     

  8. 解釋 <@OutputCache%>和如何使用VaryByParam、VaryByHeader.

    @ OutputCache 指令用來以聲明方式設定 ASP.NET 頁的緩衝,它的常用屬性如下:
    Duration:設定緩衝到期時間,單位:秒。
    VaryByParam:可用來使緩衝輸出因查詢字串而異,多個查詢字元用分號隔開。
    VaryByControl:可用來使緩衝輸出因控制項值而異。
    VaryByHeader:可用來使緩衝輸出因請求的 HTTP 標題而異。
    VaryByCustom:可用來使緩衝輸出因瀏覽器類型或您定義的自訂字串而異。
    CacheProfile:結合設定檔使用。
    Location:設定頁的可緩衝性,值有Any,Client,Downstream,None,Server,ServerAndClient。

    例如:

    <%@ OutputCache Duration="" VaryByParam="" VaryByControl="" VaryByHeader="" VaryByCustom="" CacheProfile="" Location="" %>

    其必備的兩個屬性為Duration與VaryByParam,如果不需要指定VaryByParam,則將值設定為None。

     

  9. VaryByCustom是如何工作的?

    VaryByCustom,我們可以自訂輸出緩衝要求的任意文本。除了在OutputCache指令裡面申明該屬性之外,我們還得在應用程式的 global.asax 檔案的代碼聲明塊中,重寫GetVaryByCustomString 方法來為自訂字串指定輸出緩衝的行為。

    舉例例下:

    <%@ OutputCache VaryByParam="none" VaryByCustom="CategoryPageKey" Location="server" Duration="43200" %>

    這裡的VaryByCustom定義的為CategoryPageKey,那麼在global.asax裡面我們必須定義CategoryPageKey這個字元創輸出緩衝的行為,見下面代碼。

    public override string GetVaryByCustomString(HttpContext context, String arg)

    {}

    主要引自此文,更多詳細資料也請參見此文http://www.cnblogs.com/leonjoon/archive/2006/08/27/487747.html

     

  10. 如何通過q=? (除了q=5)來實現ASP.NET HTML輸出緩衝和緩衝到期(比如http://localhost/page.aspx?q=5)?

    待高手解答。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.