C#題(子文章)(持續更新)

-----> 總文章 入口

文章目錄

C#

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

private : 私有成員, 在類的內部纔可以訪問。
protected : 保護成員,該類內部和繼承類中可以訪問。
public : 公共成員,完全公開,沒有訪問限制。
internal: 在同一命名空間內可以訪問。

2 .列舉ASP.NET 頁面之間傳遞值的幾種方式。

1.使用QueryString, 如…?id=1; response. Redirect()…
2.使用Session變量
3.使用Server.Transfer

3.C#中的委託是什麼?事件是不是一種委託?

委託可以把一個方法作爲參數代入另一個方法。 委託可以理解爲指向一個函數的引用。
是,是一種特殊的委託

4.override與重載的區別

重載是方法的名稱相同。參數或參數類型不同,進行多 次重載以適應不同的需要
Override 是進行基類中函數的重寫。爲了適應需要。

5.用.net做B/S結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲什麼要這樣分層?

一般爲3層 數據訪問層,業務層,表示層。

數據訪問層對數據庫進行增刪查改。
業務層一般分爲二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密 碼的安全等。
表示層爲了與用戶交互例如用戶添加表單。

優點:

分工明確,條理清晰,易於調試,而且具有可擴展性。

缺點:

增加成本。

6.CTS、CLS、CLR分別作何解釋?

CTS:通用語言系統。
CLS:通用語言規範。
CLR:公共語言運行庫。

7.什麼是裝箱和拆箱?

從值類型接口轉換到引用類型裝箱。
從引用類型轉換到值類型拆箱。

8.什麼是受管制的代碼?

unsafe:非託管代碼。不經過CLR運行。

9.常用的調用WebService的方法有哪些?

1.使用WSDL.exe命令行工具。
2.使用VS.NET中的Add Web Reference菜單選項

10.在C#中,string str = null 與 string str = “” 請儘量使用文字或圖象說明其中的區別。

string str = null 是不給他分配內存空間,
string str = “” 給它分配 長度爲空字符串的內存空間。

11.類(class)與結構(struct)的區別

Class可以被實例化,屬於引用類型,是分配在內存的堆上的
Struct屬於值類型,是分配在內存的棧上的.

12.GC是什麼? 爲什麼要有GC?

GC是垃圾收集器。程序員不用擔心內存管理,因爲垃圾收集器會自動進行管 理。
要請求垃圾收集,可以調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()

13.String s = new String(“xyz”);創建了幾個String Object?

兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象s。

14.啓動一個線程是用run()還是start()?

啓動一個線程是調用start()方法,使線程所代表的虛擬處理機處於可運行狀 態,這意味着它可以由JVM調度並執行。這並不意味着線程就會立即運行。
run()方法可以產生必須退出的標誌來停止一個線程。

15.是否可以繼承String類?

String類是final類故不可以繼承。

16.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被執行,在return前還是後?

會執行,在return前執行。

17.兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?

不對,有相同的hash code。

18.當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?

不能,一個對象的一個synchronized方法只能由一個線程訪問。

19.Session有什麼重大BUG,微軟提出了什麼方法加以解決?

是iis中由於有進程回收機制,系統繁忙的話Session會丟失
可以用SQL Server數據庫的方式存儲Session不過這種方式比較慢,
而且無法 捕獲Session的END事件。

20.進程和線程的區別?

進程是系統進行資源分配和調度的單位;
線程是CPU調度和分派的單位,一個 進程可以有多個線程,這些線程共享這個進程的資源。

21.堆和棧的區別?

棧:由編譯器自動分配、釋放。在函數體中定義的變量通常在棧上。
堆:一般由程序員分配釋放。用new、malloc等分配內存函數分配得到的就是在堆 上。

22.成員變量和成員函數前加static的作用?

它們被稱爲常成員變量和常成員函數,又稱爲類成員變量和類成員函數。分 別用來反映類的狀態。
比如類成員變量可以用來統計類實例的數量,類成員函數 負責這種統計的動作。

23.ASP.NET與ASP相比,主要有哪些進步?

asp解釋形,aspx編譯型,性能提高,有利於保護源碼。

24.請說明在.net中常用的幾種頁面間傳遞參數的方法,並說出他們的優缺點。

session(viewstate) 簡單,但易丟失
application 全局
cookie 簡單,但可能不支持,可能被僞造
input ttype=“hidden” 簡單,可能被僞造
url參數 簡單,顯示於地址欄,長度有限
數據庫 穩定,安全,但性能相對弱

25.DataReader與Dataset有什麼區別?

DataReader是隻能向前的只讀遊標,
Dataset是內存中虛擬的數據庫。

26.什麼是虛函數?什麼是抽象函數?

虛函數:沒有實現的,可由子類繼承並重寫的函數。
抽象函數:規定其非虛子類必須實現的函數,必須被重寫。

27.什麼是code-Behind技術。

ASPX,RESX和CS三個後綴的文件,這個就是代碼分離.
實現了HTML代碼和服務器代碼分離.方便代碼編寫和整理.

28.什麼是SOAP,有哪些應用。

simple object access protocal,簡單對象接受協議.
以xml爲基本編碼結構,建立在已有通信協議上 的一種規範Web Service使用的協議…

29.C#中 property 與 attribute的區別,他們各有什麼用處,這種機制的好處在哪裏?

一個是屬性,用於存取類的字段,
一個是特性,用來標識類,方法等的附加性質

30.當整數a賦值給一個object對象時,整數a將會被?

裝箱

31.public static const int A=1;這段代碼有錯誤麼?是什麼?

const不能用static修飾。

32.float f=-123.567F; int i=(int)f;i的值現在是?

-123

33. Net MVC 由控制器向視圖傳遞數據的對象有哪些?

viewBag , viewData , TempleData , 普通Model , 強類型Model , Razor Engine


34. 列舉 MVC ActionResult 的幾種返回類型

  1. ViewResult ,
  2. PartialViewResult ,
  3. ContentResult ,
  4. JsonResult ,
  5. FileResult ,
  6. Null,
  7. Redirect / RedirectToAction / RedirectToRoute

35. 正則表達式 的特殊符號中 “\d{6,12}表示?”

6-12位數字


36. JQuery $(document).ready() 與 window.onload 有啥區別?

1.執行的時間不同
onload 必須等到頁面內包括圖片的所有元素加載完畢後才能執行,
read()是DOM結構繪製完畢後就執行,不必等到加載完畢.
2. 簡化寫法
window.onload沒有簡化寫法
$(document).ready(function(){}) 可以簡寫成 $(function(){});


37. a=8 ,b=24 在不使用 第三方的前提下,把ab的值互換。

  1. a=a+b; b=a-b; a=a-b;
  2. a=10=0x0a=00001010b(在內存或計算機處理數據時), b=15=0x0f=00001111b(在內存或計算機處理數據時)
    所以,在a=b=a^=b;執行計算時,
    先執行:a=b(最右邊),即a=ab=00001010b^00001111b=00000101b=0x05
    再執行:b=a(中間),即b=ba=00001111b^00000101b=00001010b=0x0a=10
    再執行:a=b(最左邊),即a=ab=00000101b^00001010b=00001111b=0x0f=15
    故達成目標。
  3. a=b(b=ab); // 13個字節
  4. a=b+(b=a)*0; // 11個字節

38.什麼是強類型,什麼是弱類型?哪種更好些?爲什麼?

弱類型語言允許將一塊內存看做多種類型。
比如直接將整型變量與字符變量相加。
C 和 C++是靜態語言,也是弱類型語言;
Perl 和 PHP 是動態語言,但也是弱類型語言。

強類型語言在沒有強制類型轉化前,不允許兩種不同類型的變量相互操作。
Java、C#和Python等都是強類型語言。
使用哪種語言還是要按需而定。編寫簡單小應用,使用弱類型語言可節省很多代碼量,有更高的開發效率。
而對於構建大型項目,使用強類型語言可能會比使用弱類型更加規範可靠。

39. UDP連接和TCP連接有什麼異同?

  1. 簡單的說TCP與UDP的區別是有無連接狀態。
  2. TCP是面向連接的,UDP是面向無連接的。TCP(Transmission Control Protocol,傳輸控制協議),UDP(User Datagram Protocol,用戶數據包協議)
  3. TCP UDP是兩個協議,簡單的說,TCP連接要對方確認的,而UDP卻不需要對方確認收到包,所以TCP連接更加安全,
  4. 傳輸層協議一般有TCP和UDP,TCP爲可靠傳輸,協議本身會保證數據傳輸的可靠,但爲此會付出很多額外的網絡開銷。UDP爲不可靠傳輸,所以傳輸效率比較高,本端只負責發送數據,不保證對端能否收到。對於UDP,可靠性可以在應用層實現

40. 產生一個int數組,長度爲100,並向其中隨機插入1-100,不能重複。

namespace Wolfy.RandomDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] result = GetRandom(100);
            for (int i = 0; i < result.Length; i++)
            {
                Console.WriteLine(result[i]);
            }
            Console.WriteLine("over:" + result.Length);
            Console.Read();
        }
        /// <summary>
        /// 獲得無重複隨機數組
        /// </summary>
        /// <param name="n">上限n</param>
        /// <returns>返回隨機數組</returns>
        static int[] GetRandom(int n)
        {
            //容器A和B
            int[] arryA = new int[n];
            int[] arryB = new int[n];
            //填充容器a
            for (int i = 0; i < arryA.Length; i++)
            {
                arryA[i] = i + 1;
            }
            //隨機對象
            Random r = new Random();
            //最後一個元素的索引 如n=100,end=99
            int end = n - 1;
            for (int i = 0; i < n; i++)
            {
                //生成隨機數 因爲隨機的是索引 所以從0到100取,end=100
                //一個大於等於 minValue 且小於 maxValue 的 32 位帶符號整數,
                //即:返回的值範圍包括 minValue 但不包括 maxValue。 
                //如果 minValue 等於 maxValue,則返回 minValue
                //
                int minValue = 0;
                int maxValue = end + 1;
                int ranIndex = r.Next(minValue, maxValue);
                //把隨機數放在容器B中
                arryB[i] = arryA[ranIndex];
                //用最後一個元素覆蓋取出的元素
                arryA[ranIndex] = arryA[end];
                //縮減隨機數生成的範圍
                end--;
            }
            //返回生成的隨機數組
            return arryB;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章