一 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; }