.NET 面試題(1)

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

private:私有成員,在類的內部才能訪問程序員

protected:保護成員,在該類內部和繼承本類的子類中能夠訪問web

public:公共成員,徹底公開,沒有訪問限制數據庫

internal:在當前程序集中能夠訪問編程

 

二、ADO.NET中的五個主要對象

Connection:連接對象             用於與特定的數據源創建連接c#

Command:命令對象             主要能夠用來對數據庫發出一些指令,例如能夠對數據庫下達查詢、新增、修改、刪除數據等指令跨域

DataReader:數據流對象         一個向前的只讀數據流數組

DataAdapter:適配器對象       主要是在數據源以及DataSet 之間執行數據傳輸的工做,它能夠透過Command 對象下達命令後,並將取得的數據放入DataSet 對象中。瀏覽器

DataSet:數據集對象                 這個對象能夠視爲一個暫存區(Cache),能夠把從數據庫中所查詢到的數據保留起來,放在內存中。至關於內存中的一張表或多張表緩存

 

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

1.使用QueryString, 如....?id=1; response. Redirect().... 服務器

2.Application 對象 服務器上
   存儲: Application["name"]="張三":
  獲取: string name=Application["name"].ToString();

3.Session 對象 服務器上
      存儲: Session["name"]="張三":
      獲取:string Session["name"].ToString();

4.Cookie:是個字符串 存在在客戶端上
          存值:
                      HttpCookie cookie=new HttpCookie(string name,string value)
                          cookie.Expires.AddDay(7); //Expires 過時時間
                         Response.Cookies.Add(cookie);
          獲取:
      HttpCookie cookie=Request.Cookies[string name];
        string s=cookie.Value;
    或
        string s=Request.Cookies[string name].value;

5.Server.Tranfer    //地址欄上不會顯示target.aspx,而response. Redirect() 會在地址欄上顯示target.aspx
      Server.Transfer( "target.aspx?param1=1111&param2=2222 ") 
      接收頁面:   string   str   =   Request[ "param1 "] 

 

四、new有幾種用法

1, 運算符 用於建立對象和調用構造函數。

    Class cl=new Class();

    int i=new int();
      i=0;

2,修飾符 能夠顯式隱藏從基類繼承的成員。

     ●若要隱藏繼承的成員,請使用相同名稱在派生類中聲明該成員,並用 new 修飾符修飾它。    

    ●要想訪問被隱藏的基類的成員變量、屬性或方法,辦法就是將子類造型爲父類,而後經過基類訪問被隱藏的成員變量、屬性或方法。

3,約束   約束指定泛型類聲明中的 任何類型參數 都必須有公共的無參數構造函數。 

       Class ItemFactory<T> where T:new()   

       ItemFactory<Student>   Student中必需要無參數構造函數

 

五、sealed修飾的類有什麼特色

  sealed 修飾符用於防止從所修飾的類派生出其它類。(不能繼承)      若是一個密封類被指定爲其餘類的基類,則會發生編譯時錯誤。

 

六、請編程遍歷頁面上全部TextBox控件並給它賦值爲string.Empty? 

  

    // 1,若是沒指定是那裏面的Controls ,須要遍歷兩邊
  foreach(Control item in Controls)
    {
        foreach(Control con in item.Controls)
         {
            TextBox tb=con as TextBox;//把con做爲TextBox控件
             if(tb!=null)
                tb.Text=String.Empty;
        }
    }

   

    //2,指定是Form裏面的Controls 一遍便可
    foreach(Control item in this.Form.Controls)
     {
        TextBox tb=item as TextBox;//把con做爲TextBox控件
             if(tb!=null)
                tb.Text=String.Empty;
         }

 

七、.net中,配件的意思是? 

    程序集(Assembly)。(中間語言,源數據,資源,裝配清單)

 

8、裝箱和拆箱

   .net包含一個特殊的Object類,能夠接受任意的數據類型的值

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

  拆箱:從引用類型轉換到值類型。         

     object obj = null;//引用類型

            obj = 1;//裝箱,boxing。把值類型包裝爲引用類型。

            int i1 = (int)obj;//拆箱。unboxing

 

9如何理解三層架構

   1.用戶界面表示層(UI);2.業務邏輯層(BLL);3.數據訪問層(DAL);  目的即爲了「高內聚,低耦合」的思想。


1,表現層(UI):調用業務邏輯層(BLL)裏面的方法來呈現數據給用戶看                   實質:具體解決作什麼的問題

2,業務邏輯層(BLL) :主要針對具體的問題的操做                                            實質:負責處理U層的問題

3,數據訪問層(DAL) :對數據的操做具體爲BLL層提供服務                                 實質:就是對數據庫的類容的增,刪,改,查 封裝的SQLHelper類

4,實體層(Model) :原始數據                                                                     實質:完成數據庫與實體類對應的功能,一個類是一張表,一個屬性是一個字段

 

三層結構是N層結構的一種,通常來講,層次之間是向下依賴的,下層代碼未肯定其接口(契約)前上層代碼是沒法開發的,下層代碼接口(契約)的變化將使上層的代碼一塊兒變化。

優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。

缺點: 增長成本。

 

10. 能用foreach遍歷訪問的對象的要求

 須要實現IEnumerable接口或聲明GetEnumerator方法的類型

 

11. GC是什麼? 爲何要有GC?  

GC是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。

GC只能處理託管內存資源的釋放,對於非託管資源則不能使用GC進行回收,必須由程序員手工回收,一個例子就是FileStream或者SqlConnection須要程序員調用Dispose進行資源的回收。

要請求垃圾收集,能夠調用下面的方法:GC.Collection()通常不須要手動調用GC.Collection()。

12. 介紹幾個開源的項目

 

13. 說出五個集合類

任何集合類都實現了IEnumerable接口,因此任何集合類對象都有一個GetEnumerator()方法,該方法能夠返回一個實現了 IEnumerator接口的對象,這個返回的IEnumerator對象既不是集合類對象,也不是集合的元素類對象,它是一個獨立的類對象。經過這個對象,能夠遍歷訪問集合類對象中的每個元素對象
咱們常常用的foreach便是一種語法糖,實際上仍是調用Enumerator裏面的Current和MoveNext實現的遍歷功能。

List<T>  泛型類  

Stack<T>  堆棧         後進先出的訪問各個元素

Dictionary<TKey, TValue>   字典類,   key是區分大小寫;value用於存儲對應於key的值

HashSet<T>      此集合類中不能有重複的子元素

SortedList<TKey, TValue>    排序列表,   key是排好序的數組。

 

14. 什麼是code-Behind技術。

   將ASP.NET程序須要呈現的一個網頁分爲*.aspx和*.cs這兩個文件,即代碼分離技術,實現了HTML代碼和服務器邏輯代碼的分離,這樣更方便於代碼編寫、整理及調試。

 

15. using關鍵字有什麼用?什麼是IDisposable?

 1,引用命名空間   using System.Text;

 2,爲命名空間或類型建立別名    爲了不出現名稱衝突,能夠經過設定別名來解決.

 3,using 語句 

   using語句容許程序員指定使用資源的對象應當什麼時候釋放資源.using語句中使用的對象必須實現IDisposable接口.此接口提供了Dispose方法,該方法將釋放此對象的資源

  a,  using語句只能用於實現了IDisposable接口的類型,

  b,using語句適用於清理單個非託管資源的狀況,而多個非託管對象的清理最好以try-finaly來實現

 在程序編譯階段,編譯器會自動將using語句生成try-finally語句,並在finally塊中調用對象的Dispose方法,來清理資源.因此,using語句等效於try-finally語句

IDisposable接口定義一種釋放分配的非託管資源的方法,GC只對託管對象釋放內存,而對非託管對象資源不能操做。

 

16、不是說字符串是不可變的嗎?string s="abc";s="123"不就是變了嗎?

String類型數據每次從新賦值都是開闢一個新的內存空間新的數據放在裏面,變量的引用從新指向新空間中的的地址,原來的數值還在內存中並無變化經過CG回收。

s不指向原來那個對象了,而指向了另外一個 String對象,內容爲"123",原來那個對象還存在於內存之中,只是s這個引用變量再也不指向它了。

 

17、是否能夠從一個static方法內部發出對非static方法的調用? 

不能夠。由於非static方法是要與對象關聯在一塊兒的,必須建立一個對象後,才能夠在該對象上進行方法調用,而static方法調用時不須要建立對象,能夠直接調用。也就是說,當一個static方法被調用時,可能尚未建立任何實例對象,若是從一個static方法中發出對非static方法的調用,那個非static方法是關聯到哪一個對象上的呢?這個邏輯沒法成立,因此,一個static方法內部發出對非static方法的調用

 

18、說出一些經常使用的類、接口,請各舉5個 

經常使用的類:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T>

經常使用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、 IList、IDictionary

 

19、傳入某個屬性的set方法的隱含參數的名稱是什麼?

  value,它的類型和屬性所聲名的類型相同。 

 

20C#支持多重繼承麼?

  不支持。能夠用接口來實現。

 

21C#中全部對象共同的基類是什麼?

   System.Object

 

2二、經過超連接怎樣傳遞中文參數?

用URL編碼,經過QueryString傳遞,用urlencode編碼 用urldecode解碼。
aspx傳aspx

//請求URL中對中文編碼
string Name = "中文參數";
Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name)) ;

//接收端進行解碼
string Name = Request.QueryString["Name"];
Response.Write(Server.UrlDecode(Name)) ;

 

2三、AJAX解決什麼問題?如何使用AJAXAJAX有什麼問題須要注意?項目中哪裏用到了AJAX

 

AJAX解決的問題就是「無刷新更新頁面」
1,建立異步對象
var xmlHttp=new XMLHttpRequest();
或 var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
2,加載要獲取的服務器頁面
xmlHttp.open(Method,URL)
3,判斷異步調用的狀態onreadystatechange事件中判斷xmlHttp.readyState和xmlHttp.Status

4,發送異步請求
xmlHttp.send();

AJAX最重要的問題是沒法跨域請求(www.rupeng.com →so.rupeng.com),也就是沒法在頁面中向和當前域名不一樣的頁面發送請求,可使用在當前頁面所在的域的服務端作代理頁面的方式解決。

 

2四、開放式問題:你常常訪問的技術類的網站是什麼?

博客園和CSDN

 

2五、你對.netGC的理解 

GC是.Net的垃圾收集器,能夠進行內存資源的回收,程序員無需關心資源的回收,當一個對象沒有任何引用的時候就能夠被回收了。一個對象能夠被回收並不意味着必定會被當即回收,GC會選擇時機進行回收。能夠調用GC.Collect()讓GC當即回收。GC不能回收非託管資源,對於非託管資源通常都實現了IDisposable接口,而後使用using關鍵字進行資源的回收。

 

2六、請你簡單的說明數據庫創建索引的優缺點


使用索引能夠加快數據的查詢速度,不過因爲數據插入過程當中會建索引,因此會下降數據的插入、更新速度,索引還會佔磁盤空間。

 

2七、Session有什麼重大BUG,微軟提出了什麼方法加以解決?(常考)

是iis中因爲有進程回收機制,系統繁忙的話Session會丟失,能夠用Sate server或SQL Server數據庫的方式存儲Session不過這種方式比較慢,並且沒法捕獲Session的END事件。

 

2八、說說在軟件設計中你遇到的以空間換時間的例子?

Cache、索引、簡繁轉換用Dictionary。談Cache(緩存)、索引這些例子。用額外的磁盤、內存空間的消耗來提升執行速度

 

2九、asp.net中的錯誤機制。(常考)

.NET提供了四種錯誤處理機制,它們有必定的優先級順序:
Page_Error事件 > ErrorPage屬性 > Application_Error事件 > <customErrors>配置項

要讓ErrorPage屬性可以發揮做用,<customErrors>配置項中的mode屬性必須設爲"On"。

Application_Error事件在 Global.asax中

 

30、有一個10個數的數組,計算其中不重複數字的個數。{3,5,9,8,10,5,3,7,6,4}

HashSet<T> 做爲一種存放內存的數據,沒法向裏面添加劇復的值

 

  int x = 0;
            int[] list = { 3, 5, 9, 8, 10, 5, 3 };
            HashSet<int> set = new HashSet<int>();
            for (int i = 0; i < list.Length; i++)
            {
                set.Add(list[i]);
            }
          
            foreach (int item in set)
            {
                x++;
            }
            Console.WriteLine(x);
            Console.ReadLine();

 

 

 

3一、下面是一個由*號組成的4行倒三角形圖案。要求:1、輸入倒三角形的行數,行數的取值3-21之間,對於非法的行數,要求拋出提示「非法行數!」;二、在屏幕上打印這個指定了行數的倒三角形。

*******

*****

***

*

 

 aa:
            Console.Clear();
            Console.WriteLine("請輸入倒三角形的行數:   行數的取值在3-21之間");
           int i=int.Parse(Console.ReadLine());
           if (i<3||i>21)
           {
               Console.WriteLine(" 非法行數 !!");
               Console.ReadLine();
               goto aa;
           }
           int x = i;
            for ( ; i >0; i--)
            {
                for (int j = 0; j < x-i; j++)
                {
                    Console.Write(" ");  
                }
                for (int k =2*i-1; k >0; k--)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
            Console.WriteLine();

 

3二、下面的程序執行結果是什麼?

class Person

    {        public int Age { get; set; }   

    } 

            int i1 = 20;

            int i2 = i1;

            i1++;

            Console.WriteLine(i2);  //值類型

           Person p1 = new Person();

            p1.Age = 20;

            Person p2 = p1;

            p1.Age++;

            Console.WriteLine(p2.Age);  //引用類型    引用的是地址    p2和p指向的是同一個地址

 20 、21   

 

3三、下面程序的執行結果是什麼?

public struct Point

    {

        public int x;

        public int y;

        public Point(int x, int y)

        {

            this.x = x;

            this.y = y;

        }

    }

            Point p1 = new Point(100, 100);

            Point p2 = p1;

            p1.x = 200;

            Console.WriteLine("{0},{1}", p1.x, p2.x);   //struct 是值類型    copy的值

200,100

 

3四、不用JQuery等框架實現AJAX無刷新登陸。(常考)

1,建立異步對象
var xmlHttp=new XMLHttpRequest();
或 var xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
2,加載要獲取的服務器頁面
xmlHttp.open(Method,URL)
3,判斷異步調用的狀態
3,判斷異步調用的狀態onreadystatechange事件中判斷xmlHttp.readyState和xmlHttp.Status
4,發送異步請求
xmlHttp.send();

 

3五、Http狀態碼各是什麼意思。

 

成功2×× 成功處理了請求的狀態碼。
200 成功
重定向3×× 每次請求中使用重定向不要超過 5 次。

 

客戶端錯誤4×× 表示請求可能出錯,妨礙了服務器的處理。
404 找不到請求的網頁。服務器上不存在的網頁常常會返回此代碼

 

服務器錯誤5×× 表示服務器在處理請求時發生內部錯誤。這些錯誤多是服務器自己的錯誤,而不是請求出錯。
500 服務器遇到錯誤,沒法完成請求

 

3六、try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的代碼會不會被執行,何時被執行 

int Get(){     int i=1;

try{         retun i;    }
finlly{    i++;     }
}
結果爲1 而不是2
在執行return語句時,已經把返回的結果準備好了,(這個值改不了)
這時轉到finally語句去執行,再返回結果

總結:

try{}中的return執行後在沒有返回數據時先去執行finally{}中的代碼,而後再返回。因此說finally{}在return中間執行。

 

3七、一個數組:1,1,2,3,5,8,13,21...+m,求第30位數是多少?用遞歸實現;(常考!!!,提示:搜索斐波那契數列)


斐波那契數列百度百科
斐波那契數列指的是這樣一個數列:0、一、一、二、三、五、八、1三、2一、……
在數學上,斐波納契數列以以下被以遞歸的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)

  static void Main(string[] args)
        {
         //會一直調本身,一直調到i爲1
            Console.WriteLine(Foo(30));
            Console.ReadLine();
        }
        public static int Foo(int i)
        {
            if (i <= 0)
                return 0;
            else if (i > 0 && i <= 2)
                return 1;
            else
                return Foo(i - 1) + Foo(i - 2);
        }

 

3八、 產生一個int數組,長度爲100,並向其中隨機插入1-100,而且不能重複。(要求使用兩種方法)

 

1,
List<int> myList = new List<int>(); Random ran = new Random(); while (myList.Count<100) { int num = ran.Next(1, 101); if (!myList.Contains(num)) { myList.Add(num); } } foreach (int item in myList) { Console.WriteLine(item); } Console.WriteLine(myList.Count); Console.ReadLine();

 

 2,
HashSet<int> myList = new HashSet<int>(); Random ran = new Random(); while (myList.Count<100) { int num = ran.Next(1, 101); myList.Add(num); } foreach (int item in myList) { Console.WriteLine(item); } Console.WriteLine(myList.Count); Console.ReadLine();

 

3九、 冒泡排序數組(背也要背下來,50%必考!)

 

 int[] myList = new int[] { 5, 9, 1, 10, 7, 6, 4, 3, 8, 2, 7 };
            for (int i = 0; i < myList.Length-1; i++)
            {
                for (int j = 0; j < myList.Length-1; j++)
                {
                    if (myList[j]>myList[j+1])
                    {
                        int temp = myList[j]; //中間變量用來作交換
                        myList[j] = myList[j + 1];
                        myList[j + 1] = temp;
                    }
                }
            }
            foreach (int item in myList)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();

 

 40、C#中的委託是什麼?事件是否是一種委託?事件和委託的關係。

委託能夠理解爲指向一個函數的指針。

委託和事件沒有可比性,由於委託是類型事件是對象,下面說的是委託的對象(用委託方式實現的事件)和(標準的event方式實現)事件的區別。事件的內部是用委託實現的。由於對於事件來說,外部只能「註冊本身+=、註銷本身-=」,外界不能夠註銷其餘的註冊者,外界不能夠主動觸發事件,所以若是用Delegate就無法進行上面的控制,所以誕生了事件這種語法。事件是用來閹割委託實例的,類比用一個自定義類閹割List。事件只能add、remove本身,不能賦值。事件只能+=、-=,不能= 。加分的補充回答:事件內部就是一個private的委託和add、remove兩個方法。

 

4一、override與重載(overload)的區別

重載是方法的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要。重載(overload)是面向過程的概念。Override 是進行基類中函數的重寫。Override是面向
對象的概念

 

4二、屬性和public字段的區別是什麼?

 

公共字段只是類用public修飾符所公開的簡單公共變量,而屬性則是對字段的封裝。

屬性能夠對設值、取值的過程進行非法值控制,好比年齡禁止設值負數,而字段則不能進行這樣的設置。

 

4三、CTSCLSCLR分別做何解釋(重要)把英文全稱背過來。

CTS:Common Type System 通用系統類型。Int3二、Int16→int、String→string、Boolean→bool

CLS:Common Language Specification 通用語言規範。不一樣語言語法的不一樣。

CLR:Common Language Runtime 公共語言運行時,就是.Net提供的那些 類。

 

4四、C#.Net的關係 

.net是一個運行平臺,C#只是用於編寫運行在該平臺上的一種語言
.net是框架,C#是語言

 

4五、dotnet中類(class)與結構(struct)的異同? 

Class能夠被實例化,屬於引用類型,是分配在內存的堆上的。類是引用傳遞的。 

Struct屬於值類型,是分配在內存的棧上的。結構體是複製傳遞的。Int3二、Boolean等都屬於結構體。

 

4六、堆和棧的區別?

棧是編譯期間就分配好的內存空間,所以你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數等都在棧內存中。

堆是程序運行期間動態分配的內存空間,你能夠根據程序的運行狀況肯定要分配的堆內存的大小。

 

4七、值類型和引用類型的區別?

1.將一個值類型變量賦給另外一個值類型變量時,將複製包含的值。引用類型變量的賦值只複製對對象的引用,而不復制對象自己。

2.值類型不可能派生出新的類型:全部的值類型均隱式派生自 System.ValueType。但與引用類型相同的是,結構也能夠實現接口。

3.值類型不可能包含 null 值:然而,可空類型功能容許將 null 賦給值類型。

4.每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值

 

4八、C#中的接口和類有什麼異同。 

不一樣點: 

不能直接實例化接口。 

接口不包含方法的實現。 

接口能夠多繼承,類只能單繼承。 

類定義可在不一樣的源文件之間進行拆分。用partial 修飾

 

相同點: 

接口、類和結構均可以從多個接口繼承。 

接口相似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的全部成員。 

接口和類均可以包含事件、索引器、方法和屬性。

 

4九、abstract classinterface有什麼區別 

同點: 

都不能被直接實例化,均可以經過繼承實現其抽象方法。

 

不一樣點: 

接口支持多繼承;抽象類不能實現多繼承。 

接口只能定義行爲;抽象類既能夠定義行爲,還可能提供實現。 

接口能夠用於支持回調(CallBack);抽象類不能實現回調,由於繼承不支持。 

接口只包含方法(Method)、屬性(Property)、索引器(Index)、事件(Event)的簽名,但不能定義字段和包含實現的方法;抽象類能夠定義字段、屬性、包含有實現的方法。 

接口能夠做用於值類型(Struct)和引用類型(Class);抽象類只能做用於引用類型。例如,Struct就能夠繼承接口,而不能繼承類。 

 

50、XML HTML 的主要區別 

1. XML是區分大小寫字母的,HTML不區分。 

2. 在HTML中,若是上下文清楚地顯示出段落或者列表鍵在何處結尾,那麼你能夠省略</p>或者</li>之類的結束 標記。在XML中,絕對不能省略掉結束標記。 

HTML:<img src="1.jpg"><br><br> 

XML:<img src="1.jpg"></img><br/><br/> 

3. 在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個 / 字符做爲結尾。這樣分析器就知道不用 查找結束標記了。 

4. 在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。 

5. 在HTML中,能夠擁有不帶值的屬性名。在XML中,全部的屬性都必須帶有相應的值。 


XML是用來存儲和傳輸數據的 

HTML是用來顯示數據的

 

5一、string str = null string str =」」說明其中的區別 

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

 

5二、StringBuilder String 的區別? 

String 在進行運算時(如賦值、拼接等)會產生一個新的實例,而 StringBuilder 則不會。因此在大量字符串拼接或頻繁對某一字符串進行操做時最好使用 StringBuilder,不要使用 String 

若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類. 

String類是一種傳統的修改字符串的方式,由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象
而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。

 

5三、請敘述屬性與索引器的區別。 (重要)

屬性                                               索引器

經過名稱標識。                                經過簽名標識。

經過簡單名稱或成員訪問來訪問。         經過元素訪問來訪問。

能夠爲靜態成員或實例成員。              必須爲實例成員。

屬性的 get 訪問器沒有參數。             索引器的 get 訪問器具備與索引器相同的形參表。

屬性的 set 訪問器包含隱式 value 參數。 除了 value 參數外,索引器的 set 訪問器還具備與索引器相同的形參表。

 

5四、請解釋ASPNET中的web頁面與其隱藏類之間的關係? 

個ASP.NET頁面通常都對應一個隱藏類,通常都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx的頁面聲明以下 

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %> 

Codebehind="Tst1.aspx.cs" 代表經編譯此頁面時使用哪個代碼文件,Inherits="T1.Tst1" 表用運行時使用哪個隱藏類

 

5五、DataReaderDataSet的異同?  

DataReader使用時始終佔用SqlConnection,在線操做數據庫每次只在內存中加載一條數據,因此佔用的內存是很小的是隻進的、 只讀的 

DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接(非鏈接模式) 

DataSet將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.
對數據庫進行 回傳更新操做(動態操做讀入到內存的數據)

 

5六、stringStringintInt32Booleanbool的區別

1. bool是基本值類型,Boolean 是對象.
2. bool是Boolean的別名.bool是C#中的,Boolean是.net Framework中的。

最後總結:bool就像你的乳名,你爹媽以及大家內部所屬成員都認識,Boolean就像你的學名。你們都認識。
不過無論按照學名仍是乳名稱呼你,最終的目的是同樣的,仍是你這我的。對於String和string的關係也是如此。

 

5七、Server.Transfer和Response.Redirect的區別是什麼?(常考)

server.Transfer 僅是服務器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向 後的地址;
Response.Redirect 則是徹底的跳轉,瀏覽器將會獲得跳轉的地址,並從新發送請 求連接。這樣,從瀏覽器的地址欄中能夠看到跳轉後的連接地址。


Server.Transfer 是服務器請求資源,服務器直接訪問目標地址的 URL,把那個 URL 的響應 內容讀取過來, 而後把這些內容再發給瀏覽器, 瀏覽器根本不知道服務器發送的內容是從哪 兒來的,因此它的地址欄中仍是原來的地址。 這個過程當中瀏覽器和 Web 服務器之間通過了 一次交互。


Response.Redirect 就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地 址,通常來講瀏覽器會用剛纔請求的全部參數從新請求。這個過程當中瀏覽器和 Web 服務器 之間通過了兩次交互

 

5八、您在什麼狀況下會用到虛方法?它與接口有什麼不一樣?

子類從新定義父類的某一個方法時,必須把父類的方法定義爲virtual,接口中的方法都是沒有實現功能的方法體的。實現時,子類能夠不從新定義虛方法,但若是一個類繼承接口,那必須實現這個接口。

 

5九、postget的區別?

數據:
get請求參數是放在請求頭中的,長度有限制,根據瀏覽器設置決定,超過不會發送,直接丟掉;
post請求參數是專門放在數據區,沒有長度限制;

請求次數:
------->根據瀏覽器不一樣決定
get請求一次,直接將數據傳遞過去;
post:有可能直接是一次將數據傳遞過去;還有一種可能就是2次,第一次過去告訴服務器我將要帶多大數據過來,第二次直接將數據傳遞過去;

顯示與不顯示
get請求參數會顯示在你的瀏覽器的地址欄;
post請求參數不會顯示在你的地址欄中;

 

60、.NetASP.NetC#VisualStudio之間的關係是什麼?

asp.net是一種技術,要實現這種技術,

就得有底層的實現技術編程語言,這個語言就是C#,(只是絕大多數首選C#),要想用C#實現asp.net技術,就得有編程的工具軟件,這個軟件我一直用visual studio,visual studio支持許多種語言,是個很強大的軟件,!VisualStudio是微軟提供的用來進行.Net開發的集成開發環境

相關文章
相關標籤/搜索