2018你應該瞭解這些.NET面試題

2018年準備要找.NET開發相關工做的你準備好了嗎,下面是小編準備的一些.NET相關的面試題,來閱讀一下,也許對你有幫助哦~javascript

.NET面試

1. 談談你對MVC和三層架構的理解。html

MVC即模型、視圖、控制器,模型表示業務數據及業務處理,用來封裝數據及行爲;視圖是用戶看到並與之交互的界面;控制器接受用戶輸入並調用模型和視圖去完成用戶的請求。使用MVC有利於關注點分離,自動化UI測試成爲了可能。java

三層架構即表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即爲了「高內聚,低耦合」的思想。表現層通俗講就是展示給用戶的界面,業務邏輯層即針對具體問題的操做,也能夠說是對數據層的操做,對數據業務邏輯處理。數據訪問層:該層所作事務直接操做數據庫,針對數據的增添、刪除、修改、更新、查找等。web

2. 在MVC中如何保持Sessions?面試

可以使用tempdata、viewdata、viewbag三種方式。其中tempdata:在不一樣的控制器或動做間轉換時保持數據。另外,進行頁面轉向時,tempdata能夠保持數據,它是一個內部的Session變量。Viewdata:能夠在控制器和視圖間保持數據。Viewbag:它是視圖數據的動態包裝,使用viewbag不須要類型轉換,它使用的是內部動態關鍵詞。ajax

3. MVC中如何作輸入驗證?數據庫

在M層使用數據模型的屬性標籤形如[Required],在C層使用ModelState.IsValid屬性檢查數據是否正確,也可在C層使用javascript進行數據驗證。編程

4. 已經有了ASPX,爲何還要Razor?哪一個更好?session

Razor是一個輕量級的視圖引擎,MVC3引入,相比ASPX,Razor更乾淨、輕量級、語法更簡單,只須要使用@關鍵字,如@DataTime.Now閉包

5. MVC有多少種不一樣類型的結果類型,請詳細描述。

有12種,最主要的是ActionResult類,它是一個基礎類,它有11個子類型。

ViewResult - 給響應流渲染指定的視圖

PartialViewResult - 給響應流渲染指定的局部視圖

EmptyResult - 返回空的響應結果。

RedirectResult - 執行一個HTTP轉向到指定的URL。

RedirectToRouteResult -執行一個HTTP轉向到一個URL,這個URL由基於路由數據的路由引擎來決定

JsonResult - 序列化一個ViewData對像到JSON格式。

JavaScriptResult - 返回一段Javascript代碼,它能夠在客戶端執行。

ContentResult - 寫內容到響應流,不須要視圖支持。

FileContentResult - 返回一個文件到客戶端。

FileStreamResult - 返回一個文件到客戶端,它提供的是流。

FilePathResult - 返回一個文件到客戶端。

6. 如下兩種異常處理方式有什麼區別?

try {} catch(){throw;} try{}catch(Exception ex){Throw ex;}

前者catch無參數,能夠捕獲全部異常,只有throw關鍵字,表示拋出當前catch語句捕獲的異常。

後者catch有參數,能夠捕獲全部以Exception類派生的異常,throw 變量名;拋出的是Exception異常或Exception派生的類型

7. C#中的委託是什麼?事件是否是一種委託?

委託是將一種方法做爲參數傳入到另外一種方法。事件是一種特殊的委託。委託聲明的關鍵字是Delegate。

8. 用接口或父類做爲輸入的參數有什麼好處?返回值若是是接口是爲了什麼?

接口或父類做爲參數,全部繼承了此接口或父類的類均可以使用,即你給此方法傳參數的時候,能夠把繼承了這個接口或父類的類的實例傳給這個方法。能夠一次性傳入多種字段、方法等而不用定義多個形參。

接口做爲返回值,返回的是實現接口的對象。

9. C#和JS的閉包。

閉包的概念是內層的函數能夠引用包含在它外層的函數的變量,即便外層函數的執行已經終止。但該變量提供的值並不是變量建立時的值,而是在父函數範圍內的最終值。

C#閉包可理解爲跨做用域訪問函數內變量,那麼如何避免閉包陷阱呢?C#中廣泛的作法是,將匿名函數引用的變量用一個臨時變量保存下來,而後在匿名函數中使用臨時變量。參考:http://www.cnblogs.com/jiejie_peng/p/3701070.html

JS閉包,在js中的個人理解就是函數嵌套函數,當內部函數在定義它的做用域的外部被引用時,就建立了該內部函數的閉包 ,若是內部函數引用了位於外部函數的變量,當外部函數調用完畢後,這些變量在內存不會被釋放,由於閉包須要它們。參考:http://www.myexception.cn/javascript/2042903.html

10. Ajax操做怎麼處理session過時?

當session過時時,咱們獲取請求頭信息值判斷是否爲ajax請求,若是是,咱們能夠返回特定格式的JSON數據,客戶端能夠對此數據處理,發現session失效,能夠跳轉到其餘頁面如登錄等。

11. 簡要談一下你對微軟.NET架構下remoting和webservice兩項技術的理解及實際中的應用。

Remoting能夠利用TCP/IP,二進制傳送提升效率,webservice可利用http,穿透防火牆。

遠程邏輯調用,remoing接口只能用在.NET remoting是.NET 中用來跨越machine,process, appdomain 進行方法調用的技術,對於三成結構的程序,就可使用remoting技術來構建.它是分佈應用的基礎技術.至關於之前的DCOM

WebService是一種構建應用程序的普通模型,並能在全部支持interNET網通信的操做系統上實施。Web Service令基於組件的開發和web的結合達到最佳,基於組件的對象模型。

12. Sleep()和wait()有什麼區別?

(1) sleep是線程類Thread 的方法,它是使當前線程暫時睡眠,能夠放在任何位置。

而wait,它是使當前線程暫時放棄對象的使用權進行等待,必須放在同步方法或同步塊裏。

(2)Sleep使用的時候,線程並不會放棄對象的使用權,即不會釋放對象鎖,因此在同步方法或同步塊中使用sleep,一個線程訪問時,其餘的線程也是沒法訪問的。

而wait是會釋放對象鎖的,就是當前線程放棄對象的使用權,讓其餘的線程能夠訪問。

(3)線程執行wait方法時,須要其餘線程調用Monitor.Pulse()或者Monitor.PulseAll()進行喚醒或者說是通知等待的隊列。

而sleep只是暫時休眠必定時間,時間到了以後,自動恢復運行,不需另外的線程喚醒.

13.什麼是面向對象

面向對象OO = 面向對象的分析OOA + 面向對象的設計OOD + 面向對象的編程OOP;

通俗的解釋就是萬物皆對象,把全部的事物都看做一個個能夠獨立的對象(單元),它們能夠本身完成本身的功能,而不是像C那樣分紅一個個函數;

如今純正的OO語言主要是java和C#,C++也支持OO,C是面向過程的。

14.闡述面向接口、面向對象、面向方面編程的區別

面向對象很差解釋,能夠理解爲以一切元素都是對象,在設計時以對象爲單位,考慮它的屬性及方法。設計中採用了封裝、繼承、抽象的手法

面向接口自己就是面向對象的,無所謂區別,只不過面向接口的好處是耦合性低

面向方面Aspect-Oriented Programming (AOP)就是大名鼎鼎的AOP。其實有點象struts裏的攔截。

舉例:假設有在一個應用系統中,有一個共享的數據必須被併發同時訪問,首先,將這個數據封裝在數據對象中,稱爲Data Class,同時,將有多個訪問類,專門用於在同一時刻訪問這同一個數據對象。爲了完成上述併發訪問同一資源的功能,須要引入鎖Lock的概念,也就是說,某個時刻,當有一個訪問類訪問這個數據對象時,這個數據對象必須上鎖Locked,用完後就當即解鎖unLocked,再供其它訪問類訪問。

15.什麼是.NET?

.NET是一種平臺和框架, .NET 不是單純的語言也不是單純的工具,它是從底層平臺開始構建起來的一個總體框架。

.NET面試

總結:

看過以後記下了嘛?要不斷學習,豐富本身的專業知識,這樣才能在面試時遊刃有餘,拿到更多的offer,找到本身想要的工做。

相關文章
相關標籤/搜索