.NET軟件開發面試題(40)

1.C#中的垃圾回收機制?javascript

答:GC就是垃圾回收機制,通常狀況下系統會自動檢測不會使用的對象或者變量進行清除釋放內存,Collect()是強制垃圾回收。html

2.什麼是面向對象?java

答:web

封裝:用抽象的類型將數據和基於數據的操做封裝在一塊兒,數據被保護在抽象類的內部。算法

繼承:子類繼承父類的全部數據和操做。數據庫

多態:一個程序中同名的不一樣方法。編程

3.什麼是拆箱和裝箱?json

答: 裝箱:值類型到引用類型的轉換。後端

拆箱:引用類型到值類型的轉換。設計模式

4.簡述private、 protected、 internal 、public 修飾符的訪問權限?

答:

private:私有成員,只能在類的內部訪問。

protected:保護成員,在該類內部和繼承類中能夠訪問。

internal:同一個程序集內進行訪問。

public:公共成員,徹底公開。

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

答:

委託在本質上是一種方法接口,至關於C/C++中的函數指針,可是比指針安全,在C#中用於時間的處理。

事件不是委託,在C#中處理事件的邏輯包裝爲委託。

6.C#中重寫和重載的區別?

答:

重寫:基類中函數的重寫,爲了適應需求。

重載:方法名相同,參數或參數類型不一樣。

7..net的錯誤處理機制是什麼?

答:

try>catch>finall結構,發現錯誤時層層上拋直到找到匹配的catch爲止。

8.線程和進程的區別?

答:

進程是資源的分配與調度的獨立單元,線程是CPU調度的基本單元。 同一進程能夠有多個線程,且線程共享整個進程的資源,一個進程至少包含一個線程。 線程是輕量級的進程,其建立與銷燬的所需時間比進程少不少。

9.什麼是wcf?什麼是WebServices?

答:

WCF:是由微軟發展的一組數據通訊的應用程序開發接口,能夠翻譯爲Windows通信接口,它是.NET框架的一部分。

web services:WebService就是一個應用程序,它向外界暴露出一個可以經過Web進行調用的API。這就是說,你可以用編程的方法經過Web調用來實現某個功能的應用程序。

10. Public static const int a=1;這段代碼錯在哪裏?

答:

const不能被修飾爲static ;由於定義爲常量 (const )後就是靜態的(static )。

11.在.net中不想讓一個類被繼承用哪一個單車修飾?序列化一個類用哪一個單詞標記?

答:

不可被繼承:用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":"王家樂","Tel":"17629731003","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兩項技術的理解?

答:

WS主要是可利用HTTP,穿透防火牆。而Remoting能夠利用TCP/IP,二進制傳送提升效率。

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不是對象,""是對象 。

22. C#中能使用指針嗎?怎麼使用?

答:

C#僅是語言層面的,因此C#自己是存在指針類型的,能夠引用指針。
在.net開發時,凡是使用指針、開闢內存等不受託管處理的都爲非安全開發。也就是說,指針之類的引用在.net中必須加在unsafe關鍵詞之詞。並且在編譯時也必須選中容許非安全編譯才能夠經過。

23.什麼是三層架構?

答:

三層架構輯層、數據訪問層。區分層次的目的即爲了「高內聚低耦合」的思想。在軟件體系架構設計中,分層式結構是最多見,也是最重要的一種結構。微軟推薦的分層式結構通常分爲三層,從下至上分別爲:數據訪問層、業務邏輯層(又或稱爲領域層)、表示層。

24.C#是否能夠對內存直接進行操做?

答:

C#能夠直接對內存進行操做。可是默認狀況下,爲了保持類型安全,C#不支持指針運算。不過,經過使用 unsafe 關鍵字,能夠定義可以使用指針的不安全上下文。

25.多線程編程中,sleep()和wait()有什麼區別?IntDataTime是否能夠爲null?

答:

sleep()和wait()方法的最大區別是:sleep()睡眠時,保持對象鎖,仍然佔有該鎖;其餘線程沒法訪問,而wait()睡眠時,釋放對象鎖。其餘線程能夠訪問。Int DataTime,在賦值時未給予賦值,此時系統會分配給它一個最小的時間,不會是null值,Int DataTime,不會有null類型,C#提供了「可空類型」這種語法,只要在類型後加?就構成了可空的數據類型,好比int?、bool?,這樣int? i=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?

答:若是在字符串常量池中不存在其表明的對象,就建立兩個,若是存在就建立一個.

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瀏覽器進行訪問

34. Get和Post區別?

答:

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和服務器控件的區別?

答:

html 就是咱們一般的說的 html 語言標記,這些語言標記在已往的靜態頁面和其餘網頁裏存在,不能在服務器端控制的,只能在客戶端經過 javascript等程序語言來控制

asp.net的服務器控件是運行在服務器上的,直接封裝了操做該控件的方法,先後代碼不分離一個運行在客戶端一個運行在服務端

38. Asp.net中你知道多少種頁面傳值的方式,請一一列舉

答:

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(數據集,比如電腦的內存)

相關文章
相關標籤/搜索