.Net 面試題整理(一)

一、C# 的三大特性?算法

封裝、繼承、多態編程

二、簡述 private、 protected、 public、 internal 修飾符的訪問權限。數組

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

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

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

internal: 當前程序集內能夠訪問。spa

三、接口和類的區別code

接口:不能實例化,方法也沒有具體的實現,被繼承時,繼承類必須實現接口的全部方法。對象

類:能夠被實例化,被繼承時,繼承類也不須要從新實現被繼承類中的方法。可是若是被繼承類的方法中有abstract修飾的,繼承類則須要實現這個方法。blog

四、在對象比較中,對象一致和對象相等分別是指什麼?

對象一致指的是引用相同。對象相等指的是內容相等。

五、ref修飾參數和out修飾參數的區別

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

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

  • string是C#中的類,String是Framework的類,
  • 若是寫的是string,在編譯的時候編譯器會把他轉換爲String。因此直接使用String會讓編譯器少作工做,能夠提升一下性能。
  • 在C#中建議使用string,比較符合規範 。
  • 在C#中string是關鍵字,而String不是。

七、 const和readonly二者區別? 

const:

  • 編譯時常量
  • 自己就是靜態變量
  • 只能定義基本類型,如int,string等等
  • 在聲明的時候必須初始化,且不能修改

readonly:

  • 運行時常量
  • 不是靜態變量,若是須要需加上「static」關鍵字
  • 能夠定義一切類型
  • 能夠延遲到構造函數初始化

八、public static const int A = 1; 這段代碼有錯誤嗎

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

九、try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後?

會執行,在return前執行。

十、string str = null 與 string str = "" 的區別

string str = null 是不給他分配內存空間,而 string str = "" 給它分配長度爲空字符串的內存空間。
string str = null 沒有 string 對象,string str = "" 有一個字符串對象。

十一、什麼叫作泛型?

泛型就是參數化類型

泛型的做用是減小重複代碼

十二、什麼是反射?

動態獲取程序集信息、對象信息。

1三、裝箱和拆箱

裝箱是將值類型轉化爲引用類型的過程;

拆箱是將引用類型轉化爲值類型的過程

1四、2+5+」8」 獲得的結果是什麼

從左向右運算,int + string 是 string,因此是 「78」

擴展:」8」+2+5 是」825」,而 「8」+(2+5)是 「87」

1五、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);

1六、現有 1~10 共十個天然數,已隨機放入一個有 8 個元素的數組 nums[8]

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

要求寫出一個儘可能簡單的方案,找出沒有被放入數組的那 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);
                }
            }

1七、請編程實現一個冒泡排序算法?

            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}");
            }

1八、產生一個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 + ",");
            } 
相關文章
相關標籤/搜索