1. 程式人生 > 其它 >.Net 面試題整理(一)

.Net 面試題整理(一)

技術標籤:C#教程c#

1、C# 的三大特性?

封裝、繼承、多型

2、簡述 private、 protected、 public、 internal 修飾符的訪問許可權。

private : 私有成員, 在類的內部才可以訪問。

protected : 保護成員,該類內部和繼承類中可以訪問。

public : 公共成員,完全公開,沒有訪問限制。

internal: 當前程式集內可以訪問。

3、介面和類的區別

介面:不能例項化,方法也沒有具體的實現,被繼承時,繼承類必須實現介面的所有方法。

類:可以被例項化,被繼承時,繼承類也不需要重新實現被繼承類中的方法。但是如果被繼承類的方法中有abstract修飾的,繼承類則需要實現這個方法。

4、在物件比較中,物件一致和物件相等分別是指什麼?

物件一致指的是引用相同。物件相等指的是內容相等。

5、ref修飾引數和out修飾引數的區別

ref、out都可以從函式內部傳出值,區別是,ref修飾的引數必須先初始化、而out不用

6、C#中String和string有什麼區別?

string是C#中的類,String是Framework的類,
如果寫的是string,在編譯的時候編譯器會把他轉換為String。所以直接使用String會讓編譯器少做工作,可以提高一下效能。
在C#中建議使用string,比較符合規範 。
在C#中string是關鍵字,而String不是。
7、 const和readonly兩者區別?

const:

編譯時常量
本身就是靜態變數
只能定義基本型別,如int,string等等
在宣告的時候必須初始化,且不能修改
readonly:

執行時常量
不是靜態變數,如果需要需加上“static”關鍵字
可以定義一切型別
可以延遲到建構函式初始化
8、public static const int A = 1; 這段程式碼有錯誤嗎

錯誤:const 不能被修飾為 static
因為定義為常量(const)後就是靜態的(static)

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

會執行,在return前執行。

10、string str = null 與 string str = “” 的區別

string str = null 是不給他分配記憶體空間,而 string str = “” 給它分配長度為空字串的記憶體空間。
string str = null 沒有 string 物件,string str = “” 有一個字串物件。

11、什麼叫做泛型?

泛型就是引數化型別

泛型的作用是減少重複程式碼

12、什麼是反射?

動態獲取程式集資訊、物件資訊。

13、裝箱和拆箱

裝箱是將值型別轉化為引用型別的過程;

拆箱是將引用型別轉化為值型別的過程

14、2+5+”8” 得到的結果是什麼

從左向右運算,int + string 是 string,所以是 “78”

擴充套件:”8”+2+5 是”825”,而 “8”+(2+5)是 “87”

15、a=10,b=15,請在不使用第三方變數的情況下,把a、b的值互換


            int a = 10;
            int b = 15;
            a += b;
            b = a - b;
            a -= b;
            Console.WriteLine("a={0}\r\nb={1}", a, b);

16、現有 1~10 共十個自然數,已隨機python基礎教程
放入一個有 8 個元素的陣列 nums[8]


int[] numbers= { 3, 9, 8, 2, 4, 6, 10, 7 };

要求寫出一個儘量簡單的方案,找出c#教程沒有被放入陣列的那 2 個數,並列印這 2 個數。

  int[] numbers = { 3, 9, 5, 2, 1, 6, 10, 7 };
            for (int i = 1; i <= 10; i++)
            {
                //通過使用預設的相等比較器確定序列是否包含指定的元素。
                if (!numbers.Contains(i))
                {
                    Console.WriteLine(i);
                }
            }

17、請程式設計實現一個氣泡排序演算法?

 int[] array = { 1, 3, 5, 7, 13, 2, 4, 6, 8, 10 };
            for (int i = 0; i < array.Length; i++)
            {
                for (int j = 0; j < array.Length - 1 - i; j++)
                {
                    if (array[j] > array[j + 1])
                    {
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }
            Console.WriteLine("氣泡排序");
            foreach (var t in array)
            {
                Console.WriteLine($"{t}");
            }

18、產生一個int陣列,長度為100,並向其中隨機插入1-100,並且不能重複?

     var list = new List<int>();
            var random = new Random();
            while (true)
            {
                var temp2 = random.Next(1, 101);
                if (list.Count == 100)
                {
                    break;
                }
                if (!list.Contains(temp2))
                {
                    list.Add(temp2);
                }
            }
            foreach (var t in list)
            {
                Console.Write(t + ",");
            } 

作者:tenghao
出處:https://www.cnblogs.com/tenghao510/