.NET軟件開發工程師暑期面試題庫測試三



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

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

2.什麼是面向對象?html

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

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

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

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

3.什麼是拆箱和裝箱?編程

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

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

答: private 私有成員, 在類的內部才能夠訪問。設計模式

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 關鍵字

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

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位上的數值(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 str = null; 定義了一個字符串對象,賦值爲null也就是沒有分配內存

string str=」」分配了內存空間 ,值爲空

string.Empty 是系統預約義的一個空字符串對象(長度爲0的字符串對象)已經分配內存

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

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

若是不在unsafe中,.net是不容許使用指針類型的。非安全程序的優勢,性能較高,能夠寫較高性能的程序代碼;但劣勢也是十分明顯——不支持移植性,GC甚至沒法管理內存等系統資源等等。因此通常狀況下不建議非安全編程,在安全編程中是不能夠有指針等類型的!

23.什麼是三層架構?

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

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

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

25.多線程編程中,sleep()和wait()有什麼區別?Int DataTime是否能夠爲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= { 5, 9, 15, 22, 30 }
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<T>和Dictionary<K,V>的區別和優點?

答:List<T>就是一個集合,它能夠存儲某種類型的列表, Dictionary<T1,T2>咱們俗稱其爲字典,他包含一個Key和與之對應的Value,其目的是可以根據Key迅速地找到Value相比之下List<T>的效率要快不少在Dictionary中,除了要存儲咱們實際須要的Value外,還須要一個輔助變量Key,這就形成了內存空間的雙重浪費(摘抄自百度:一樣是集合,爲何性能會有這樣的差距。咱們要從存儲結構和操做系統的原理談起。

首先咱們清楚List<T>是對數組作了一層包裝,咱們在數據結構上稱之爲線性表,而線性表的概念是,在內存中的連續區域,除了首節點和尾節點外,每一個節點都有着其惟一的前驅結點和後續節點。咱們在這裏關注的是連續這個概念。

而HashTable或者Dictionary,他是根據Key而根據Hash算法分析產生的內存地址,所以在宏觀上是不連續的,雖然微軟對其算法也進行了很大的優化。

因爲這樣的不連續,在遍歷時,Dictionary必然會產生大量的內存換頁操做,而List只須要進行最少的內存換頁便可,這就是List和Dictionary在遍歷時效率差別的根本緣由)

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是Web Service的通訊協議。當用戶經過UDDI找到你的WSDL描述文檔後,他經過能夠SOAP調用你創建的Web服務中的一個或多個操做。SOAP是XML文檔形式的調用方法的規範,能夠支持不一樣的底層接口,像HTTP(S)或者SMTP。應用程序經過使用遠程過程調用(RPC)在諸如 DCOM 與 CORBA 等對象之間進行通訊的方式會產生兼容性以及安全問題;防火牆和代理服務器一般會阻止此類流量。經過 HTTP 在應用程序間通訊是更好的方法,由於 HTTP 獲得了全部的因特網瀏覽器及服務器的支持。SOAP 提供了一種標準的方法,使得運行在不一樣的操做系統並使用不一樣的技術和編程語言的應用程序能夠互相進行通訊。

40.述ADO.NET五大對像?

答:

一、Connection(鏈接數據庫)

二、Command(執行T-SQL語句)

三、DataAdapter(用戶填充DataSet,斷開模式)

四、DataReader(讀取數據庫,一種只讀模式)

五、DataSet(數據集,比如電腦的內存)
相關文章
相關標籤/搜索