ASP.net mvc面試49題


ASP.net mvc面試49題

ASP.net mvc面試49題

大家好,這一期呢,我們來談一下ASP.net mvc的面試題。

第1題, 什麼是ASP.net mvc?

這是一個網絡應用的開發框架。輕量型的,很容易測試的一個框架。它把整個應用程序分成三個組件: model view controller.

第2題, 解釋一下model view controller。

Model是數據模型,用來表示應用中我們使用的數據。

Controller處理各種用戶請求,並且把用戶重定位到view。

View就是我們用戶能看到的那一層。

第3題,解釋一下mvc 4的新的功能。

異步control的處理。

JavaScript Bundling.

配置方法的分離。Mvc路徑,web API和bundle。

移動端的模板支持。

Rest API service的模板支持。

第4題, 介紹一下mvc頁面的life cycle。

app initialization.

Routing.

Instantiate and execute controller.

Locate and invoke controller action.

Instantiate and render view.

第5題, mvc對ASP.net的好處在哪裡?

提供非常清晰的成績管理,像ui層,也就是view, 數據層model和管理層controller。

單元測試比較容易。

改善了數據模型和視圖的重用性。

代碼的結構更加優化。

第6題, 什麼是separation of concerns?

是一個分解的過程。把一個大的功能分解成幾個小的功能,幾個小功能之間重疊性非常低。對於mvc來說,比較關心從演示層到數據處理分層。

第7題什麼是razor view engine?

這個引擎提供了數據綁定的顯示模板。

@model MvcStore.Models.Customer

@{ViewBag.Title="Get Customers";}

@Model.CustomerName

第8題, unobstrusive JavaScript是什麼意思?

這個javascript的意思是說不會把JavaScript內嵌到你的頁面的標記裡面。

第9題,view model在mvc中的作用是什麼?

Viewmodel是一個通常的類,有很多屬性它可以綁定到視圖上。它也可以通過屬性來設定一些驗證的規則。

第10題,Mvc中的路徑是幹什麼的?

路徑主要有兩個部分,一個是路徑的那個字符串,還有一個是它的處理函數。通過搜索這個路徑以及對應的請求方法,然後找到對應的處理函數。

第11題, Mvc中的actions是什麼?

Actions是controller裡面的方法,主要處理兩部分內容,一個是視圖,另外一個是json數據。它的返回值類型是action result,是通過invoke action這個方法來調用。

第12題,什麼是屬性路徑?

屬性路徑可以定義在controller層級或者是action層級。從mvc 5 才開始有的。

第13題,如何激活屬性路徑?

在registerRoutes裡面添加map mvc attribute routes就可以激活屬性路徑。

第14題,什麼是json binding?

從mvc3開始,使用json value provider factory來支持json binding. 允許action方法接收和綁定json類型的數據。這一點在向服務器發送數據的時候非常有用。

第15題,解釋一下dependency resolution.

這個主要是來做dependency injection,這樣可以使得代碼耦合性非常低,可以更容易的進行測試。

第16題,解釋一下mvc4中的bundle.config.

這個文件主要是用來註冊一些非常有用的程序庫像jquery。

第17題,在dot net mvc中,路徑表是如何創建的?

RegusterRoutes用來註冊各種路徑,這個方法會在application start方法中被調用,這個方法存在於global.asax文件裡面。在程序啟動的時候,會被調用。

第18題,在mvc中比較重要的name spaces有哪些?

System.web.mvc, System.web.mvc.ajax, System.web.mvc.html, System.web.mvc.async

第19題,什麼是view data?

view data,是一個數據字典,有key和value,從view data dictionary派生出來的,在action方法中,我們可以設定viewdata的值,在視圖中,我們可以獲取這些值。

第20題,view bag 和 view data之間的區別是什麼?

view bag是view data的一個擴展。擴展以後可以創建動態的屬性。這樣的好處有:

不需要進行類型的轉換。

我們可以使用dynamic關鍵字。

但是有一個缺點就是view bag要比view data慢一些。

第21題, 解釋一下temp data。

是從temp data dictionary派生出來的,跟view data很類似,它也是key和value的對組合。它主要用在兩個請求的交互當中,它們可能是兩個actions或者兩個controllers。它在視圖中使用的時候需要類型轉換。

第22題,什麼是html Helpers?

Html helpers相當於在傳統的web form中的控件。但是它更輕量級, 不會保存試圖的狀態和事件。

它返回html字符串,它可以直接被顯示的網頁上。從html helper時派生可以自定義html helpers。

第23題, 什麼是ajax helpers?

它是用來對網頁表格進行進一步請求的機制,它的擴展方法存在於System.Web.Mvc。

第24題,有哪些配置ajax helper的選項?

Url, 這是請求的鏈接。

Confirm這個是用來指定顯示的確認消息。

On begin這個方法是在ajax請求之前被調用。

On Complete, 這個方法會在ajax請求之後被調用。

On success當ajax請求成功時,這個方法會被調用。

On failure, 當ajax請求失敗時,這個方法會被調用。

Update trigger ID.在action返回的html中會存在目標元素, 這個ID就是對應這個元素的。

第25題,什麼是mvc的layout?

它相當於傳統的網頁表格中的主頁。它可以在多個頁面中被引用。

@{

layout = "~/views/shared/testlayout.cshtml"};

}

這個地方,這個test layoutout作為一個子頁面。

第26題,解釋一下sections?

Sections是html頁面的一部分。

@rendersection("testsection")

在子頁面中我們定義如下的sections。

@section testsection {

test content

}

如果這個section沒有定義的話會出錯,我們可以使用一個required屬性來防止頁面出錯。

@rendersection("testsection", required: false)

第27題, 解釋一下render body和render page。

render body就相當於在網頁表格中的content place holder。它存在於layout頁面當中,一個layout頁面只有一個render body。而在一個layout頁面當中可以有多個render page.

第28題,什麼是view start page?

這個頁面是用來製作通用的layout頁面,它可以被多個視圖使用,在這個文件裡的代碼,會在程序加載的時候首先被執行。

第29題,解釋一下顯示視圖的方法。

View在action中返回的是一個視圖。

Partial view, 它是在action中返回一部分視圖。

Redirect to action.它是用來重定向到不同的action裡面,它可以在一個controller裡面也可以在不同的controller裡面。

第30題,action result的子類型是什麼?

View result. Partial view result, redirect to route result, redirect result, JavaScript result, file result, HTTP status code result.

第31題,什麼是非action方法?

在mvc中所有的公開方法都被認為是actions.如果你不想讓你的方法作為actions,那你就需要添加non action屬性。

[nonaction]

public void testmethod(){

}

第32題,如何改變action的名字?

可以使用action name屬性來改變action的名字。

[actionname("testactionview")]

第33題,什麼是視圖代碼塊?

這些代碼塊兒非常適合定義變量。

@{

int x=123;

string y="aa";

}

第34題, 什麼是helperpage.ajax屬性?

這個屬性主要是用來指明在一個網頁中是否用了ajax.

第35題, 如何在mvc中,當dropdownlist改變的時候調用一個JavaScript的函數?

在on change的時候設定這個JavaScript方法的調用就可以了。

第36題,什麼是validation anotations?

數據anotations存在於system.componentmodel.data .anotations. 它可以用作服務器端的驗證也可以用作客戶端的驗證。有4個屬性一個是required,一個是string length,一個是regular expression,一個是range。

第37題,為什麼要使用html.partial?

這個方法用來顯示html string指定的某塊視圖。

html.partial("testpartialview")

第38題,什麼是html.Renderpartial?

這個方法向response裡面寫入數據的。沒有任何返回值。

@{html.renderpartial("testpartialview")}

第39題, 什麼是scaffold模板?

用來生成controller, model, views, 對應的是create, read, update, delete,這些功能操作。

第40題,解釋一下scaffoldings的類型。

Empty

Create

Delete

Details

Edit

List

第41題,一個視圖是否能在多個controller中分享?

是的,可以。

可以把這個視圖放在一個shared的文件夾裡面。當我們在創建一個新的mvc工程的時候,這個layout page就會被添加在分享的文件夾裡面因為他會被多個子頁面調用。

第42題, 在創建一個路徑的時候,我們需要哪些組件?

首先是路徑名字。

其次是路徑的url。

再一個就是defaults。當被調用的時候,在某個controller裡面需要被調用的那個action連同參數。

第43題, 為什麼使用"{resource}.asd/{*pathinfo}"?

這樣做主要是為了防止網絡資源文件,比如web resource.asd,或者script resource.asd,被傳送到一個controller上。

第44題, 我們如何向一個路徑添加constraints?

我們可以通過regular expressions。

也可以通過Irouteconstraint接口.

第45題, razor視圖的可能擴展名是什麼?

cshtml

vbhtml

第46題,什麼是partial view?

Partial view相當於傳統網頁表格中的user controls.

它的主要目的是為了重複使用這些視圖,他們一般被放在一個共享文件夾裡面。

html.partial()

html.renderpartial()

第47題, 如何向mvc中添加css?

使用link tag。

第48題, 能否用visual studio express向mvc添加測試案例?

不能,只有專業版和ultimate終極版才可以。

第49題,.glimpse 的作用是什麼?

它是一個開源工具,用來調試mvc的路徑。他用在客戶端調試場景。可以通過本地的鏈接來激活打開。這是一個非常流行而有用的調試工具,它可以跟蹤速度細節,網頁細節等等。


分享到:


相關文章: