1.C#中的垃圾回收機制?
GChtml
(1)、提升了軟件開發的抽象度;程序員
(2)、程序員能夠將精力集中在實際的問題上而不用分心來管理內存的問題;web
(3)、可使模塊的接口更加的清晰,減少模塊間的偶合;算法
(4)、大大減小了內存人爲管理不當所帶來的Bug;數據庫
(5)、使內存管理更加高效。
2.什麼是面向對象?
封裝:用抽象的類型將數據和基於數據的操做封裝在一塊兒,數據被保護在抽象類的內部。
繼承:子類繼承父類的全部數據和操做。
多態:一個程序中同名的不一樣方法。
3.什麼是拆箱和裝箱?
裝箱:值類型到引用類型的轉換。
拆箱:引用類型到值類型的轉換。
4.簡述private、 protected、 internal 、public 修飾符的訪問權限?
private:私有成員,只能在類的內部訪問。
protected:保護成員,在該類內部和繼承類中能夠訪問。
internal:同一個程序集內進行訪問。
public:公共成員,徹底公開。
5.C#中的委託是什麼?事件是否是一種委託
委託是引用類型的變量,他能夠包含對方法的引用,當程序必須經過調用一個方法來執行某個操做,但在編譯時不知道該方法是什麼時,就可使用委託。委託容許在程序運行時指定調用的方法,委託的特色是面向對象的,類型是安全的。委託和事件是C#的亮點優點。 事件不是委託,在C#中處理事件的邏輯包裝爲委託。
6.C#中重寫和重載的區別?
重載就是在同一個類中,方法名相同,參數列表不一樣
重寫就是子類重寫父類的方法,在調用的時候,子類的方法會覆蓋父類的方法,也就是會調用子類的方法
7..net的錯誤處理機制是什麼?
try>catch>finall結構,發現錯誤時層層上拋直到找到匹配的catch爲止。
8.線程和進程的區別?編程
進程是資源的分配與調度的獨立單元,線程是CPU調度的基本單元。 同一進程能夠有多個線程,且線程共享整個進程的資源,一個進程至少包含一個線程。 線程是輕量級的進程,其建立與銷燬的所需時間比進程少不少。
9.什麼是wcf?什麼是WebServices?
WCF:是由微軟發展的一組數據通訊的應用程序開發接口,能夠翻譯爲Windows通信接口,它是.NET框架的一部分。
WCF 是一個分佈式應用的開發框架,屬於特定的技術,或者平臺。既不是標準也不是規範。
webservice是一種跨平臺,跨語言的規範,用於不一樣平臺,不一樣語言開發的應用之間的交互。
10. Public static const int a=1;這段代碼錯在哪裏? const不能被修飾爲static ;由於定義爲常量 (const )後就是靜態的(static )。
11.在.net中不想讓一個類被繼承用哪一個單車修飾?序列化一個類用哪一個單詞標記?json
sealed Serializable()
12.簡述C#中類與接口的區別?
接口是功能的定義。類是功能的具體實現。
13.在C#中咱們定義參數時常常會用到ref和out簡述一下區別?
1).ref型傳遞變量前,變量必須初始化,不然編譯器會報錯,而out型則不須要初始化
2).ref型傳遞變量,數值能夠傳入方法中,而out型沒法將數據傳入方法中。換而言之,ref型有進有出,out型只出不進。
14.C# 中有幾種循環?分別用在什麼場合?
do while:無論符不符合條件都會運行一次,在運行一次在以後再進行判斷是否符合條件。
while:首先判斷是否符合條件在進行運行。
for:和while的意思差很少只是表達形式不一樣;通常須要定義局部性控制循環的的變量使用。
foreach:只能對數據進行讀;在其做用域內不能對進行遍歷的值作修改,其遍歷順序只能遞增並且其控制循環變量是默認的只能++。
15.隨便寫出一個json對象數組?
[{"UserID":1,"Name":"張福威","Sex":"男"}]
16.C#實現代碼編程題:定義一個int數組,長度爲100,並向其中隨機插入1-100的數字,保證不重複?後端
int[] arr = new int[100];
List<int> list = new List<int> ();
for (int i = 0; i < arr.Length; i++)
{
list.Add (i + 1);
}
Random rd = new Random ();
int Index = 0;
while (list.Count > 0)
{
int num = rd.Next (0, list.Count);
int temp = list [num];
arr [Index] = temp;
Index++;
list.Remove (temp);
}
複製代碼
17.C#實現代碼編程題:編寫一個冒泡排序的方法,參數傳入一個int數組?設計模式
public static int[] Sort(int[] n1)
{
int temp;
for (int i = 0; i < n1.Length - 1; i++)
{
for (int j = 0; j < n1.Length - 1 - i; j++)
{
if (n1[j] > n1[j + 1])
{
temp = n1[j];
n1[j] = n1[j + 1];
n1[j + 1] = temp;
}
}
}
return n1;
}
複製代碼
18.談談你對remoting和webservice兩項技術的理解?
remoting是.net 中用來跨越machine, process, appdomain 進行方法調用的技術數組
Web Service是一種構建應用程序的普通模型,並能在全部支持internet網通信的操做系統上實施
19.C#代碼編程題: 1 1 2 3 5 8 13 21 34 55 用遞歸算法編寫一個方法,計算第n位上的數值(n>0)
public static int fn(int a)
{
if (a>2)
{
return fit(a - 1) + fit(a - 2);
}
else
{
return 1;
}
}
複製代碼
20.C#實現代碼編程題:1-2+3-4+……+m 輸出結果?
public static int sum(int shu)
{
int sum=0;
for (int i = 1; i <= shu; i++)
{
if(i%2==0)
{
sum-=i
}
else
{
sum+=i
}
}
}
複製代碼
21.簡述區別:string str=null、string str=」」、string str=string.empty
String str1 = null; str引用爲空 String str2 = ""; str應用一個空串 也就是null沒有分配空間, ""分配了空間, 所以str1還不是一個實例化的對象,而str2已經實例化。 null不是對象,""是對象。
23.什麼是三層架構?
三層架構(3-tier architecture) 一般意義上的三層架構就是將整個業務應用劃分爲:UI層(User Interface layer)、業務邏輯層(Business Logic Layer)、數據訪問層(Data access layer)。區分層次的目的即爲了「高內聚低耦合」的思想。在軟件體系架構設計中,分層式結構是最多見,也是最重要的一種結構。微軟推薦的分層式結構通常分爲三層,從下至上分別爲:數據訪問層、業務邏輯層(又或稱爲領域層)、表現層。
24.C#是否能夠對內存直接進行操做?
C#能夠直接對內存進行操做。可是默認狀況下,爲了保持類型安全,C#不支持指針運算。不過,經過使用 unsafe 關鍵字,能夠定義可以使用指針的不安全上下文。
25.多線程編程中,sleep()和wait()有什麼區別?IntDataTime是否能夠爲null?
wait()和sleep()均可以經過interrupt()方法來打斷線程的暫停狀態 ,一旦該線程進入到 wait()/sleep()/join()後,就會拋出InterruptedException;若是線程在正常運行中,則不會拋出這個異常,在實際編碼中,可使用try..catch來安全結束線程。 區別: 1)wait()是Object類的方法,sleep()是Thread類的方法 2)wait,notify和notifyAll只能在同步控制方法或者同步控制塊裏面使用,而sleep能夠在任何地方使用 3)sleep必須捕獲異常,而wait,notify和notifyAll不須要捕獲異常 Datetime是struct,值類型,值類型是不能爲null的.只有Datetime的泛型表達DateTime?類型能夠賦值爲null,但這只是一種簡寫,DateTime?的實際類型爲Nullable.全部值類型均可以轉換爲這種形式來賦值爲null
26.Short s1=1;s1=s1+1;兩句代碼有錯嗎?請指出爲何?簡述UDP和TCP的區別?
s1 + 1,s1是short類型,1是int型,s1會自動轉換爲int型的1,與1相加後,獲得int型的2,要向左側的short類型的s1看齊,即須要經過強制類型轉換。正確寫法:s1 = (short) (s1 + 1);
UDP是面向無鏈接的通信協議,UDP數據包括目的端口號和源端口號信息。
優勢:UDP速度快、操做簡單、要求系統資源較少,因爲通信不須要鏈接,能夠實現廣播發送
缺點:UDP傳送數據前並不與對方創建鏈接,對接收到的數據也不發送確認信號,發送端不知道數 據是否會正確接收,也不重複發送,不可靠。
TCP是面向鏈接的通信協議,經過三次握手創建鏈接,通信完成時四次握手
優勢:TCP在數據傳遞時,有確認、窗口、重傳、阻塞等控制機制,能保證數據正確性,較爲可靠。
缺點:TCP相對於UDP速度慢一點,要求系統資源較多
27. String s=new String(「abc」);建立了幾個String Object?
咱們能夠把上面這行代碼分紅String str、=、"abc"和new String()四部分來看待
String str只是定義了一個名爲str的String類型的變量,所以它並無建立對象;=是對變量str進行初始化,將某個對象的引用賦值給它,也沒有建立對象 new()建立了一個對象 "abc"是一個對象 因此一共兩個
28.代碼編程題:1 1 2 3 5 8 13 21 34……遞歸算法算出第n位上的數?
public int fn(n)
{
if(n<=2)
{
return 1
}
else
{
return fn(n-1)+fn(n-2)
}
}
複製代碼
29.編寫一個冒泡排序?
int[] list= { 1, 5, 2, 3, 7 }
public int[] fn(int[] list)
{
int temp=0;//用於進行交換的臨時數
for(int i=0;i<=list.Length;i++)
{
for(int j=0;j<list.Length-1-i;j++)
{
if (list[j - 1] > list[j])
{
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
}
return list;
}
複製代碼
30.OOP中字段封裝完叫屬性,那麼在set訪問器中有個隱藏的參數名稱叫什麼?簡述什麼是Code-Behind技術?
public string Name
{
get{
return name;
}
set
{
name = value;
}
}
複製代碼
在set訪問器中隱藏的參數名是value他的類型和聲明的屬性類型相同
Code-Behind技術 就是代碼隱藏,在ASP.NET中經過ASPX頁面指向CS文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web應用程序的建立。好比分工,美工和編程的能夠個幹各的,不用再像之前asp那樣都代碼和html代碼混在一塊兒,難以維護
31.請簡述List和Dictionary<K,V>的區別和優點?
List就是一個集合,它能夠存儲某種類型的列表,
Dictionary<T1,T2>咱們俗稱其爲字典,他包含一個Key和與之對應的Value,其目的是可以根據Key迅速地找到Value相比之下List的效率要快不少在Dictionary中,除了要存儲咱們實際須要的Value外,還須要一個輔助變量Key,這就形成了內存空間的雙重浪費
32.簡述一下.net MVC設計模式和工做原理?
MVC是一種軟件開發架構,它包含了不少的設計模式,最爲密切是如下三種:觀察者模式,組合模式和策略模式
MVC架構把數據處理,程序輸入輸出控制及數據顯示分離開來,而且描述了不一樣部件的對象間的通訊方式,使得軟件可維護性,可擴展性,靈活性以及封裝性大大提升。
MVC(Model-View-Controller)把系統的組成分解爲M(模型)、V(視圖)、C(控制器)三種部件。V(視圖)表示數據在屏幕上的顯示;C(控制器)提供處理過程控制,它在模型和視圖之間起鏈接做用。控制器自己不輸出任何信息和作任何處理,它只負責把用戶的請求轉成針對Model的操做,和調用相應的視圖來顯示Model處理後的數據。
33.簡述asp.net六大內置對象及用法?
Response對象:Response對象是HttpResponse類的一個對象,與一個HTTP響應相對應,經過該對象的屬性和方法能夠控制如何將服務器端的數據發送到客戶端瀏覽器
Request對象:Request對象是HttpRequest類的對象。當客戶發出請求執行,客戶端的請求信息會包裝在Request對象中。這些請求信息包括請求頭、請求方法(post,get)、提交的信息等
Server對象:Server對象的屬性反應了Web服務器的各類信息,他提供了服務器能夠提供的各類服務
Application對象:Application對象在實際網絡開發中的用途就是記錄整個網絡的信息,如上線人數、在線名單、意見調查和網上選舉等。在給定的應用程序的多有用戶之間共享信息,並在服務器運行期間持久的保存數據
Session對象:內置對象Session負責存儲、讀取和改變一個特定用戶的會話信息,對於每一個用戶的每次訪問Session對象都是惟一的。
Cookie對象:在Web程序設計中,它表示一個長度不超過4k的文本文件,這個文件在用戶的硬盤上,能夠由Web瀏覽器進行訪問
get請求會暴露用戶請求的參數在url地址中,而且數據有大小限制,可是處理速度快
post請求不會暴露用戶的請求參數,對數據沒有大小限制,可是處理速度相對get請求較慢
35.簡述WebService技術及在開發過程當中的使用?
WebService採用HTTP協議傳輸數據,採用XML格式封裝數據。XML是WebService平臺中表示數據的格式。除了易於創建和易於分析外,XML主要的優勢在於它既是平臺無關的,又是廠商無關的。無關性是比技術優越性更重要的,在開發過程當中WebService向外界暴露出一個能經過Web進行調用的API,客戶端能夠經過請求這個接口來獲取數據。實現先後端的分離加快開發效率
36.什麼是SQL注入式攻擊,如何防範?
所謂SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字符串,欺騙服務器執行惡意的SQL命令,從而對數據庫的數據進行操做的一種攻擊手段
1.進行字符替換,替換掉一些敏感字符
2.使用存儲過程完成數據的查詢
3.限制表單輸入的字符長度
4.在後端對用戶輸入的信息校驗合法性
5.檢查提取數據的查詢所返回的記錄數量
6.將用戶登陸名稱、密碼等數據加密保存
37.簡述HTML和服務器控件的區別?
1)前者能夠觸發服務器控件特有的事件,後者只能經過回遞的方式觸發服務器上的頁面級事件。
2)輸入到前者中的數據在請求之間能夠維護(即具備狀態管理功能),然後者沒法自動維護數據,只能使用頁面級的腳原本保存和恢復。
3)前者能夠自動檢測瀏覽器並調整到恰當的顯示,然後者沒有自動適應功能,必須在代碼中手動檢測瀏覽器。
4)每一個服務器控件都具備一組屬性,能夠在服務器端的代碼中更改控件的外觀和行爲,然後者只有HTML屬性。
若是某些控件不須要服務器端的事件或狀態管理功能時,能夠選擇HTML控件,這樣能夠提升應用程序的性能。
1.Request.QueryString:獲取http查詢字符串變量集合即Request.QueryString[string name]
2.Request.Form:獲取窗體變量集合即Request.Form[string name]
3.Session:即Session["string"]=string
39.什麼是SoAP協議?
SOAP 是基於 XML 的簡易協議,可以使應用程序在 HTTP 之上進行信息交換。 或者更簡單地說:SOAP 是用於訪問網絡服務的協議。
40.簡述ADO.NET五大對像?
一、Connection(鏈接數據庫) 二、Command(執行T-SQL語句) 三、DataAdapter(用戶填充DataSet,斷開模式) 四、DataReader(讀取數據庫,一種只讀模式) 五、DataSet(數據集,比如電腦的內存)