.NET軟件開發工程師面試題


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

答:在C#中有GC垃圾回收器,通常來講系統會自動檢測不使用的對象或者變量對其進行內存釋放不須要進行手動調用,Collector就是強制進行垃圾回收使得內存即便獲得釋放提升效率web

2.什麼是面向對象?算法

答:C#中面向對象是一種編程思想編程

       封裝:所謂封裝也就是把客觀事物封裝成抽象的類,而且類能夠把本身的數據和方法只讓         可信的類或者對象操做,對不可信的進行信息隱藏。封裝是面向對象的特徵之一,是對象         和類概念的主要特性json

       繼承:繼承概念的實現方式有二類:實現繼承與接口繼承。實現繼承是指直接使用基類的         屬性和方法而無需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、可是子類必         須提供實現的能力;數組

       多態:所謂多態就是指一個類實例的相同方法在不一樣情形有不一樣表現形式。多態機制使具         有不一樣內部結構的對象能夠共享相同的外部接口。這意味着,雖然針對不一樣對象的具體操         做不一樣,但經過一個公共的類,它們能夠經過相同的方式予以調用。安全

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

答:值類型到引用類型是裝箱,引用類型到值類型是拆箱app

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

答: private 私有成員, 在類的內部才能夠訪問。dom

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

        public 公共成員,徹底公開,沒有訪問限制。

        internal 在同一命名空間內能夠訪問。

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

答: 1.委託 委託相似於C/C++中的函數指針,它可以引用函數,但在C#中委託是一個對象,且是安全的。一個委託類型的變量能夠引用一個或多個方法,委託能夠把一個方法做爲參數代入另外一個方法。 委託能夠理解爲指向一個函數的引用。

2.事件是一種特殊的委託

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

答:抽象方法必須重寫,虛方法能夠重寫也能夠不重寫

重寫:當一個子類繼承一父類,而子類中的方法與父類中的方法的名稱,參數個數、類型都徹底一致時,就稱子類中的這個方法重寫了父類中的方法。

重載:一個類中的方法與另外一個方法同名,可是參數列表不一樣,這種方法稱之爲重載方法。

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

   答: 

try{throw new Exception();}catch (Exception){return arr;}finally{arr[1] = "three";}複製代碼

錯誤的處理順序:finally先,catch次之,最後退會try代碼..取消這次操做.返回catch中的異常信息.固然,你也能夠定製本身的錯誤處理機制...若是你的異常處理中包含finally塊.則此finally不管是否發生異常始終會被執行...

8.線程和進程的區別?

答:1.進程是資源分配的最小單位,線程是程序執行的最小單位(資源調度的最小單位)

2.進程有本身的獨立地址空間,每啓動一個進程,系統就會爲它分配地址空間,一個進程包含多個線程

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

答:1.Web Service:嚴格來講是行業標準,也就是Web Service 規範,既不是框架,也不是技術。它有一套完成的規範體系標準,並且在持續不斷的更新完善中。它使用XML擴展標記語言來表示數據(這個是跨平臺跨語言的關鍵)

2.WCF 是一個分佈式應用的開發框架,屬於特定的技術,或者平臺。既不是標準也不是規範。

WCF其實必定程度上就是ASP.NET Web Service,由於它支持Web Service的行業標準和核心協議,所以ASP.NET Web Service和WSE能作的事情,它幾乎都能勝任,跨平臺和語言更不是問題(數據也支持XML格式化,並且提供了本身的格式化器)。 

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

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

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

答:1.只須要在定義類時加上 sealed 關鍵字

public sealed class Room
{
    。。。。。。
}
複製代碼

     2.在類定義前寫上[Serializable()]

[Serializable()]public class User{。。。。。。}複製代碼

12.簡述C#中類與接口的區別?

答:接口的方法只能聲明不能定義;類能夠    接口裏面的方法不能爲abstrat或者virtual;類能夠
類:接口——>實現接口;
類:類——>繼承類;
接口:接口——>繼承接口。
一個類能夠實現多個接口;一個類只能繼承一個類

13.在C#中咱們定義參數時常常會用到ref和out簡述一下區別?

答:ref型傳遞變量前,變量必須初始化,不然編譯器會報錯,而out型則不須要初始化  ref型傳遞變量,數值能夠傳入方法中,而out型沒法將數據傳入方法中。換而言之,ref型有進有出,out型只出不進。 out型參數 與ref型相似,僅用於傳回結果。

14. C#中有幾種循環?分別用在什麼場合?

答:

1.do while:無論符不符合條件都會運行一次,在運行一次在以後再進行判斷是否符合條件。

2.while:首先判斷是否符合條件在進行運行。
3.for和while的意思差很少只是表達形式不一樣;通常須要定義局部性控制循環的的變量使用。
4.foreach:只能對數據進行讀;在其做用域內不能對進行遍歷的值作修改,其遍歷順序只能遞增並且其控制循環變量是默認的只能++

15.隨便寫出一個json格式串?

答:

[{"age":"18"},{"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兩項技術的理解?

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

remoting是.net 中用來跨越machine, process, appdomain 進行方法調用的技術,對於三成結構的程序,就可使用remoting技術來構建.它是分佈應用的基礎技術.至關於之前的DCOM Web Service是一種構建應用程序的普通模型,並能在全部支持internet網通信的操做系統上實施。Web Service令基於組件的開發和web的結合達到最佳,基於組件的對象模型

19. C#代碼編程題:1 1 2 3 5 8 13 21 34 55用遞歸算法編寫一個方法,傳入n第幾位,得出第幾位上的數值?

答:

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(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
        }
    }}  

複製代碼
相關文章
相關標籤/搜索