1. 程式人生 > >個人總結ASP.NET必備面試題

個人總結ASP.NET必備面試題

保留 常見 服務器 分布式 編程 type atom 區別 oracl

1.你能解釋下MVC的完整流程嗎?

所有的終端用戶請求被發送到控制器。控制器依賴請求去選擇加載哪個模型,並把模型附加到對應的視圖。附加了模型數據的最終視圖做為響應發送給終端用戶。

2. 那你說一下你對MVC的理解?

MVC是一種設計模式即主要的思想,是一種功能結構模塊化的一種開發思想,目的是更好的管理自己的代碼。

ASP.NET MVC是微軟對ASP.NET WebForm框架做出的徹底重構,使Web應用程序的開發更加容易,更加清楚,而推出的一種UI框架。

3.什麽是MVC中的Razor?

它是一個輕量級的視圖引擎。

4.LinQ是什麽?

LINQ是一種用來進行數據訪問的編程模型,使得.NET語言可以直接支持數據查詢LINQ的目標是降低訪問數據的復雜度,

LINQ可以用統一的方法訪問不同類型的數據,可以將數據作為對象使用,能夠更好地與編程模型集成

5.Lambda表達式是什麽呢?

Lambda表達式是匿名函數,而匿名函數又是委托,所以lambda表達式就是委托。

6.EF是什麽?

EF是微軟以Ado.net為基礎發展而來的對象關系映射的orm框架,有三種實現方式:Code First,DB First,Model First,我們常用的是DB Frist,

設計好數據庫,再進行代碼編程,通過上下文對象實現交互。EF和Dapper的區別,EF是強類型的ORM框架,Dapper是弱類型的ORM框架

一、 Dapper

問題:簡述你對Dapper的了解?

答案:1、Dapper是一個輕量級的ORM類,代碼就一個SqlMapper.cs文件,編譯後只有70k

2、Dapper支持多數據庫,支持SqlServer,MySql,Oracle等

3、Dapper語法簡單,容易上手

7、什麽是委托,事件是不是一種委托?

1、委托可以把一個方法作為參數代入另一個方法。
2、委托可以理解為指向一個函數的引用。
3、事件是一種特殊的委托

delegate <函數返回類型> <委托名> (<函數參數>)

8.c#多線程是什麽

多線程的優點:可以同時完成多個任務;可以使程序的響應速度更快;可以節省大量時間進行處理任務;可以隨時停止任務;可以設置每個任務的優先級,以優化程序性能。

9.WebApi概述

Web API是在.NET Framework之上構建的Web的API的框架,Web API是一個編程接口,用於操作可通過標準HTTP方法和標頭訪問的系統,

Web API需要基於.NET 3.5或更高版本才可以進行開發

10.什麽是WebService

webservice是一種跨平臺,跨語言的規範,用於不同平臺,不同語言開發的應用之間的交互,是基於網絡的、分布式的模塊化組件,它執行特定的任務,

遵守具體的技術規範。

11.存儲過程是什麽?有什麽用?有什麽優點?用什麽來調用?

存儲過程是預編譯,安全性高,也是大大提高了效率,存儲過程可以重復使用以減少數據庫開發人員的工作量,復雜的邏輯我們可以使用存儲過程完成,

在存儲過程中我們可以使用臨時表,還可以定義變量,拼接sql語句,調用時,只需執行這個存儲過程名,傳入我們所需要的參數即可,

12.何為觸發器?

觸發器是一種特殊的存儲過程,主要是通過事件觸發而被執行。它可以強化約束來維護數據的完整性和一致性,可以跟蹤數據庫內的操作從

而不允許未經許可的更新和變化。可以級聯運算,

常見的觸發器有三種:分別應用於Insert , Update , Delete 事件。

13.SQL優化

1.選擇最有效率的表名順序2.WHERE子句中的連接順序3.SELECT查詢中避免使用‘*‘4.減少訪問數據庫的次數5.使用DECODE函數來減少處理時間
6.用Where子句替換HAVING子句7.減少對表的查詢使用表的別名9.用EXISTS替代IN。10.用NOT EXISTS替代NOT IN。11.用表連接替換EXISTS。
12.用EXISTS替換DISTINCT。13.用索引提高效率14.避免在索引列上使用計算15.避免在索引列上使用IS NULL和IS NOT NULL

14..事務的作用?

事物簡單來說就是要麽一起執行,要麽就都不執行,如有一個地方出錯,全部回滾,不執行
事務4大屬性:
1   原子性(Atomicity):事務是一個完整的操作。
2   一致性(Consistency):當事務完成時,數據必須處於一致狀態。
3   隔離性(Isolation):對數據進行修改的所有並發事務是彼此隔離的。
4   持久性(Durability):事務完成後,它對於系統的影響是永久性的。
T-SQL中管理事務的語句:開始事務:begin transaction提交事務commit transaction回滾事務 rollback transaction
 事務分類:顯式事務:用begin transaction明確指定事務的開始。
2 隱性事務:當以隱性事務模式操作時,SQL Servler將在提交或回滾事務後自動啟動新事務。無法描述事務的開始,只需要提交或回滾事務。
3 自動提交事務:SQL Server的默認模式,它將每條單獨的T-SQL語句視為一個事務。如果成功執行,則自動提交,否則回滾。

什麽是Ajax異步調用?

就是不需要加載整個頁面的數據,只請求一小部分的數據,這樣可以實現了異步的調用。

15.ORM是什麽?

ORM,即Object-Relational Mapping(對象關系映射),它的作用是在關系型數據庫和業務實體對象之間作一個映射,
這樣,我們在具體的操作業務對象的時候,就不需要再去和復雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。
ORM方法論基於三個核心原則: 簡單:以最基本的形式建模數據。 傳達性:數據庫結構被任何人都能理解的語言文檔化。
 精確性:基於數據模型創建正確標準化的結構。

16.什麽叫做泛型?

從編程的角度說是在定義類或者方法的時候省去具體的類型,由調用者來指定,類型+泛型類型合成得到真正的類型。從實現機制上說,泛型是CLR在

運行時動態根據泛型類型創建的匿名類型。從OO設計的角度說,泛型體現了多態性。泛型使得程序員可以復用數據結構和算法,並且適應不同的類型,

享有編譯期間的強類型檢查和語法提示。一些經典的FCL提供的泛型類型和接口: List<T>、Dictionary<T1, T2>這個屬於復用數據結構    

IComparer<T>、IEnumerable<T>這個屬於復用算法

17. C#中值類型和引用類型分別有哪些? 

值類型:結構體(數值類型,bool型,用戶定義的結構體),枚舉,可空類型。引用類型:數組,用戶定義的類、接口、委托,object,字符串。

18.在項目中如何解決高並發問題?

答案:盡量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與數據庫的交互,提高性能。
優化數據庫查詢語句。
優化數據庫結構,多做索引,提高查詢效率。
統計的功能盡量做緩存,或按每天一統計或定時統計相關報表,避免需要時進行統計的功能。
能使用靜態頁面的地方盡量使用,減少容器的解析(盡量將動態內容生成靜態html來顯示)。
解決以上問題後,使用服務器集群來解決單臺的瓶頸問題。

19.敏捷開發?

敏捷開發(Agile Development)是一種以人為核心、叠代、循序漸進的開發方式。它並不是一門技術,而是一種開發方式,也就是一種軟件開發的流程。
它會指導我們用規定的環節去一步一步完成項目的開發。
因為它采用的是叠代式開發,所以這種開發方式的主要驅動核心是人。

20.請說明在.net中常用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。
1、session(viewstate) 簡單,但易丟失

2、application 全局
3、cookie 簡單,但可能不支持,可能被偽造
4、input type=”hidden” 簡單,可能被偽造
5、url參數簡單,顯示於地址欄,長度有限
6、數據庫穩定,安全,但性能相對弱

21.IOC容器?

IOC即控制反轉,是一種設計思想,在之前的項目中,當我們需要一個對象時,需要new一個對象,而IOC的設計思想是我們將需要的對象註入到一個容器中,
就會獲得我們所需要的資源
【擴展】:IOC和DI IOC是控制反轉,DI是依賴註入,控制反轉的解釋有些模棱兩可,而依賴註入就很明確,我們將需要的對象註入到容器中,獲取所需要的資源

22.Ado.net五大對象?

(1)Connection對象
Connection 對象就像是打仗時候的通信兵,他們在打仗之前需要先接通司令部與各個作戰單位之間的通信線路。之後作戰命令的獲取以及發布都要靠通信線路來完成。
這裏的司令部就類似於服務器,各作戰單位就類似於各應用程序。
(2)Command對象
     執行一些簡單操作命令,如:增刪改刪,即執行T-SQL語句。Command對象有幾個比較重要的方法,如ExecuteNonQuery()方法,執行增刪改命令,返回的是受影
響的行數。查詢方法有2種:一個是ExecuteReader()方法,返回一個DataReader對象。還有ExecuteScale()方法,返回首行首列值。
(3)DataAdapter對象
     數據適配器,從數據庫中檢索數據,再填充到本地數據集中。同時,我們可以利用DataAdapter,再將數據反向從DataSet中更新回數據庫。DataAdapter使用中主
要有4個命令對象比較重要。它們分別是:SelectCommand、InsertCommand、UpdateCommand、DeleteCommand。SelectCommand,主要是從數據庫中檢索數據
InsertCommand、UpdateCommand、DeleteCommand這3個命令對象主要負責把本地數據集DataSet中的數據上傳回服務器。我們主要使用的是前者。
DataAdapter的Fill方法,用於使用DataAdapter的SelectCommand的執行結果集來填充DataSet。
(4)DataReader對象
 當我們只需要循序的讀取數據而不需要其它操作時,可以使用DataReader 對象。DataReader對象只是一次一筆向下循序地讀取數據源中的數據,不作其它的操作
。因為DataReader 在讀取數據的時候限制了每次只讀取一筆,而且只能只讀,所以使用起來不但節省資源而且效率很好。此外,因為不用把數據全部傳回,
故可以降低網絡的負載。但是,當我們從數據源中一條一條的讀取數據的時候,一定記得要時刻打開數據庫的連接。
二、DataSet對象
    DataSet 這個對象可以視為本地內存中的一個數據庫,可以把從數據庫中所查詢到的數據保留到本地。DataSet 的能力不只是可以儲存多個Table,
還可以透過DataAdapter 對象取得一些例如主鍵等數據表結構,並可以記錄數據表間的關聯。當我們使用DataSet讀取數據的時候,數據庫的連接是否
關閉已經無關緊要了。DataSet 對象可以說是ADO.NET 中重量級的對象,通過DataAdapter 對象這個橋梁,實現了與數據源溝通的能力 。

個人總結ASP.NET必備面試題