2015-01-16 .Net 中級軟件工程師 筆試題


一 C#方面

1.請簡述多線程需要考慮的主要因素

  答:1.線程管理

      同一核上的兩個線程不會以兩倍的時長完成,可能需要用兩倍再加10 %左右的時間來完成。與一個線程相比較的話,三個線程在同一核上想占用100 %的CPU使用率可能會需要3.25——3.5倍的時長來完成。所以,要怎樣分配正在運行的線程數量呢?有一個辦法是在線程之間建立一個共享的旗語對象。在線程開始運行前,它會嘗試調用旗語的WaitOne模式,並在完成后釋放旗語。對CPU的核數量設置旗語限制,(使用EnvironmentProcessorCount功能限定);這將防止您的系統在同一時間運行的線程數多於核數量。與此同時,從線程池中拉出線程將確保您不會在同一時間創建過多線程。如果一次創建線程過多,即使他們並沒運行,那也是浪費系統資源。

 

    2.數據完整性

      要擔心的問題是競爭條件和死鎖。多個線程試圖在同一時間更新相同的對象就會造成競爭條件,這將招致麻煩。在.NET架構中,最簡單也最常見的解決競爭條件的方法是使用“臨界區”。

      死鎖的話,對編寫的代碼加以認真檢查

2.抽象類和接口的區別

  答:聲明方法的存在而不去實現他的類就叫做抽象類,用於創建一下體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract類的實例,然而可以創建一個變量,類型是抽象類,並讓它指向具體子類的實例。不能有抽象構造函數,和抽象靜態方法。abstract子類為它們父類所有的抽象方法提供實現,否則它們也是抽象類。接口是抽象類的變體,在接口中,所有的方法都是抽象的。多繼承性可通過這樣的接口獲得。接口沒有程序體,只可以定義static final成員變量。接口的實現於子類相似,除了該實現類不能從接口定義中繼承行為。

3.為什么不提倡Cath()?必須要用的時候如何使用為好?

  答:只捕捉特定環境,特定條件下的異常,並進行處理。不能捕捉所有異常,因為有些異常是我們所無法預料到的,比如,內存溢出或其他錯誤,這種情況下,不應該讓系統以一種未知狀態繼續運行。不要使用try...catch進行流程處理。如果可能的話,盡量要把循環寫在try...catch內部,而不要把try...catch放到循環內部。

如果是try...catch中套着try...catch,異常處理機制是從內部的try...catch...往外部拋的,最先是在內部進行捕獲、處理。

 

4.說明string str=null與string str=""在內存分配上的去吧

  答:string str=null不分配內存,string str=""分配字符串為空的內存

5.類(class)與結構(struct)的異同·

  答:類是引用類型,可以繼承類、接口和被繼承,有默認的構造函數,有析構函數,可以使用abstract和sealed,有protected修飾符,必須使用new初始化。

  結構是值類型,只能繼承接口,不能被繼承,沒有默認的構造函數,可以創建,沒有析構函數,不可以用abstract和sealed,沒有protected修飾符,可以不用new初始化。

6.簡述對emoting和webservice兩項技術的理解以及實際中的應用

  答:WS主要是可利用HTTP,穿透防火牆。而Remoting可以利用TCP/IP,二進制傳送提高效率。

 

7.簡述private,protected,public,internal修飾符的訪問權限

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

8.C#中的委托是什么?事件是不是一種委托?

答:委托可以把一個方法作為參數代入另一個方法。

委托可以理解為指向一個函數的指針。

事件是一種特殊的委托

9.override與重載的區別

答:覆寫(Override)的兩個函數的函數特征相同
重載(Overload)的兩個函數的函數名雖然相同,但函數特征不同。

10.用.net的b/s結構的系統,您是用幾層開發,每一層之間的關系以及為什么要這樣分層?

答:從下至上分別為:數據訪問層、業務邏輯層(又或成為領域層)、表示層 
數據訪問層:有時候也稱為是持久層,其功能主要是負責數據庫的訪問 
業務邏輯層:是整個系統的核心,它與這個系統的業務(領域)有關 
表示層:是系統的UI部分,負責使用者與整個系統的交互。  
優點:  分工明確,條理清晰,易於調試,而且具有可擴展性。 
缺點:  增加成本。 

分層式結構究竟其優勢何在? 
1、開發人員可以只關注整個結構中的其中某一層; 
2、可以很容易的用新的實現來替換原有層次的實現; 
3、可以降低層與層之間的依賴; 
4、有利於標准化; 
5、利於各層邏輯的復用。 

11..net中讀寫數據庫需要用到的那些類?它們的作用?

答:DataSet數據存儲器。

DataCommand執行語句命令。

DataAdapter數據的集合,用語填充。

12.簡單用代碼舉例說明什么叫多態。

Class Person{
    
  Public void Eat()
   {
         Console.WriteLine("Person Eat Foot");
   }        
}

Class Teacher
{
  Public void Eat(
  {
        Console.WriteLine("Teacher Eat Mantou");
  }
}

Public Class Test{
    Public static void Main(string args[]){
Person a=new Teacher():
a.eat();
   
}

}
        

 

13.簡單用代碼舉例說明什么叫繼承。

Class Person{
    
 Public string Name;
 Public int      Age;
 
 Public Person(string Name,int Age)
 {
     this.Name=Name;
     this.Age=Age;
     Console.WriteLine(Name);
     Console.WriteLine(Age);

 }    
}

Class Teacher:Person
{
  private int _id;
  Public Teacher(string Name,int Age,int _id)
        :base(Name,Age)
  {
       this._id=_id;
       Console.WriteLine(_id):
  }
}

Public Class Test{
    Public static void Main(string args[]){
        Teacher Tom=new Teacher("Tom",22,01)
   
}

}

  

 

 

 

二 SQLSERVER方面

1.內容重復性高的字段上建立索引,查詢效率會下降還是提高?為什么?

答:下降,索引就是為了從大量數據中提取需要的少量數據,推斷到極端條件下,假設字段值都是一樣的,索引是沒有意義的

2.自定義函數和存儲過程的區別是什么,什么情況下只能用自定義函數,什么情況下只能用存儲過程?

答:自定義函數:1. 可以返回表變量2. 限制頗多,包括不能使用output參數;不能用臨時表;函數內部的操作不能影響到外部環境;不能通過select返回結果集;不能update,delete,數據庫表;3. 必須return 一個標量值或表變量,自定義函數一般用在復用度高,功能簡單單一,爭對性強的地方。

存儲過程:1. 不能返回表變量2. 限制少,可以執行對數據庫表的操作,可以返回數據集3. 可以return一個標量值,也可以省略return,存儲過程一般用在實現復雜的功能,數據操縱方面。

3.簡述分區表

答:將大表的數據分成稱為分區的許多小的子集。分區表在邏輯上是一個表,而物理上是多個表

4.分別說明什么應用環境下如何使用游標,事務,鎖,索引,以及聚簇索引和非聚簇索引的區別

答: 

 

5.舉例說明左連接和內連接的區別

答:區別在於左連接比內連接多出左表不符合條件的數據

 

6.比較說明數據庫設計的第一范式,第二范式,第三范式的優缺點

答:

  • 第一范式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解; 通俗的理解是字段還可以再分嗎?如過不能,則是符合1NF的設計。
  • 第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性; 簡單的解釋,比如你和一個女生約會建立一張表,不用每條約會記錄都記錄她的身高、體重,將身高體重單獨的存在一張表中供查詢即可。
  • 第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來

 

7.寫出一條sql語句:取出A表中的第x到第xx記錄(sqlserver以自動增長的id作為主鍵,注意,id可能為不連續的)

 

三 WEB方面

1.簡述HttpModule和HttpHandler?

 

2.請描述一下ASP.NET頁面生命周期?

 

 

3.簡述列舉你知道的Web優化措施?

4.簡述Http請求的過程(從用戶在瀏覽器輸入網址到看到最終頁面所經歷的的過程,描述中必須包含IIS及ASP.NET引擎部分)

5.Javascipt中拼接大量字符串,考慮一個高效的辦法

6.AJAX問題

1)為什么使用如下三種方式創建對象?並簡述對XMLHttpRequest的理解

var Ajax=function(){
return Try.these{
    funtion(){return  new XMLHttpRequest()};
    funtion(){return  new ActiveObject('Msxml2.XMLHTTP')};
    funtion(){return  new XMLHttpRequest('Microsoft.XMLHTTP')};
}||false;
};

2)補充如下代碼

ajax=new Ajax;

     var url="/MoreCondition.aspx?category="+type+"";

  ajax.onreadystatechange=(______________);

  ajax.open(___________________);

  _________________________;

 

3)作為Ajax的回調函數,如下函數有什么問題?

  funtion callback()

{

  document.all('JobInfo').value=ajax.responseText;

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM