常規技術面試題(.NET)31-40

31. 請列出C#中幾種循環的方法,並指出他們的不同

for:一般用於循環次數已知的循環

while: 一般用於循環次數未知的循環,工作原理:先判斷後執行

do…while:一般用於循環次數未知的循環,工作原理:先執行一次後判斷

foreach:當一個序列實現IEnumerable接口或者GetEnumerator()方法時,可以用該循環方法,一般用於遍歷集合或數組,更加安全。

32. 用C#實現以下功能:產生一個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;
        }
    }
}

34. 簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。

WebService特點:

平臺獨立性(Platform-independent)、跨語言(只要能支持XML的語言都可以)以及穿透企業防火牆;Webservice是基於http的是無狀態的;但是它的缺點也很明顯,就是需要部署一臺Web Server;而且速度比較慢;

.Net Remoting的特點是:用戶既可以使用TCP信道進行二進制流方式通信,也可以使用HTTP信道進行SOAP格式的通信,效率相對WebService要高不少;Remoting可以用於有狀態的情況;但是它的缺點也很明顯,.Net Remoting只能應用於MS的.Net Framework之下。

使用場合:

如果互動雙方都是支持.NET技術的環境,並且在操作系統上能提供一致的驗證機制,而且很重視溝通雙方作業的效率,就是.NET Remoting上場的時機。

相反的,如果溝通雙方是異質環境,又或溝通的模式就是無狀態的情況,持續進行的互動作業前後是沒有關聯的,Web Service就是理想選擇了。

35. 根據線程安全的相關知識,分析以下代碼,當調用test方法時i〉10時是否會引起死鎖?並簡要說明理由。

public void test(int i)
{
   lock(this)
 {
   if (i〉10)
   {
     i--;
     test(i);
   }
 }
}

不會發生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死鎖。但如果把int換做一個object,那麼死鎖會發生)

36. 根據委託(delegate)的知識,請完成以下用戶控件中代碼片段的填寫:

namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(object sender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//請在以下補齊代碼用來調用OnDBOperate委託簽名的OnNew事件。
}
}
}
}

  if(   OnNew   !=   null   ){
  			OnNew( );
		}

37. NET Remoting 的工作原理是什麼?

在Remoting中是通過通道(channel)來實現兩個應用程序域之間對象的通信。首先,客戶端通過Remoting,訪問通道以獲得服務端對象,再通過代理解析爲客戶端對象。這就提供一種可能性,即以服務的方式來發布服務器對象。遠程對象代碼可以運行在服務器上(如服務器激活的對象和客戶端激活的對象),然後客戶端再通過Remoting連接服務器,獲得該服務對象並通過序列化在客戶端運行。

38. 在.NET中,配件的意思是?

配件就是Assembly(程序集),程序集由程序集清單,類型元數據,MSIL代碼和資源組成。

39. .NET中讀寫文件需要用到那些方法?他們的作用?

1)File類:

使用場合:當讀寫文件大小不大,同時可以一次性進行讀寫操作的時候使用

使用方式:不同的方式可以讀寫文件類型不一樣。

ReadAllBytes() WriteAllByte():可以讀寫任意類型的文件

ReadAllLines() ReadAllText():只能讀寫文本類型文件

2)FileStream類:

使用場合:當讀寫大文件的時候使用,它可以自定義讀寫的數組大小

使用方式:一個流對象只能做一個事情:如果需要讀和寫那麼就需要創建兩個流

讀取:將數據讀取到數組

寫入:將數組的數據再寫入到文件

3)StreamReader/StreamWrite類:

使用場合:只能對文本文件進行讀寫操作

使用方式:它可以按行、按字符以及按塊進行讀取和寫入

40. 在C#中有一個double型的變量,比如10321.5和122235401.21644,作爲貨幣的值如何按各個不同國家的習慣來輸出。比如美國用$10,321.50和$122,235,401.22而在英國則爲£10 321.50和£122 235 401.22

System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");爲英 國 貨幣類型decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,"My amount = {0:c}",y);

41. 在C#中using和new這兩個關鍵字有什麼意義,請寫出你所知道的意義?

using 關鍵字有兩個主要用途:

1)作爲指令,用於爲命名空間創建別名或導入其他命名空間中定義的類型。

2)作爲語句,用於定義一個範圍,在此範圍的末尾將釋放對象。

在 C# 中,new 關鍵字可用作運算符、修飾符或約束。

1)new 運算符:用於創建對象和調用構造函數。這種大家都比較熟悉,沒什麼好說的了。

2)new 修飾符:在用作修飾符時,new 關鍵字可以顯式隱藏從基類繼承的成員。

3)new 約束:用於在泛型聲明中約束可能用作類型參數的參數的類型。

小劇場:縱有疾風來,人生不言敗。If there is a strong wind, life will not be defeated.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章