ASP.NET(C#) 面試總結(jié)面試題大全

一、對于 Web 性能優(yōu)化,您有哪些了解和經(jīng)驗嗎?
出現(xiàn)指數(shù):五顆星
主要考點:這道題是博主在博客園的新聞里面看到的,回想之前幾年的面試經(jīng)歷,發(fā)現(xiàn)此題出現(xiàn)概率還是比較高的。因為它的考面灰常廣,可以讓面試官很快了解你的技術涉及面以及這些技術面的深度。
參考答案:這個問題可以分前端和后端來說。
1、前端優(yōu)化
(1)減少 HTTP 請求的次數(shù)。我們知道每次發(fā)送http請求,建立連接和等待相應會花去相當一部分時間,所以在發(fā)送http請求的時候,盡量減少請求的次數(shù),一次請求能取出的數(shù)據(jù)就不要分多次發(fā)送。
(2)啟用瀏覽器緩存,當確定請求的數(shù)據(jù)不會發(fā)生變化時,能夠直接讀瀏覽器緩存的就不要向服務端發(fā)送請求。比如我們ajax里面有一個參數(shù)能夠設置請求的時候是否啟用緩存,這種情況下就需要我們在發(fā)送請求的時候做好相應的緩存處理。
(3)css文件放 在<head>里面,js文件盡量放在頁面的底部。因為請求js文件是很花費時間,如果放在<head>里面,就會導致頁面的 DOM樹呈現(xiàn)需要等待js文件加載完成。這也就是為什么很多網(wǎng)站的源碼里面看到引用的文件放在最后的原因。
(4)使用壓縮的css和js文件。這個不用多說,網(wǎng)絡流量小。
(5)如果條件允許,盡量使用CDN的方式引用文件,這樣就能減少網(wǎng)絡流量。比如我們常用的網(wǎng)站http://www.bootcdn.cn/。
(6)在寫js和css的語法時,盡量避免重復的css,盡量減少js里面循環(huán)的次數(shù),諸如此類。
2、后端優(yōu)化:
(1)程序的優(yōu)化:這是一個很大的話題,我這里就選幾個常見的。比如減少代碼的層級結(jié)構、避免循環(huán)嵌套、避免循環(huán)CURD數(shù)據(jù)庫、優(yōu)化算法等等。
(2)數(shù)據(jù)庫的優(yōu)化:(由于數(shù)據(jù)庫優(yōu)化不是本題重點,所以可選幾個主要的來說)比如啟用數(shù)據(jù)庫緩存、常用的字段建索引、盡量避免大事務操作、避免select * 的寫法、盡量不用in和not in 這種耗性能的用法等等。
(3)服務器優(yōu)化:(這個可作為可選項)負載均衡、Web服務器和數(shù)據(jù)庫分離、UI和Service分離等等。
二、MVC路由理解?(屢見不鮮)
出現(xiàn)指數(shù):五顆星
主要考點:此題主要考點是MVC路由的理解。
參考答案:
1、首先我們要理解MVC中路由的作用:url Routing的作用是將瀏覽器的URL請求映射到特定的MVC控制器動作。
2、當我們訪問http://localhost:8080/Home/Index 這個地址的時候,請求首先被UrlRoutingModule截獲,截獲請求后,從Routes中得到與當前請求URL相符合的RouteData對象, 將RouteData對象和當前URL封裝成一個RequestContext對象,然后從Requestcontext封裝的RouteData中得到 Controller名字,根據(jù)Controller的名字,通過反射創(chuàng)建控制器對象,這個時候控制器才真正被激活,最后去執(zhí)行控制器里面對應的 action。
三、談談你覺得做的不錯系統(tǒng),大概介紹下用到了哪些技術?
出現(xiàn)指數(shù):五顆星
主要考點:這是一道非常開放的面試題。博主遇到過好幾家公司的面試官都問道了這個,博主覺得他們是想通過這個問題快速了解面試者的技術水平。此題只要結(jié)合你最近項目用到的技術談談就好了。
參考答案:
就拿我之前做過的一個項目為例來簡單說明一下吧。項目分為客戶端和服務端,客戶端分 為BS客戶端和CS客戶端,BS客戶端采用MVC 5.0的框架,CS客戶端是Winform項目,服務端使用WebApi統(tǒng)一提供服務接口,考慮以后可能還要擴展手機端,所以服務接口的參數(shù)和返回值使用 通用的Json格式來傳遞數(shù)據(jù)。
1、服務端采用的面向接口編程,我們在軟件架構的過程中,層和層之間通過接口依賴, 下層不是直接給上層提供實現(xiàn),而是提供接口,具體的實現(xiàn)以依賴注入的方式在運行的時候動態(tài)注入進去。MEF就是實現(xiàn)依賴注入的一種組件。它的使用使得UI 層不直接依賴于BLL層,而是依賴于中間的一個IBLL層,在程序運行的時候,通過MEF動態(tài)將BLL里面的實現(xiàn)注入到UI層里面去,這樣做的好處是減少 了層與層之間的耦合。服務端的異常里面、權限驗證、日志記錄等通用功能使用了AOP攔截的機制統(tǒng)一管理,項目中使用的是Postsharp這個組件,很好 地將通用需求功能從不相關的類當中分離出來,提高了代碼的可維護性。
2、BS的客戶端采用的jquery+bootstrap 的方式,所有頁面采用流式布局,能更好適應各種不同的終端設備(PC、手機)。項目中使用了各種功能強大的bootstrap組件,能適應各種復雜的業(yè)務需求。
四、Js繼承實現(xiàn)。
出現(xiàn)指數(shù):五顆星
主要考點:這道題考驗面試者對js理解的深度。根據(jù)博主的經(jīng)歷,這種題一般在筆試出現(xiàn)的幾率較大,為什么把它放在這里,因為它確實太常見了。其實js實現(xiàn)繼承的方式很多,我們只要寫好其中一種就好了。
參考答案:原型鏈繼承
//1.定義Persiong函數(shù) function Person(name, age) { this.name = name; this.age = age; } //2.通過原型鏈給Person添加一個方法 Person.prototype.getInfo = function () { console.log(this.name + " is " + this.age + " years old!"); } function Teacher(staffId) { this.staffId = staffId; } //3.通過prototype生命 Teacher繼承Person Teacher.prototype = new Person(); //4.實例Teacher函數(shù) var will = new Teacher(1000); will.name= "Will"; will.age = 28; //5.調(diào)用父類函數(shù) will.getInfo();
五、談談你對設計模式的認識?結(jié)合你用得最多的一種設計模式說說它的使用。
出現(xiàn)指數(shù):五顆星
主要考點:不用多說,這題考的就是對設計模式的理解。一般為了簡單可能會要求你寫一個單例模式,注意最好是寫一個完整點的,考慮線程安全的那種。然后會讓你說說你在項目中什么情況下會用到這種模式
參考答案:
通用寫法
public class Singleton { // 定義一個靜態(tài)變量來保存類的實例 private static Singleton uniqueInstance; // 定義一個標識確保線程同步 private static readonly object locker = new object(); // 定義私有構造函數(shù),使外界不能創(chuàng)建該類實例 private Singleton() { } /// <summary> /// 定義公有方法提供一個全局訪問點,同時你也可以定義公有屬性來提供全局訪問點 /// </summary> /// <returns></returns> public static Singleton GetInstance() {// 雙重鎖定只需要一句判斷就可以了 if (uniqueInstance == null) { lock (locker) { // 如果類的實例不存在則創(chuàng)建,否則直接返回 if (uniqueInstance == null) { uniqueInstance = new Singleton(); } } } return uniqueInstance; } }
單例模式確保一個類只有一個實例,并提供一個全局訪問點,它的使用場景比如任務管理 器整個系統(tǒng)中應該只有一個把,再比如操作文件的對象,同一時間我們只能有一個對象**作文件吧。最重要的,比如我們項目中用得非常多的功能→日志記錄,在 一個線程中,記錄日志的對象應該也只能有一個吧。單例模式的目的是為了保證程序的安全性和數(shù)據(jù)的唯一性?;蛘吣阋部梢越Y(jié)合你使用的其他設計模式來說明。
六、IIS的工作原理?
出現(xiàn)指數(shù):四顆星
主要考點:此題主要考的是.net framework和IIS是如何結(jié)合呈現(xiàn)頁面的。這是一個有點復雜的過程,面試的時候不可能說得完整,那么我們就抓住幾個關鍵點說說就可以。其實博主也不能完全理解這個過程,今天正好借這個機會溫**下。
參考答案:
1、當客戶端發(fā)送HTTP Request時,服務端的HTTP.sys(可以理解為IIS的一個監(jiān)聽組件) 攔截到這個請求;
2、HTTP.sys 聯(lián)系 WAS 向配置存儲中心請求配置信息。
3、然后將請求傳入IIS的應用程序池。
4、檢查請求的后綴,啟動aspnet_isapi.dll這個dll,這個dll是.net framework里面的,也就是說到這一步,請求進入了.net framework的管轄范圍。
5、這個時候如果是WebForm,開始執(zhí)行復雜的頁面生命周期(HttpRuntime→ProcessRequest→HttpContext→HttpHandler);如果是MVC,則啟動mvc的路由機制,根據(jù)路由規(guī)則為URL來指定HttpHandler。
6、httpHandler處理請求后,請求結(jié)束,給出Response,客戶端處理響應,整個過程結(jié)束。
七、Http協(xié)議
出現(xiàn)指數(shù):四顆星
主要考點:此題主要考對于web里面http協(xié)議的理解。
參考答案:
1、http協(xié)議是瀏覽器和服務器雙方共同遵循的規(guī)范,是一種基于TCP/IP應用層協(xié)議。
2、http是一種典型的請求/響應協(xié)議??蛻舳税l(fā)送請求,請求的內(nèi)容以及參數(shù)存放到請求報文里面,服務端收到請求后,做出響應,返回響應的結(jié)果放到響應報文里面。通過F12可以查看請求報文和響應報文。
3、http協(xié)議是”無狀態(tài)”的,當客戶端向服務端發(fā)送一次http請求后,服務端收到請求然后返回給客戶端相應的結(jié)果,服務器會立即斷開連接并釋放資源。在實際開發(fā)過程中,我們有時需要“保持”這種狀態(tài),所以衍生出了Session/Cookie這些技術。
4、http請求的方式主要有get/post。
5、http狀態(tài)碼最好記幾個,博主有一次面試就被問到了。200(請求成功)、404(請求的資源不存在)、403(禁止訪問)、5xx(服務端錯誤)
八、數(shù)據(jù)庫優(yōu)化經(jīng)驗(后端工程師非常常見)
出現(xiàn)指數(shù):四顆星
主要考點:此題考察后端工程師操作數(shù)據(jù)庫的經(jīng)驗。說實話,數(shù)據(jù)庫是博主的弱項,博主覺得對于這種考題,需要抓住幾個常用并且關鍵的優(yōu)化經(jīng)驗,如果說得不對,歡迎大家斧正。
參考答案:
1、數(shù)據(jù)庫運維方面的優(yōu)化:啟用數(shù)據(jù)庫緩存。對于一些比較常用的查詢可以采用數(shù)據(jù)庫緩存的機制,部署的時候需要注意設置好緩存依賴項,防止“過期”數(shù)據(jù)的產(chǎn)生。
2、數(shù)據(jù)庫索引方面的優(yōu)化:比如常用的字段建索引,聯(lián)合查詢考慮聯(lián)合索引。(PS:如果你有基礎,可以敞開談談聚集索引和非聚集索引的使用場景和區(qū)別)
3、數(shù)據(jù)庫查詢方面的優(yōu)化:避免select * 的寫法、盡量不用in和not in 這種耗性能的用法等等。
4、數(shù)據(jù)庫算法方面的優(yōu)化:盡量避免大事務操作、減少循環(huán)算法,對于大數(shù)據(jù)量的操作,避免使用游標的用法等等。
九、關于代碼優(yōu)化你怎么理解?你會考慮去代碼重構嗎?
出現(xiàn)指數(shù):四顆星
主要考點:此題考的是面試者對代碼優(yōu)化的理解,以及代碼如何重構的相關知識。
參考答案:
1、對于代碼優(yōu)化,之前的公司每周會做代碼審核,審核的主要作用就是保證代碼的正確性和執(zhí)行效率,比如減少代碼的層級結(jié)構、避免循環(huán)嵌套、避免循環(huán)CURD數(shù)據(jù)庫、盡量避免一次取出大量數(shù)據(jù)放在內(nèi)存中(容易內(nèi)存溢出)、優(yōu)化算法等。
2、對于陳舊代碼,可能很多地方有調(diào)用,并且開發(fā)和維護人員很有可能不是同一個人,所以重構時要格外小心,如果沒有十足的把握,不要輕易重構。如果必須要重構,必須做好充分的單元測試和全局測試。
十、談談你的優(yōu)點和缺點?
出現(xiàn)指數(shù):四顆星
主要考點:這道題讓人有一種罵人的沖動,但是沒辦法,偏偏很多所謂的大公司會問這個。比如華為。這個問題見仁見智,答案可以自己組織。
參考答案:
優(yōu)點:對于新的技術學**能力強,能很快適應新環(huán)境等等
缺點:對技術太過于執(zhí)著等等
十一、關于服務器端 MVC 架構的技術實現(xiàn),您是怎樣理解的?這種架構方式有什么好處?您在項目中是如何應用這一架構的?
出現(xiàn)指數(shù):三顆星
主要考點:此題主要考的對于MVC這種框架的理解。
參考答案:MVC,顧名思義,Model、View、Controller。所有的 界面代碼放在View里面,所有涉及和界面交互以及URL路由相關的邏輯都在Controller里面,Model提供數(shù)據(jù)模型。MVC的架構方式會讓系 統(tǒng)的可維護性更高,使得每一部分更加專注自己的職責,并且MVC提供了強大的路由機制,方便了頁面切換和界面交互。然后可以結(jié)合和WebForm的比較, 談談MVC如何解決復雜的控件樹生成、如何避免了復雜的頁面生命周期。
十二、網(wǎng)站優(yōu)化:網(wǎng)站運行慢,如何定位問題?發(fā)現(xiàn)問題如何解決?
出現(xiàn)指數(shù):三顆星
主要考點:此題和問題一類似,考察Web的問題定位能力和優(yōu)化方案。
參考答案:
瀏覽器F12→網(wǎng)絡→查看http請求數(shù)以及每個請求的耗時,找到問題的根源,然后依次解決,解決方案可以參考問題一里面的Web優(yōu)化方案。
十三、說說你最擅長的技術?并說說你是如何使用的?
出現(xiàn)指數(shù):三顆星
主要考點:這是一道非常開放的面試題。最初遇到這種問題,博主很想來一句:你妹,這叫什么問題!但確實有面試官問到。回頭想想,其實此題考查你擅長的技術的涉及深度。其實博主覺得對于這個問題,可以結(jié)合你項目中用到的某一個技術來說就好了。
參考答案:
簡單談談MEF在我們項目里面的使用吧。
在談MEF之前,我們必須要先談談DIP、IOC、DI
依賴倒置原則(DIP):一種軟件架構設計的原則(抽象概念)
控制反轉(zhuǎn)(IoC):一種反轉(zhuǎn)流、依賴和接口的方式(DIP的具體實現(xiàn)方式)。
依賴注入(DI):IoC的一種實現(xiàn)方式,用來反轉(zhuǎn)依賴(IoC的具體實現(xiàn)方式)。
什么意思呢?也就是說,我們在軟件架構的過程中,層和層之間通過接口依賴,下層不是 直接給上層提供實現(xiàn),而是提供接口,具體的實現(xiàn)以依賴注入的方式在運行的時候動態(tài)注入進去。MEF就是實現(xiàn)依賴注入的一種組件。它的使用使得UI層不直接 依賴于BLL層,而是依賴于中間的一個IBLL層,在程序運行的時候,通過MEF動態(tài)將BLL里面的實現(xiàn)注入到UI層里面去,這樣做的好處是減少了層與層 之間的耦合。這也正是面向接口編程方式的體現(xiàn)。
十四、自己寫過JS組件嗎?舉例說明。
出現(xiàn)指數(shù):三顆星
主要考點:此題考的js組件封裝和js閉包的一些用法。一般來說,還是筆試出現(xiàn)的幾率較大。
參考答案:自定義html的select組件
//combobox (function ($) { $.fn.combobox = function (options, param) { if (typeof options == 'string') { return $.fn.combobox.methods[options](this, param); } options = .fn.combobox.defaults, options || {}); var target = $(this); target.attr('valuefield', options.valueField); target.attr('textfield', options.textField); target.empty(); var option = $('<option></option>'); option.attr('value', ''); option.text(options.placeholder); target.append(option); if (options.data) { init(target, options.data); } else { //var param = {}; options.onBeforeLoad.call(target, option.param); if (!options.url) return; $.getJSON(options.url, option.param, function (data) { init(target, data); }); } function init(target, data) { $.each(data, function (i, item) { var option = $('<option></option>'); option.attr('value', item[options.valueField]); option.text(item[options.textField]); target.append(option); }); options.onLoadSuccess.call(target); } target.unbind("change"); target.on("change", function (e) { if (options.onChange) return options.onChange(target.val()); }); } $.fn.combobox.methods = { getValue: function (jq) { return jq.val(); }, setValue: function (jq, param) { jq.val(param); }, load: function (jq, url) { ('<option></option>'); option.attr('value', ''); option.text('請選擇'); jq.append(option); ('<option></option>'); option.attr('value', item[jq.attr('valuefield')]); option.text(item[jq.attr('textfield')]); jq.append(option); }); }); } }; $.fn.combobox.defaults = { url: null, param: null, data: null, valueField: 'value', textField: 'text', placeholder: '請選擇', onBeforeLoad: function (param) { }, onLoadSuccess: function () { }, onChange: function (value) { } }; })(jQuery); 調(diào)用的時候 $("#sel_search_orderstatus").combobox({ url: '/apiaction/Order/OrderApi/GetOrderStatu', valueField: 'VALUE', textField: 'NAME' });
就能自動從后臺取數(shù)據(jù),注意valueField和textField對應要顯示和實際值。
十五、自己寫過多線程組件嗎?簡要說明!
出現(xiàn)指數(shù):三顆星
主要考點:此題是兩年前博主在攜程的一次電話面試中遇到的,其他地方基本上沒遇到過,其實到現(xiàn)在也不能理解當時面試官問這個問題的目的。但我想,此問題必有出處,估計面試官是想了解你對多線程以及線程池等的理解深度。
知識點:
1、什么是面向?qū)ο螅?br />
面向?qū)ο笳f到底就是一種思想,任何事物都可以看作是一個對象。在有些面試題目中也稱之為OOP(Object Oriented Programming)。分開來解讀就是:
Object:對象
Oriented: 面向的
Programming:程序設計
面向?qū)ο缶褪前岩粋€人或事務的屬性,比如名字,年齡這些定義在一個實體類里面。存和取的時候直接使用存取實體類就把這個人的名字,年齡這些全部存了,這個實體類就叫對象,這種思想就叫面向?qū)ο蟆?br />
面向?qū)ο箝_發(fā)具有以下優(yōu)點: 代碼開發(fā)模塊化,便于維護。 代碼復用性強 代碼的可靠性和靈活性。 代碼的可讀性和可擴展性。
2. 簡述 private、 protected、 public、 internal 修飾符的訪問權限。
答 . private : 私有成員, 在類的內(nèi)部才可以訪問。 protected : 保護成員,該類內(nèi)部和繼承類中可以訪問。 public : 公共成員,完全公開,沒有訪問限制。 internal: 在同一命名空間內(nèi)可以訪問,當前程序集內(nèi)可以訪問
3 .列舉ASP.NET 頁面之間傳遞值的幾種方式。
答. 1.Request.QueryString 2.Request.Form 3.Session 4.Application 5.Cache 6.Cookie 7.Server.Transfer 8.Database 9.HttpContext的Item屬性等
4.a=10,b=15,請在不使用第三方變量的情況下,把a、b的值互換
答: int a=a+b; int b=a-b;int a=a-b;
5.用.net做B/S結(jié)構的系統(tǒng),您是用幾層結(jié)構來開發(fā),每一層之間的關系以及為什么要這樣分層?
答:一般為3層:數(shù)據(jù)訪問層,業(yè)務層,表示層。
數(shù)據(jù)訪問層對數(shù)據(jù)庫進行增刪查改。
業(yè)務層一般分為二層,業(yè)務表觀層實現(xiàn)與表示層的溝通,業(yè)務規(guī)則層實現(xiàn)用戶密碼的安全等。
表示層為了與用戶交互例如用戶添加表單。
優(yōu)點: 分工明確,條理清晰,易于調(diào)試,而且具有可擴展性。
缺點: 增加成本。
6.能用foreach遍歷訪問的對象需要實現(xiàn) ________________接口或聲明________________方法的類型。
答:IEnumerable 、 GetEnumerator。
7.GC是什么? 為什么要有GC?
答:GC是垃圾收集器。程序員不用擔心內(nèi)存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調(diào)用下面的方法之一: System.gc() Runtime.getRuntime().gc()
8.啟動一個線程是用run()還是start()?
答:啟動一個線程是調(diào)用start()方法,使線程所代表的虛擬處理機處于可運行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會立即運行。run() 方法可以產(chǎn)生必須退出的標志來停止一個線程。
9.是否可以繼承String類?
答:String類是final類故不可以繼承。
10.session喜歡丟值且占內(nèi)存,Cookis不安全,請問用什么辦法代替這兩種原始的方法
答:redis 或者 memcache。當然,微軟也提供了解決方案。iis中由于有進程回收機制,系統(tǒng)繁忙的話Session會丟失,可以用Sate server或SQL Server數(shù)據(jù)庫的方式。
11.IOC容器?
1. IOC即控制反轉(zhuǎn),是一種設計思想,在之前的項目中,當我們需要一個對象時,需要new一個對象,而IOC的設計思想是我們將需要的對象注入到一個容器中,就會獲得我們所需要的資源 。
2. IOC和DI IOC是控制反轉(zhuǎn),DI是依賴注入,控制反轉(zhuǎn)的解釋有些模棱兩可,而依賴注入就很明確,我們將需要的對象注入到容器中,獲取所需要的資源。
3. IOC控制反轉(zhuǎn):正常情況下程序開發(fā)是上端調(diào)用下端,依賴下端,依賴倒置原則告訴我們,上端不要依賴下端,要依賴抽象,上端只依賴抽象,細節(jié)交給第三方工廠(容器)來決定,這就是IOC,就是控制反轉(zhuǎn)——使系統(tǒng)架構可以更穩(wěn)定,支持擴展。
12、什么是委托,事件是不是一種委托?
1. 委托可以把一個方法作為參數(shù)代入另一個方法。
2. 委托可以理解為指向一個函數(shù)的引用。
3. 事件是一種特殊的委托。
delegate <函數(shù)返回類型> <委托名> (<函數(shù)參數(shù)>)
13.c#多線程是什么?
多線程的優(yōu)點:可以同時完成多個任務;可以使程序的響應速度更快;可以節(jié)省大量時間進行處理任務;可以隨時停止任務;可以設置每個任務的優(yōu)先級,以優(yōu)化程序性能。
14.WebApi概述
Web API是在.NET Framework之上構建的Web的API的框架,Web API是一個編程接口,用于操作可通過標準HTTP方法和標頭訪問的系統(tǒng),Web API需要基于.NET 3.5或更高版本才可以進行開發(fā)
15.什么是WebService
webservice是一種跨平臺,跨語言的規(guī)范,用于不同平臺,不同語言開發(fā)的應用之間的交互,是基于網(wǎng)絡的、分布式的模塊化組件,它執(zhí)行特定的任務,遵守具體的技術規(guī)范。
16.存儲過程是什么?有什么用?有什么優(yōu)點?用什么來調(diào)用?
存儲過程是預編譯,安全性高,也是大大提高了效率,存儲過程可以重復使用以減少數(shù)據(jù)庫開發(fā)人員的工作量,復雜的邏輯我們可以使用存儲過程完成,在存儲過程中我們可以使用臨時表,還可以定義變量,拼接sql語句,調(diào)用時,只需執(zhí)行這個存儲過程名,傳入我們所需要的參數(shù)即可。
17.何為觸發(fā)器?
觸發(fā)器是一種特殊的存儲過程,主要是通過事件觸發(fā)而被執(zhí)行。它可以強化約束來維護數(shù)據(jù)的完整性和一致性,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化。可以級聯(lián)運算。
常見的觸發(fā)器有三種:分別應用于Insert , Update , Delete 事件。
18.什么叫做泛型?
只是為了去掉重復代碼,應對不同類型的共同需求。
19. C#中值類型和引用類型分別有哪些?
值類型:結(jié)構體(數(shù)值類型,bool型,用戶定義的結(jié)構體),枚舉,可空類型。
引用類型:數(shù)組,用戶定義的類、接口、委托,object,字符串。
21 .NET的錯誤處理機制是什么?
.net錯誤處理機制采用try->catch->finally結(jié)構,發(fā)生錯誤時,層層上拋,直到找到匹配的Catch為止。
22.C#可否對內(nèi)存進行直接的操作?
在.net下,.net引用了垃圾回收(GC)功能,它替代了程序員不過在C#中,不能直接實現(xiàn)Finalize方法,而是在析構函數(shù)中調(diào)用基類的Finalize()方法。
23. ADO.NET相對于ADO等主要有什么改進?
1:ado.net不依賴于ole db提供程序,而是使用.net托管提供的程序,
2:不使用com
3:不在支持動態(tài)游標和服務器端游
4:,可以斷開connection而保留當前數(shù)據(jù)集可用
5:強類型轉(zhuǎn)換
6:xml支持
24.如果在一個B/S結(jié)構的系統(tǒng)中需要傳遞變量值,但是又不能使用Session、Cookie、Application,您有幾種方法進行處理?
this.Server.Transfer、Response.Redirect()、QueryString
25. .NET中讀寫數(shù)據(jù)庫需要用到那些類?他們的作用?
Connection連接對象,Command執(zhí)行命令和存儲過程,DataReader向前只讀的數(shù)據(jù)流,DataAdapter適配器,支持增刪查詢,DataSet數(shù)據(jù)級對象,相當與內(nèi)存里的一張或多張表。
26.簡要談一下您對微軟.NET架構下remoting和webservice兩項技術的理解以及實際中的應用。
WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進制傳送提高效率。
remoting是.net中用來跨越machine,process, appdomain進行方法調(diào)用的技術,對于三成結(jié)構的程序,就可以使用remoting技術來構建.它是分布應用的基礎技術.相當于以前的DCOM。
Web Service是一種構建應用程序的普通模型,并能在所有支持internet網(wǎng)通訊的操作系統(tǒng)上實施。Web Service令基于組件的開發(fā)和web的結(jié)合達到最佳,基于組件的對象模型。
27.什么是反射?
動態(tài)獲取程序集信息。
28.override與重載的區(qū)別?
重載是方法的名稱相同。參數(shù)或參數(shù)類型不同,進行多次重載以適應不同的需要。
Override是子類對基類中函數(shù)的重寫。為了適應需要。
29.裝箱和拆箱的概念和原理
裝箱是將值類型轉(zhuǎn)化為引用類型的過程;
拆箱是將引用類型轉(zhuǎn)化為值類型的過程
30.Session有什么重大BUG,微軟提出了什么方法加以解決?
是iis中由于有進程回收機制,系統(tǒng)繁忙的話Session會丟失,可以用Sate server或SQL Server數(shù)據(jù)庫的方式存儲Session不過這種方式比較慢,而且無法捕獲Session的END事件。
到此這篇關于ASP.NET(C#) 面試總結(jié)面試題大全的文章就介紹到這了,更多相關ASP.NET 面試題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持腳本之家!
相關文章
- 這篇文章主要介紹了C#面試題整理(帶答案),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-12-25