ASP net core面試題彙總及答案
在dot net core中,我們不需要關心如何釋放這些服務, 因為系統會幫我們釋放掉。有三種服務的生命週期。
單例項服務, 通過add singleton方法來新增。在註冊時即建立服務, 在隨後的請求中都使用這一個服務。
短暫服務, 通過add transient方法來新增。是一種輕量級的服務,用於無狀態服務的操作。
作用域服務,一個新的請求會建立一個服務例項。使用add scoped方法來新增。
今天陝西優就業小編給大家分享一篇相關面試題,希望對大家有用。
第1題:什麼是ASP net core?
首先ASP net core不是 asp net的升級版本。它遵循了dot net的標準架構, 可以運行於多個作業系統上。它更快,更容易配置,更加模組化,可擴充套件性更強。
第2題:asp dot core有哪些好的功能?
第一是依賴注入。
第二是日誌系統架構。
第三是引入了一個跨平臺的網路伺服器,kestrel。可以沒有iis, apache和nginx就可以單獨執行。
第四是可以使用命令列建立應用。
第五是使用APP settings json file來配置工程。
第六是使用start up來註冊服務。
第七是更好的支援非同步程式設計。
第八是支援web socket和signal IR。
第九是對於跨網站的請求的預防和保護機制。
第3題:dot net core跟dot net比較有哪些更好的地方?
第一是跨平臺,它可以執行在三大作業系統上面,windows, Linux和MAC。
第二是對架構本身安裝沒有依賴,因為所有的依賴都跟程式本身在一起。
第三是dot net core處理請求的效率更高,能夠處理更多的請求。
第四是dot net core有更多的安裝配置方法。
第4題:什麼是meta packages?
Meta packages是指包含所有ASP dot net code依賴的一個包。叫做Microsoft.AspNetCore
第5題:don net core應用能夠跟dot net 4.x架構一起工作嗎?
可以。Dot net core應用可以跟標準的dot net 庫一起工作。
第6題:什麼是dot net core的startup class?
Startup class是dot net core應用的入口。所有的dot net core應用必須有這個class 這個類用來配置應用。
這個類的呼叫是在program main函式裡面進行配置的。類的名字可以自己定義。
第7題:Startup class的config service方法有什麼作用?
在這個方法裡我們可以新增一些service進入依賴注入容器。
第8題:startup class的configure方法有什麼作用?
這個方法來定義整個應用如何響應HTTP請求。它有幾個比較重要的引數,application builder,Hosting environment, logo factory,在這裡我們可以配置一些中介軟體用來處理路徑,驗證和session等等。
第9題:什麼是中介軟體?
中介軟體在這裡是指注入到應用中處理請求和響應的元件。
第10題:application builder的use和run方法有什麼區別?
這兩個方法都在start up class的configure方法裡面呼叫。都是用來嚮應用請求管道里面新增中介軟體的。Use方法可以呼叫下一個中介軟體的新增,而run不會。
第11題:dot net core 管道里面的map拓展有什麼作用?
可以針對不同的路徑新增不同的中介軟體。
第12題:dot net core裡面的路徑是如何處理的?
路徑處理是用來為進入的請求尋找處理函式的機制。所有的路徑在函式執行開始時進行註冊。
主要有兩種路徑處理方式,常規路徑處理和屬性路徑處理。常規路徑處理就是用MapRoute的方式設定呼叫路徑,屬性路徑處理是指在呼叫函式的上方設定一個路徑屬性。
第13題:如何在dot net core中啟用session功能?
首先要新增session包. 其次要在config service方法裡面新增session。然後又在configure方法裡面呼叫usesession。
第14題:dot net core工程裡面有多少個工程檔案?
global, launch setting,app settings,bundle config,bower, package。
第15題:什麼是dot net core裡面的tag helper?
Tag helper用來在伺服器端使用Razor檢視引擎建立html元素的。
第16題:如何使tag helper在元素這一層上失效?
使用歎號。
第17題:什麼是Razor頁面?
是dot net core中支援ASP網頁表格的一種開發模型。@page 作為頁面的起始標誌。
第18題:如何在Razor頁面中實現資料模型繫結?
使用bindproperty屬性。
第19題:如何在controller中注入service?
在config services方法中配置這個service。
在controller的建構函式中,新增這個依賴注入。
---------------------------------------------------------------------------------------------------
第20題:描述一下依賴注入後的服務生命週期?
asp.net core主要提供了三種依賴注入的方式
其中AddTransient與AddSingleton比較好區別
AddTransient瞬時模式:每次都獲取一個新的例項
AddSingleton單例模式:每次都獲取同一個例項
而AddTransient與AddScoped的區別更不容易區別一點
首先這兩種方式每次請求得到的都不是同一個物件,從這點看會發現這兩個都一樣。
但是我們可以繼續分細一點,雖然不同的請求得到的結果不同,但是我們可以在同一次請求中去獲取多次例項測試。
- AddTransient注入方式獲取兩次例項
services.AddTransient<IUserBLL, UserBll>();
可以看到瞬時模式即使同一次請求中也是不同的物件
- AddScoped注入方式獲取兩次例項
services.AddScoped<IUserBLL, UserBll>();
可以發現AddScoped在同一次請求中,獲取多次物件得到的是同一個物件
小總結:
AddTransient瞬時模式:每次請求,都獲取一個新的例項。即使同一個請求獲取多次也會是不同的例項
AddScoped:每次請求,都獲取一個新的例項。同一個請求獲取多次會得到相同的例項
AddSingleton單例模式:每次都獲取同一個例項