金三銀四面試:C#.NET面試題 基礎(chǔ)篇5
4.在.NET托管代碼總我們不必?fù)?dān)心內(nèi)存泄漏,這是因?yàn)橛辛耍?/a>
10.23種設(shè)計(jì)模式分別叫什么名稱,如何分類?
Webservice
它是基于SOAP協(xié)議的,數(shù)據(jù)格式是XML (SOAP )
只支持HTTP協(xié)議
不是開源的,但可以被任意一個(gè)了解XML的人使用
它只能部署在IIS上
Webapi
Web API 是一個(gè)開源的、理想的、構(gòu)建REST-ful 服務(wù)的技術(shù)
它也支持MVC的特征,像路由、控制器、action、filter等
它可以部署在應(yīng)用程序和IIS上
Response可以被Web API的MediaTypeFormatter轉(zhuǎn)換成Json、XML 或者任何你想轉(zhuǎn)換的格式。
2.ADO.NET常用對象有哪些? ? ? ? ? ? ? ? ? ? ? ?
Connection:主要是開啟程序和數(shù)據(jù)庫之間的連接。沒有利用連接對象將數(shù)據(jù)庫打開,是無法從數(shù)據(jù)庫中取得數(shù)據(jù)的。Close和Dispose的區(qū)別,Close以后還可以O(shè)pen,Dispose以后則不能再用。
Command:主要可以用來對數(shù)據(jù)庫發(fā)出一些指令,例如可以對數(shù)據(jù)庫下達(dá)查詢、新增、修改、刪除數(shù)
據(jù)等指令,以及調(diào)用存在數(shù)據(jù)庫中的存儲(chǔ)過程等。這個(gè)對象是架構(gòu)在Connection 對象上,也就是Command 對象是通過在Connection對象連接到數(shù)據(jù)源。
DataAdapter:主要是在數(shù)據(jù)源以及DataSet 之間執(zhí)行數(shù)據(jù)傳輸?shù)墓ぷ鳎梢酝高^Command 對象下達(dá)命令后,并將取得的數(shù)據(jù)放入DataSet 對象中。這個(gè)對象是架構(gòu)在Command對象上,并提供了許多配合DataSet 使用的功能。
DataSet:這個(gè)對象可以視為一個(gè)暫存區(qū)(Cache),可以把從數(shù)據(jù)庫中所查詢到的數(shù)據(jù)保留起來,甚至可以將整個(gè)數(shù)據(jù)庫顯示出來,DataSet是放在內(nèi)存中的。DataSet 的能力不只是可以儲(chǔ)存多個(gè)Table 而已,還可以透過DataAdapter對象取得一些例如主鍵等的數(shù)據(jù)表結(jié)構(gòu),并可以記錄數(shù)據(jù)表間的關(guān)聯(lián)。
DataSet 對象可以說是ADO.NET 中重量級的對象,這個(gè)對象架構(gòu)在DataAdapter對象上,本身不具備和數(shù)據(jù)源溝通的能力;也就是說我們是將DataAdapter對象當(dāng)做DataSet 對象以及數(shù)據(jù)源間傳輸數(shù)據(jù)的橋梁。DataSet包含若干DataTable、DataTableTable包含若干DataRow。
DataReader:當(dāng)我們只需要循序的讀取數(shù)據(jù)而不需要其它操作時(shí),可以使用DataReader 對象。
DataReader對象只是一次一次向下循序的讀取數(shù)據(jù)源中的數(shù)據(jù),這些數(shù)據(jù)是存在數(shù)據(jù)庫服務(wù)器中的,而不是一次性加載到程序的內(nèi)存中的,只能(通過游標(biāo))讀取當(dāng)前行的數(shù)據(jù),而且這些數(shù)據(jù)是只讀的,并不允許作其它的操作。因?yàn)镈ataReader 在讀取數(shù)據(jù)的時(shí)候限制了每次只讀取一條,而且只能只讀,所以使用起來不但節(jié)省資源而且效率很好。
托管代碼:是由公共語言運(yùn)行庫(CLR)執(zhí)行的代碼,而不是由操作系統(tǒng)直接執(zhí)行。有關(guān)內(nèi)存管理(內(nèi)存申請,內(nèi)存釋放,垃圾回收之類的)全部都是.net的CLR來管理。
非托管代碼:直接編譯成目標(biāo)計(jì)算機(jī)碼,由操作系統(tǒng)直接執(zhí)行的代碼,內(nèi)存回收要繼承IDisposable接口手動(dòng)回收。
4.在.NET托管代碼總我們不必?fù)?dān)心內(nèi)存泄漏,這是因?yàn)橛辛耍?/strong>? ? ?
GC 垃圾收集器。
?
5.什么是MVC模式?? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
MVC(Model View Controller)模型-視圖-控制器
在MVC項(xiàng)目里cshtml就是View視圖;Model:DataSet、Reader、對象;Controller:CS邏輯代碼。
MVC是典型的平行關(guān)系,沒有說誰在上誰在下的關(guān)系,模型負(fù)責(zé)業(yè)務(wù)領(lǐng)域的事情,視圖負(fù)責(zé)顯示的事情,控制器把數(shù)據(jù)讀取出來填充模型后把模型交給視圖去處理。而各種驗(yàn)證什么的應(yīng)該是在模型里處理了。它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。MVC最大的好處是將邏輯和頁面分離。
--->詳解???
6.能用foreach遍歷訪問的對象的要求? ? ? ? ? ? ? ??
需要實(shí)現(xiàn)IEnumerable接口或聲明GetEnumerator方法的類型。
7.什么是反射? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
程序集包含模塊,而模塊又包括類型,類型下有成員,反射就是管理程序集,模塊,類型的對象,它能夠動(dòng)態(tài)的創(chuàng)建類型的實(shí)例,設(shè)置現(xiàn)有對象的類型或者獲取現(xiàn)有對象的類型,能調(diào)用類型的方法和訪問類型的字段屬性。它是在運(yùn)行時(shí)創(chuàng)建和使用類型實(shí)例。
8.ORM中的延遲加載與直接加載有什么異同?? ? ? ? ? ? ? ?
延遲加載(Lazy Loading)只在真正需要進(jìn)行數(shù)據(jù)操作的時(shí)候再進(jìn)行加載數(shù)據(jù),可以減少不必要的開銷。
9.簡述Func與Action的區(qū)別?? ? ? ? ? ? ? ? ? ? ? ??
Func是有返回值的委托,Action是沒有返回值的委托。
10.23種設(shè)計(jì)模式分別叫什么名稱,如何分類? ? ? ? ? ?
分三類:
創(chuàng)建型,行為型,結(jié)構(gòu)型;
創(chuàng)建型包含:
1).單例模式,2).工廠模式 3).建造者模式? 4).原型模式? 5).工廠方法模式
行為型包含:
1).策略模式
2).模板方法模式
3).觀察者模式
4).迭代子模式
5).責(zé)任鏈模式
6).命令模式
7).備忘錄模式
8).狀態(tài)模式
9).訪問者模式
10).中介者模式
11).解釋器模式
結(jié)構(gòu)型設(shè)計(jì)模式包含:
1).適配器模式
2).裝飾器模式
3).代理模式
4).外觀模式
5).橋接模式
6).組合模式
7).享元模式
版權(quán)申明:本文來源于網(wǎng)友收集或網(wǎng)友提供,僅供學(xué)習(xí)交流之用,如果有侵權(quán),請轉(zhuǎn)告版主或者留言,本公眾號立即刪除。
支持小微:
299元購買5000+的.NET架構(gòu)課程,還送初級、中級課程!騰訊云 爆款2核2G云服務(wù)器首年40元,2G4核云服務(wù)器298元/3年
鏈接:https://curl.qcloud.com/1VVs7OBH
右下角,您點(diǎn)一下在看圖片
小微工資漲1毛
商務(wù)合作QQ:185601686
