C#筆試題

7B                                                                                                      w技術類面試、筆試題彙總

注:標明*的問題屬於選擇性掌握的內容,能掌握更好,沒掌握也不要緊。javascript

 

下面的參考解答只是幫助你們理解,不用背,面試題、筆試題變幻無窮,不要夢想着把題覆蓋了,下面的題是供你們查漏補缺用的,真正的把這些題搞懂了,才能「以不變應萬變」。回答問題的時候能聯繫作過項目的例子是最好的,有的問題後面我已經補充聯繫到項目中的對應的案例了。html

 

 

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

private : 私有成員在類的內部才能夠訪問 也就是類內部的函數等成員能夠訪問。java

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

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

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

 

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

Connection:主要是開啓程序和數據庫之間的鏈接。沒有利用鏈接對象將數據庫打開,是沒法從數據庫中取得數據的。CloseDispose的區別,Close之後還能夠OpenDispose之後則不能再用。面試

Command:主要能夠用來對數據庫發出一些指令,例如能夠對數據庫下達查詢、新增、修改、刪除數據等指令,以及調用存在數據庫中的存儲過程等。這個對象是架構在Connection 對象上,也就是Command 對象是透過鏈接到數據源。ajax

DataAdapter:主要是在數據源以及DataSet 之間執行數據傳輸的工做,它能夠透過Command 對象下達命令後,並將取得的數據放入DataSet 對象中。這個對象是架構在Command對象上,並提供了許多配合DataSet 使用的功能。

DataSet:這個對象能夠視爲一個暫存區(Cache),能夠把從數據庫中所查詢到的數據保留起來,甚至能夠將整個數據庫顯示出來,DataSet是放在內存中的DataSet 的能力不僅是能夠儲存多個Table 而已,還能夠透過DataAdapter對象取得一些例如主鍵等的數據表結構,並能夠記錄數據表間的關聯。DataSet 對象能夠說是ADO.NET 中重量級的對象,這個對象架構在DataAdapter對象上,自己不具有和數據源溝通的能力;也就是說咱們是將DataAdapter對象當作DataSet 對象以及數據源間傳輸數據的橋樑。DataSet包含若干DataTableDataTableTable包含若干DataRow

DataReader:當咱們只須要循序的讀取數據而不須要其它操做時,能夠使用DataReader 對象。DataReader對象只是一次一筆向下循序的讀取數據源中的數據,這些數據是存在數據庫服務器中的,而不是一次性加載到程序的內存中的,只能(經過遊標)讀取當前行的數據,並且這些數據是隻讀的,並不容許做其它的操做。由於DataReader 在讀取數據的時候限制了每次只讀取一筆,並且只能只讀,因此使用起來不但節省資源並且效率很好。使用DataReader 對象除了效率較好以外,由於不用把數據所有傳回,故能夠下降網絡的負載。

ADO.NET 使用Connection 對象來鏈接數據庫,使用Command DataAdapter對象來執行SQL語句,並將執行的結果返回給DataReader 或 DataAdapter ,而後再使用取得的DataReader DataAdapter 對象操做數據結果。

 

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

1.使用QueryString, ....?id=1; response. Redirect().... 

2.使用Session變量 

3.使用Server.Transfer

4.Cookie傳值

5.Application傳值 須要注意些什麼??

6.PreviosPage

 

Server.Transfer和Response.Redirect的區別Server.Transfer是服務器內部的轉接,瀏覽器不知曉;即已經跳轉到制定的的頁面,顯示的也是跳轉後頁面的內容,可是地址欄中顯示的仍然死跳轉前的地址;Response.Redirect是有瀏覽器參與的,因此在地址欄中能夠看到地址的變化。

 

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

委託能夠把一個方法做爲參數代入另外一個方法。

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

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

 

面試聊:用Reflector查看.Net的類的內部實現,解決問題。

 

五、override與重載(overload)的區別 

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

Override 是進行基類中函數的重寫。Override是面向對象的概念

  

六、C#中索引器是否只能根據數字進行索引?是否容許多個索引器參數?

參數的個數和類型都是任意的。加分的補充回答:用reflector反編譯能夠看出,索引器的內部本質上就是set_itemget_item方法。加分的補充回答:回答傳智播客.net培訓中講解設計模式中開發的SettingsProvider就是用的string類型的參數名作索引器參數。

 

七、屬性和public字段的區別是什麼?調用set方法爲一個屬性設值,而後用get方法讀取出來的值必定是set進去的值嗎?

屬性能夠對設值、取值的過程進行非法值控制,好比年齡禁止設值負數,而字段則不能進行這樣的設置。雖然通常狀況下get讀取的值就是set設置的值,可是可讓get讀取的值不是set設置的值的,極端的例子。Public Age{get{return 100;}set{}}。加分的補充回答:用reflector反編譯能夠看出,屬性內部本質上就是set_***get_***方法,詳細參考傳智播客.net培訓視頻中串講.net基礎的部分。

    class Person

    {

        public int Age

        {

            get

            {

                return 3;

            }

            set

            {

 

            }

        }

    }

            Person p1 = new Person();

            p1.Age = 30;

            p1.Age++;

            Console.Write(p1.Age);//輸出3

 

八、三層架構

一般意義上的三層架構就是將整個業務應用劃分爲:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL

區分層次的目的即爲了「高內聚,低耦合」的思想。

表現層(UI):通俗講就是展示給用戶的界面,即用戶在使用一個系統的時候的所見所得。

業務邏輯層(BLL):針對具體問題的操做,也能夠說是對數據層的操做,對數據業務邏輯處理。

數據訪問層(DAL):該層所作事務直接操做數據庫,針對數據的增添、刪除、修改、更新、查找等每層之間是一種垂直的關係。

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

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

缺點: 增長成本。

 

9MVC模式 (*

MVC(Model View Controller)模型-視圖-控制器

aspx就是View,視圖;ModelDataSetReader、對象;Controllercs代碼。

 

MVC是典型的平行關係,沒有說誰在上誰在下的關係,模型負責業務領域的事情,視圖負責顯示的事情,控制器把數據讀取出來填充模型後把模型交給視圖去處理。而各類驗證什麼的應該是在模型裏處理了。它強制性的使應用程序的輸入、處理和輸出分開。MVC最大的好處是將邏輯和頁面分離。 

 

十、什麼是裝箱(boxing)和拆箱(unboxing)? (*

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

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

            object obj = null;//引用類型

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

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

 

11、什麼叫應用程序域(AppDomain) *

一種邊界,它由公共語言運行庫圍繞同一應用程序範圍內建立的對象創建(即,從應用程序入口點開始,沿着對象激活的序列的任何位置)。

應用程序域有助於將在一個應用程序中建立的對象與在其餘應用程序中建立的對象隔離,以使運行時行爲能夠預知。

在一個單獨的進程中能夠存在多個應用程序域。應用程序域能夠理解爲一種輕量級進程。起到安全的做用。佔用資源小。

 

十二、CTSCLSCLR分別做何解釋(*

CTS:Common Type System 通用系統類型。Int32Int16intStringstringBooleanbool

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

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

 

1三、在dotnet中類(class)與結構(struct)的異同?

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

Struct屬於值類型,是分配在內存的棧上的。結構體是複製傳遞的。加分的回答:所謂的結構體一般包括Int3二、Boolean等都屬於結構體。

 

1四、堆和棧的區別?

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

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

 

1五、能用foreach遍歷訪問的對象的要求

須要實現IEnumerable(可列舉的)接口或聲明GetEnumerator方法的類型。

  

 

1六、GC是什麼爲何要有GC?  

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

要請求垃圾收集,能夠調用下面的方法:GC.Collection()通常不須要手動調用GC.Collection()。加分的回答:有一次用OLEAutomation的方式操做Excel的時候,Excel常常不能正常退出,在MSDN網站上找到官方解答說要調用一下GC.Collection(),至於爲何這樣就能夠也沒找到答案。

 

1七、String s = new String("xyz");建立了幾個String Object? 

兩個對象,一個是「xyx,一個是指向「xyx」的引用對象。

 

1八、值類型和引用類型的區別?

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

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

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

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

 

 

1.全部類型的基類都是object

2.值類型放到內存中的棧裏面,引用類型存放在堆中

3.存放在棧中的對象用完就放棄掉了,而存放在堆中的對象用完以後不會立刻放棄掉,仍然佔用內存資源,只有等貸款GC回收

4.說到底,分紅值類型和引用類型就是爲了提升效率

5.裝箱和拆箱操做很是嚴重的消耗資源。

6.本身使用代碼顯式的進行數據類型轉換,能夠大大減小裝箱和拆箱的行爲,提升效率。

7.ArrayList只能接受object類型的元素,因此若是向其中添加值類型(intdatetime),就會將其轉換成引用類型(object(值類型)),就進行了一次裝箱操做。影響執行效率

8.使用Convert.ToInt32()方式將引用類型轉換成值類型,沒有拆箱操做,由於不是轉換成c#中的Int類型,而是直接轉換成了中間類型Int32

1九、C#中的接口和類有什麼異同。 

 

不一樣點:

不能直接實例化接口。

接口不包含方法的實現。

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

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

相同點:

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

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

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

 

20、(抽象類)abstract class和interface(接口)有什麼區別

 

相同點: 

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

不一樣點: 

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

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

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

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

抽象類能夠定義字段、屬性、包含有實現的方法。  

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

加分的補充回答:講設計模式的時候SettingsProvider的例子。

 

2一、是否能夠繼承String

String類是sealed類故不能夠繼承。 Sealed類是指密封類

 

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

會執行,在return前執行。

加分的補充回答(也助記):讀取數據庫中數據的條數的程序

public int QueryCount()

{

   ..

   try

   {

      return cmd.ExecuteScalar();

   }

   finally

   {

      cmd.Dispose();

   }

}

若是C#設計的是先執行cmd.Dispose()再執行return就會出現return執行失敗了,由於cmd已經Dispose了。

由於c#就是這麼設計的,finally中的代碼通常都是釋放資源,清除對象的,而return通常是用來返回數據的。若是限制性

2三、new 關鍵字用法(*

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

new 修飾符 用於向基類成員隱藏繼承成員。

new 約束 用於在泛型聲明中約束可能用做類型參數的參數的類型。

 

2四、如何把一個Array複製到ArrayList裏(*

 

實現1 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);

實現2 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);

 

2五、描述線程與進程的區別?(*

1.線程(Thread)與進程(Process)兩者都定義了某種邊界,不一樣的是進程定義的是應用程序與應用程序之間的邊界,不一樣的進程之間不能共享代碼和數據空間,而線程定義的是代碼執行堆棧和執行上下文的邊界。

2.一個進程能夠包括若干個線程, 同時建立多個線程來完成某項任務,即是多線程。而同一進程中的不一樣線程共享代碼和數據空間。用一個比喻來講,若是一個家庭表明一個進程,在家庭內部,各個 成員就是線程,家庭中的每一個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也能夠派出幾個成員來協同完 成,而家庭以外的人則沒有辦法直接消費不屬於本身家庭的財產。

加分的回答:舉例,傳智播客的.Net培訓中用多線程(ThreadPool)實現網站蜘蛛的案例

 

2六、什麼是強類型,什麼是弱類型?哪一種更好些?爲何
C#中

int i=3;

i="a";

不能夠

JavaScript中

var i=3;

i="a";

能夠

強類型是在編譯的時候就肯定類型的數據,在執行時類型不能更改,而弱類型在執行的時候纔會肯定類型。

沒有好很差,兩者各有好處,強類型安全,由於它事先已經肯定好了,並且效率高。弱類型更靈活,可是效率低,並且出錯機率高

通常用於編譯型編程語言,如c++,java,c#,pascal,弱類型相比而言不安全,在運行的時候容易出現錯誤,但它靈活,多用於解釋型編程語言,如javascript,vb等 

加分的補充回答:引用傳智播客.net培訓呼叫中心項目中用強類型DataSet的例子,侃一通用強類型DataSet是多麼方便。

 

2七、什麼是反射

程序集包含模塊,而模塊又包括類型,類型下有成員,反射就是管理程序集,模塊,類型的對象,它可以動態的建立類型的實例,設置現有對象的類型或者獲取現有對象的類型,能調用類型的方法和訪問類型的字段屬性。它是在運行時建立和使用類型實例 

加分的補充回答:聊用反射實現編輯器動態插件和如鵬網項目中插件體系實現第三方支付和定時任務的案例。

 

2八、intDateTimestring是否能夠爲null?

int、DateTime不能,由於其爲Struct類型,而結構屬於值類型,值類型不能爲null,只有引用類型才能被賦值nullstring能夠爲null

 

2九、using關鍵字有什麼用?什麼是IDisposable

using能夠聲明namespace的引入,還能夠實現非託管資源的釋放,實現了IDisposiable的類在using中建立,using結束後會自動調用該對象的Dispose方法,釋放資源。加分的補充回答:using其實等價於try……finally,用起來更方便。

int?→Nullable<int>

 

30、Assembly.Load("foo.dll"); 這句話是否正確?(*

錯誤,正確的應該是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");

 

3一、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是用來顯示數據的

 

3二、string str = null 與 string str = 「」說明其中的區別。 

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

 

33.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer,以自動增加的ID做爲主鍵,注意:ID可能不是連續的。 

答:解1: select top 10 * from A where id not in (select top 30 id from A) 

解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 

解答3ROW_NUMBER(推薦)

Select top 10 * from(Select Row_number() over(order by id) as rownumber ,* from A) as B where rownumber>30

34.面向對象的語言具備________性、_________性、________性 

答:封裝、繼承、多態。 

不要背,腦子中要有聯想。

 

35..Net中全部可序列化的類都被標記爲_____? 

答:[serializable] 

36..Net託管代碼中咱們不用擔憂內存漏洞,這是由於有了______? 

答:GC。 

 

37、什麼叫應用程序域?什麼是受管制的代碼?什麼是託管代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?CTSCLSCLR分別做何解釋? 

應用程序域爲安全性、可靠性、版本控制以及卸載程序集提供了隔離邊界。應用程序域一般由運行庫宿主建立,運行庫宿主負責在運行應用程序以前引導公共語言運行庫。應用程序域提供了一個更安全、用途更廣的處理單元,公共語言運行庫可以使用該單元提供應用程序之間的隔離。

受管制的代碼:在.Net環境中運行的任何代碼都是受管制的代碼(managed code),.Net外部的代碼也運行在windows上,這些代碼稱爲未受管制的代碼(unmanaged code)。

使用基於公共語言運行庫的語言編譯器開發的代碼稱爲託管代碼;託管代碼具備許多優勢,例如:跨語言集成、跨語言異常處理、加強的安全性、版本控制和部署支持、簡化的組件交互模型、調試和分析服務等。

強類型語言是可以禁止任何違反類型系統的代碼的語言,或者說是可以捕獲全部違反類型系統的錯誤的語言。咱們說C++相對於C是強類型的,是由於C++禁止了一些C中的隱式轉換,好比將void*轉換爲任意的指針類型。

裝箱和拆箱使值類型可以被視爲對象。對值類型裝箱將把該值類型打包到 Object 引用類型的一個實例中。這使得值類型能夠存儲於垃圾回收堆中。拆箱將從對象中提取值類型。

每一個類型成員都有一個惟一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。只要簽名不一樣,就能夠在一種類型內定義具備相同名稱的多種方法。當定義兩種或多種具備相同名稱的方法時,就稱做重載。

CTS通用類型系統 (common type system) 

一種肯定公共語言運行庫如何定義、使用和管理類型的規範。

CLR公共語言運行庫

.NET Framework 提供了一個稱爲公共語言運行庫的運行時環境,它運行代碼並提供使開發過程更輕鬆的服務。

CLS公共語言規範

要和其餘對象徹底交互,而無論這些對象是以何種語言實現的,對象必須只向調用方公開那些它們必須與之互用的全部語言的通用功能。爲此定義了公共語言規範 (CLS),它是許多應用程序所需的一套基本語言功能。

 

3八、什麼是code-Behind技術。 

就是代碼隱藏,在ASP.NET中經過ASPX頁面指向CS文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web應用程序的建立。好比分工,美工和編程的能夠個幹各的,不用再像之前asp那樣都代碼和html代碼混在一塊兒,難以維護。

 

3九、接口是一種引用類型,在接口中能夠聲明(   a),但不能夠聲明公有的域或私有的成員變量。   
  a) 方法、屬性、索引器和事件;   
 
  c) 索引器和字段;     
  d) 事件和字段;   

40ADO.NET中,對於Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是(c)。   
  a) insertupdatedelete等操做的Sql語句主要用ExecuteNonQuery()方法來執行;   
  b) ExecuteNonQuery()方法返回執行Sql語句所影響的行數。   
  c) Select操做的Sql語句只能由ExecuteReader()方法來執行;   
  d) ExecuteReader()方法返回一個DataReder對象;  

 

解答:ExecuteScalarselect getdate()

 
41下列關於C#中索引器理解正確的是(c   )   
  a) 索引器的參數必須是兩個或兩個以上   
  b) 索引器的參數類型必須是整數型   
  c) 索引器沒有名字   
  d) 以上皆非   

42要建立多文檔應用程序,須要將窗體的(d   )屬性設爲true   
  a) DrawGrid;   
  b) ShowInTaskbar;   
  c) Enabled;   
  d) IsMdiContainer;   

43若是設treeView1=new   TreeView(),則treeView1.Nodes.Add("根節點")返回的是一個   (a)類型的值。   
  a) TreeNode;   
  b) int;   
  c) string;   
  d) TreeView;   


44下面關於XML的描述錯誤的是(d)。   
  a) XML提供一種描述結構化數據的方法;   
  b) XML   是一種簡單、與平臺無關並被普遍採用的標準;   
  c) XML文檔可承載各類信息;   
  d) XML只是爲了生成結構化文檔;   


4五、如下的C#代碼,試圖用來定義一個接口:   
  public   interface   IFile   
  {   
              int   A;   
              int   delFile()   
              {   
                      A   =   3;   
              }   
              void   disFile();   
  }   
  關於以上的代碼,如下描述錯誤的是(d   )。   
  a) 以上的代碼中存在的錯誤包括:不能在接口中定義變量,因此int   A代碼行將出現錯誤;   
  b) 以上的代碼中存在的錯誤包括:接口方法delFile是不容許實現的,因此不能編寫具體的實現函數;   
  c) 代碼void   disFile();聲明無錯誤,接口能夠沒有返回值;   
  d) 代碼void   disFile();應該編寫爲void   disFile(){};  

 

 空和null不同。 

46 在ASP.NET中有Button控件myButton,要是單擊控件時,導航到其餘頁面http://www.abc.com,   正確的代碼爲(   c)。   
  a) private   void   myButton_Click(object   sender,   System.EventArgs   e){Redirect(「http://www.abc.com」);}   
  b) private   void   myButton_Click(object   sender,   System.EventArgs   e){Request.Redirect(「http://www.abc.com」);}   
  c) private   void   myButton_Click(object   sender,   System.EventArgs   e){Reponse.Redirect(「http://www.abc.com」);}   
  d) private   void   myButton_Click(object   sender,   System.EventArgs   e){Request.Redirect(「http://www.abc.com」);return   true;}   

47聲明一個委託public   delegate   int   myCallBack(int   x);   則用該委託產生的回調方法的原型應該是(b   )。   
  a) void   myCallBack(int   x)   ;   
  b) int   receive(int   num)   ;   
  c) string   receive(int   x)   ;   
  d) 不肯定的;   

48.StringBuilder 和 String 的區別?

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

 若是要操做一個不斷增加的字符串,儘可能不用String,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.NET框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。 

 

 

4九、.請敘述屬性與索引器的區別。 *)沒啥意義

     屬性          索引器     

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

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

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

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

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

 

50.請敘述constreadonly的區別。*

        const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。

        const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。由於它是在編譯時就須要徹底評估。

        const成員能夠使用另外一個const成員來初始化,前提是二者之間沒有循環依賴。

        readonly在運行期評估賦值,使咱們得以在確保只讀訪問的前提下,把object的初始化動做推遲到運行期進行。

        readonly 關鍵字與 const 關鍵字不一樣: const 字段只能在該字段的聲明中初始化。readonly 字段能夠在聲明或構造函數中初始化。所以,根據所使用的構造函數,readonly 字段可能具備不一樣的值。另外,const 字段是編譯時常數,而 readonly 字段可用於運行時常數。 

  readonly 只能在聲明時或者構造函數裏面初始化,而且不能在 static 修飾的構造函數裏面。 

參考資料:

http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html

http://www.cnblogs.com/jams742003/archive/2010/03/23/1692913.html

http://www.cnblogs.com/wayfarer/archive/2006/04/27/386658.html

 

51.  請解釋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" 表用運行時使用哪個隱藏類

 

52.  什麼是viewstate,可否禁用?是否所用控件均可以禁用?

Viewstate是保存狀態的一種機制,EnableViewState屬性設置爲false便可禁用。最有力的舉例子:LabelTextBox在禁用ViewState後不一樣的表現來講明。

 

5三、你對web service的體會?

答:若是本身寫的一些程序也但願別人能夠經過Web服務來使用,也能夠把本身編寫的方法貼上標籤[WebMethed]來實現Web 服務。[是當編寫程序時,但願實現一些別的網站已經實現過的,也用Web服務可視成XML語言的編碼。能夠使用別人的編碼生成的XML找到本身須要的信息,來實現本身編寫的程序的一些功能。把傳智播客.net培訓的如鵬網項目中用WebService實現管理客戶端的例子說出來。

SOAP、WSDL

 

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

答案:子類從新定義父類的某一個方法時,必須把父類的方法定義爲virtual 

在定義接口中不能有方法體,虛方法能夠。

實現時,子類能夠不從新定義虛方法,但若是一個類繼承接口,那必須實現這個接口。

 

講到這裏了

55不定項選擇:

(1) 如下敘述正確的是: B C

A. 接口中能夠有虛方法。B. 一個類能夠實現多個接口。 C. 接口不能被實例化。 D. 接口中能夠包含已實現的方法。 

(2) 從數據庫讀取記錄,你可能用到的方法有:B C D

      A. ExecuteNonQuery            B. ExecuteScalar      C. Fill                        D. ExecuteReader

3.對於一個實現了IDisposable接口的類,如下哪些項能夠執行與釋放或重置非託管資源相關的應用程序定義的任務?(多選)   (        ABC         )   

  A.Close B.Dispose C.Finalize   

  D.using E.Quit   

4如下關於refout的描述哪些項是正確的?(多選)   (    ACD   )   

  A.使用ref參數,傳遞到ref參數的參數必須最早初始化。   

  B.使用out參數,傳遞到out參數的參數必須最早初始化。   

  C.使用ref參數,必須將參數做爲ref參數顯式傳遞到方法。   

  D.使用out參數,必須將參數做爲out參數顯式傳遞到方法。 

講到這裏

56項選擇:

1下列選項中,(C)是引用類型。

a)enum類型   b)struct類型 c)string類型   d)int類型

 

2.關於ASP.NET中的代碼隱藏文件的描述正確的是(C

a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的建立用於與窗體交互。編程邏輯惟一與用戶界面不一樣的文件中。該文件稱做爲代碼隱藏文件,若是用C#建立,該文件將具備「.ascx.cs」擴展名。

b)項目中全部Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。

c)項目中全部的Web窗體頁的代碼隱藏文件都被編譯成項目動態連接庫(.dll)文件。

d)以上都不正確。

 

3.下列描述錯誤的是(D

a)類不能夠多重繼承而接口能夠;

b)抽象類自身能夠定義成員而接口不能夠;

c)抽象類和接口都不能被實例化;

d)一個類能夠有多個基類和多個基接口;

 

5七、DataReaderDataSet的異同?

DataReader使用時始終佔用SqlConnection,在線操做數據庫

每次只在內存中加載一條數據,因此佔用的內存是很小的

是隻進的、 只讀的

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

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

 

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

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

 

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

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

 

60、C#支持多重繼承麼?

類之間不支持,接口之間支持。類對接口叫作實現,不叫繼承。 

 

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

System.Object

 

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

答:用URL編碼,經過QueryString傳遞,用urlencode編碼 用urldecode解碼

 

6三、stringStringintInt32Booleanbool的區別

String、Int32Boolean等都屬於.Net中定義的類,而stringintbool至關於C#中對這些類定義的別名。CTS

 

6四、Server.TransferResponse.Redirect的區別是什麼?(常考)

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

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

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

 

6五、不是說字符串是不可變的嗎?string s="abc";s="123"不就是變了嗎?(傳智播客.Net培訓班原創模擬題)

String是不可變在這段代碼中,s原先指向一個String對象,內容是 "abc",而後咱們s指向"123",那麼s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另外一個 String對象,內容爲"123",原來那個對象還存在於內存之中,只是s這個引用變量再也不指向它了。

 

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

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

 

6七、.Net中會存在內存泄漏嗎,請簡單描述。 (*)

所謂內存泄露就是指一個再也不被程序使用的對象或變量一直被佔據在內存中。.Net中有垃圾回收機制,它能夠保證一對象再也不被引用的時候,即對象編程了孤兒的時候,對象將自動被垃圾回收器從內存中清除掉。雖然.Net能夠回收無用的對象,可是.Net仍然存在因爲使用不當致使的內存泄露問題。.Net中的內存泄露的狀況:長生命週期的對象持有短生命週期對象的引用就極可能發生內存泄露,儘管短生命週期對象已經再也不須要,可是由於長生命週期對象持有它的引用而致使不能被回收,這就是.Net中內存泄露的發生場景,通俗地說,就是程序員可能建立了一個對象,之後一直再也不使用這個對象,這個對象卻一直被引用,即這個對象無用可是卻沒法被垃圾回收器回收的,這就是.Net中可能出現內存泄露的狀況,例如,緩存系統,咱們加載了一個對象放在緩存中(例如放在一個全局Dictionary對象中),而後一直再也不使用它,這個對象一直被緩存引用,但卻再也不被使用。

formManager

{

  public static IList<Form> forms = new .....;  

}

擴展:使用弱引用那麼及時被引用也能夠被回收。

 

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

要讓人家感受你對.Net開發很熟,因此,不能僅僅只列誰都能想到的那些東西,要多列你在作項目中涉及的那些東西。就寫你最近寫的那些程序中涉及的那些類。

經常使用的類:StreamReaderWebClientDictionary<K,V>StringBuilderSqlConnectionFileStreamFileRegexList<T> 

經常使用的接口:IDisposableIEnumerableIDbConnectionIComparableICollectionIListIDictionary

要出乎意料!不要僅僅完成任務!

 

6九、BSCS的聯繫與區別。 

C/S是Client/Server的縮寫。客戶端須要安裝專用的客戶端軟件。 

B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器。在這種結構下,用戶界面徹底經過WWW瀏覽器實現,一部分事務邏輯在前端實現,可是主要邏輯在服務器端實現。瀏覽器經過Web Server 同數據庫進行數據交互。 

C/S 與 B/S 區別: 

1).硬件環境不一樣

  C/S 通常創建在專用的網絡上小範圍裏的網絡環境局域網之間再經過專門服務器提供鏈接和數據交換服務

  B/S 創建在廣域網之上的沒必要是專門的網絡硬件環境,例與電話上網租用設備信息本身管理有比C/S更強的適應範圍通常只要有操做系統和瀏覽器就行 

).對安全要求不一樣 

  C/S 通常面向相對固定的用戶羣對信息安全的控制能力很強通常高度機密的信息系統採用C/S 結構適宜能夠經過B/S發佈部分可公開信息

  B/S 創建在廣域網之上對安全的控制能力相對弱可能面向不可知的用戶。 

3).處理問題不一樣 

  C/S 程序能夠處理用戶面固定而且在相同區域安全要求高需求與操做系統相關應該都是相同的系統。C/S的客戶端因爲是本地程序,所以和本地硬件、程序的交互性很強,好比能夠控制本機的其餘程序、能夠讀寫本地磁盤文件、能夠與硬件交互。

  B/S 創建在廣域網上面向不一樣的用戶羣分散地域這是C/S沒法做到的與操做系統平臺關係最小,正應爲如此B/S很難和本地硬件、程序、文件進行交互,好比很難控制本機的其餘程序、很難讀寫本地磁盤文件、很難與硬件交互,固然能夠用ActiveX技術解決,好比網銀等就是這麼解決的,這樣作的問題就是可能會被客戶拒絕,並且只侷限於Windows操做系統。

 

C/S也分爲兩層架構和三層架構。兩層架構:客戶端程序程序直連數據庫;三層架構:客戶端訪問服務端的服務,主要邏輯代碼寫在服務端的服務中,而後服務端服務再去訪問數據庫,Oracle版分佈式呼叫中心,WCF

 

70、編寫一個單例(Singleton)類。

參考複習ppt

把構造函數設置爲private,設置一個publicstatic的對象實例

public FileManager

{

    private FileManager(){}

    public static FileManager Instance = new FileManager();

}

 

擴展:搜「C#  Singleton

7一、什麼是sql注入?如何避免sql注入?

用戶根據系統的程序構造非法的參數從而致使程序執行不是程序員指望的惡意SQL語句。使用參數化的SQL就能夠避免SQL注入。

詳細參考複習ppt。舉例子,擺事實!

1' or 1=1

 

7二、數據庫三範式是什麼?

傳智播客風格的非嚴謹卻一會兒明瞭的解答方式:

第二範式:表必須有主鍵。

第三範式:表引用其餘的表必須經過主鍵引用。

 

7三、說出一些數據庫優化方面的經驗?

索引內部原理:想象成Dictionary,插入、刪除、更新的速度慢了,加上索引也多佔用了空間,查詢的速度快了。加上索引之後速度提高很是明顯。

1在常常檢索的字段上(select * from Person where Name=@Name)使用索引提升查詢速度。(2select中只列出必要的字段,而不是*。(3避免隱式類型轉換形成的全表掃描,在索引上使用函數也會形成全表掃描(由於索引只是爲字段創建的,一旦使用表達式或者函數,那麼索引就是失效了,固然也能夠使用「函數索引」、「表達式索引」解決這個問題),使用索引不必定能提升查詢速度。4)避免在索引列上使用計算(where Name+'A'=@MyName

加分的回答:不進行無心義優化,根據性能查看器的報表,對最耗時的SQL進行優化。

 

7四、什麼是數據庫事務?

事務三個特性:一致性、原子性、隔離性。

幾個SQL語句,要麼所有執行成功,要麼所有執行失敗。舉例就用最經典的銀行轉帳的例子就行,而後再舉一個項目中用的例子:傳智播客.net培訓中批量導入客戶數據的時候要麼所有導入成功,要麼所有導入失敗。事務的三個操做:BeginCommitRollBack

取剛插入數據的id值,就要用事務來隔離:Insert select top 1 id from ....

 

7五、談談你對設計模式的理解(傳智播客.Net培訓班原創模擬題)

世界上本沒有模式,用的人多了,也就有了模式。不用刻意記每種模式的名字,手中無模式,心中有模式。

大部分設計模式就是接口、抽象類的一個組合。ADO.Net基於接口編程,SafeDbCommandSafeConnectionSettingsProvider。不必記模式的名字。

舉例:傳智播客.net培訓時SettingsProvider、第三方支付的例子。

 

7六、談談ViewState。談談對ASP.Net原理的理解。談談ASP.Net生命週期。

Label、Textbox在禁用ViewState的時候自增的不一樣表現

Http是無狀態的WebForm爲了實現基於http的「有狀態」從而簡化開發,ViewState用來在兩次請求間保持狀態。頁面返回前將界面的狀態序列化到ViewState中,這樣就將狀態保存在了瀏覽器中,下次頁面提交的時候會順便再將ViewState提交到服務器,這樣服務器就根據ViewState還原了狀態,這樣WebForm開發就像有狀態同樣了。談談自定義AutoInc控件。

 

7七、postget的區別

get的參數會顯示在瀏覽器地址欄中,而post的參數不會顯示在瀏覽器地址欄中;

使用post提交的頁面在點擊【刷新】按鈕的時候瀏覽器通常會提示「是否從新提交」,而get則不會;

get的頁面能夠被搜索引擎抓取,而用post的則不能夠;

post能夠提交的數據量很是大,而用get能夠提交的數據量則很是小(2k),受限於網頁地址的長度。

post能夠進行文件的提交,而用get則不能夠。

 參考閱讀:http://www.cnblogs.com/skynet/archive/2010/05/18/1738301.html 

 

7八、下面的程序執行結果是什麼?(傳智播客.Net培訓班原創模擬題)

    class Person

    {

        public int Age { getset; }

    }

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

答案:

20

21

 

解釋:引用類型和值類型的區別。 

 

7九、Http默認的端口號是(80)、Ftp默認的端口號是(21)、SQLServer的默認端口號是(1433)(傳智播客.Net培訓班原創模擬題)

80、運算符++a表示(先將a1,而後表達式的值爲a1後的值),i++表示(表達式的值爲a,而後a1)。

8一、下面程序的執行結果是什麼?(傳智播客.Net培訓班原創模擬題)

            int i = 10;

            Console.WriteLine(i++);

            Console.WriteLine(++i);

            Console.WriteLine(i=20);

答案:

10

12

20        

解答:前兩個參考第80題,i++表達式的值爲i自增以前的值,因此打印10,執行完成後i變成11,執行++i的時候表達式的值爲自增之後的值12。C#中賦值表達式的值爲變量被賦值的值,所以最後一個就輸出i賦值後的值20

while((line=reader.ReadLine())!=null)

{

}

 

8二、若是不用VisualStudio,用哪一個命令行編譯C#程序?(*)(傳智播客.Net培訓班原創模擬題)

答:csc.exe。

 

8三、下列哪一個名詞和WebService不直接相關?(B)(傳智播客.Net培訓班原創模擬題)

A、UDDI 

B、GUID

C、WSDL

D、SOAP

 

SOAP和HTTP的關係:SOAP基於Http協議的,和普通網頁不一樣的是網頁返回HTML,SOAP則是符合SOAP協議的XML數據。

 

8四、.Net Framework中的類是專門供C#調用的是嗎?(傳智播客.Net培訓班原創模擬題)

答:錯。VB.Net等語言均可以調用.Net Framework中的類。CTS、CLS。

 

8五、開放性問題:說出儘量多的基於.Net Framework的語言。(*)(傳智播客.Net培訓班原創模擬題)

參考解答:C#、VB.Net、F#、PowerShell、IronPython、J#、Ruby.Net

 

8六、.Net、ASP.Net、C#、VisualStudio之間的關係是什麼?(傳智播客.Net培訓班原創模擬題)

答:.Net通常指的是.Net Framework,提供了基礎的.Net類,這些類能夠被任何一種.Net編程語言調用,.Net Framework還提供了CLR、JIT、GC等基礎功能。

ASP.Net是.Net中用來進行Web開發的一種技術,ASP.Net的頁面部分寫在aspx 文件中,邏輯代碼一般經過Code-behind的方式用C#、VB.Net等支持.Net的語言編寫。

C#是使用最普遍的支持.Net的編程語言。除了C#還有VB.Net、IronPython等。

VisualStudio是微軟提供的用來進行.Net 開發的集成開發環境(IDE),使用VisualStudio能夠簡化不少工做,不用程序員直接調用csc.exe等命令行進行程序的編譯,並且 VisualStudio提供了代碼自動完成、代碼高亮等功能方便開發。除了VisualStudio,還有SharpDevelop、 MonoDevelop等免費、開源的IDE,VisualStudio Express版這個免費版本。

 

8七、AJAX解決什麼問題?如何使用AJAX?AJAX有什麼問題須要注意?項目中哪裏用到了AJAX?(傳智播客.Net培訓班原創模擬題)

答:AJAX解決的問題就是「無刷新更新頁面」,用傳統的HTML表單方式進行頁面的更新時,每次都要將請求提交到服務器,服務器返回後再重繪界面,這樣界面就會經歷:提交→變白→從新顯示這樣一個過程,用戶體驗很是差,使用AJAX則不會致使頁面從新提交、刷新。

AJAX最本質的實現是在Javascript中使用XMLHttpRequest進行Http的請求,開發中一般使用UpdatePanel、JQuery等方式簡化AJAX的開發,UpdatePanel的方式實現AJAX最簡單,可是數據通信量比較大,由於要來回傳整個ViewState,並且不靈活,對於複雜的需求則能夠使用JQuery提供的ajax功能。

UpdatePanel的內部原理。

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

在如鵬網項目中發帖的時候顯示相關帖的功能、站內搜索項目中顯示搜索Suggestion、數據採集項目中都用到了AJAX。

8八、NET經過對各語言先編譯成( IL),而後再執行時用( JIT)將其編譯成本地平臺代碼,來實現異構平臺下對象的互操做。(*)

8九、編寫正則表達式驗證一個字符串是否爲Email。複習正則表達式部分的知識。

90、Application 、Cookie和 Session 兩種會話有什麼不一樣

答:Application是用來存取整個網站全局的信息,而Session是用來存取與具體某個訪問者關聯的信息。

 

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

博客園(www.cnblogs.com)、csdn、codeplex、codeproject、msdn文檔、msdn論壇(遇到問題先到網上搜解決方案,還不行就問同事,同事也解決不了就去MSDN論壇提問,必定能獲得解決)

 

9二、你對.net的GC的理解

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

 

 

9三、請寫一個SQL語句:從user表中取出name列中的起始字符是「北京」的所有記錄

select * from [user] wherer name like'北京%'

 

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

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

 

9五、什麼是WEB服務控件?使用WEB服務控件有那些優點、劣勢?  

web服務控件就是能夠在服務器執行的控件,優點在於可 以回傳數據(ViewState),帶有事件驅動(doPostBack),簡化了Html標籤的使用,使得開發ASP.net程序能夠像開發 Winform程序同樣簡單。Web服務控件最終仍是被渲染(Render)爲Html標籤。使用WEB服務控件的劣勢是會生成一些無用的屬性、 ViewState等,不利於SEO,通常在內網系統或者互聯網系統的後臺中使用WEB服務控件。若是沒有複雜的服務器交互動做,就不用Web服務器控 件。

runat=server的HTML控件有什麼特色:路徑不用程序員解析,能夠使用「~」來虛擬路徑。

 

9六、下面程序的執行結果是什麼?(傳智播客.Net培訓班原創模擬題)

            int i = 10;

            if (i <=0) ;

                Console.WriteLine("i必須大於0");

            Console.WriteLine("ok");

答案:

i必須大於0

ok

 

解答:注意if (i <=0)後面的「;」,因爲有了「;」,因此Console.WriteLine("i必須大於0")再也不是和if一塊兒的一部分,而是獨立的語句。

for循環也是如此。

 

9七、下面程序的執行結果是什麼?(傳智播客.Net培訓班原創模擬題)(*)

        static void Main(string[] args)

        {

            Console.WriteLine(Calc());

 

            Console.ReadKey();

        }

 

        static int Calc()

        {

            int i = 0;

            try

            {

                return i;

            }

            finally

            {

                Console.WriteLine("finally");

                i++;

            }

        }

答案:

finally

0

 

解釋:參考第22題的值,return先執行,finally後執行,因此return的值是沒有i++以前的0。注意並非return的時候函數真的就「返回、執行結束」了,return只是標記函數的返回值是0,標記完了還會執行finally中的代碼,只有finally中的代碼執行完成後函數才真正的返回。

 

 

9八、開放式問題:工做中遇到不懂的問題是怎樣去解決的?(傳智播客.Net培訓班原創模擬題)

參考解答:首先到百度上搜索中文的資料,通常均可以找到解決方案,若是還找不到解決方案就到google上搜索英文的資料,若是尚未解決方案就請教同事,若是同事也沒有解決方案,就將問題提交到MSDN論壇。

 

9九、開放性問題:你能說出哪些數據庫?(傳智播客.Net培訓班原創模擬題)

參考解答:MSSQLServer、Oracle、Access、DB二、Sybase

 

100、開放性問題:你能說出儘量多的你據說過的編程語言?(傳智播客.Net培訓班原創模擬題)(*)

參考解答:C#、VB.Net、Ada、Cobol、C、C++、Delphi、Erlang、F#、Fortran、Java、JavaScript、Pascal、Python、PowerShell、Ruby、Smalltalk。

 

10一、請翻譯下面的文章(*)
The BaseDataBoundControl is the root of all data-bound control classes. It defines the DataSource and DataSourceID properties and validates their assigned content. DataSource accepts enumerable objects obtained and assigned the ASP.NET 1.x way. 

 

Mycontrol1.DataSource = dataSet;

 

Mycontrol1.DataBind();

 

DataSourceID is a string and refers to the ID of a bound data source component. Once a control is bound to a data source, any further interaction between the two (in both reading and writing) is handled out of your control and hidden from view. This is both good and bad news at the same time. It is good (rather, great) news because you can eliminate a large quantity of code. The ASP.NET framework guarantees that correct code executes and is written according to recognized best practices. You're more productive because you author pages faster with the inherent certainty of having no subtle bugs in the middle. If you don't like this situationlook, the same situation that many ASP.NET 1.x developers complained aboutyou can stick to the old-style programming that passes through the DataSource property and DataBind method. Also in this case, the base class saves you from common practices even though the saving on the code is less remarkable.

 

參考翻譯(自我感受翻譯的很爛,僅供參考。):

BaseDataBoundControl是全部的數據 綁定控件類的根類。它定義了DataSource、DataSourceID兩個屬性,而且對爲它們賦值的內容進行驗證。DataSource屬性接受讀 取、設置ASP.Net 1.x方式的IEnumerable 對象。

Mycontrol1.DataSource = dataSet;

Mycontrol1.DataBind();

DataSourceID 是一個字符串,引用綁定的數 據源控件的ID。一旦一個控件綁定到了數據源,這二者之間的任何交互(讀和寫)都會在你的控件以外被處理,而且被隱藏起來。這既是好消息也是壞消息。 ASP.Net框架保證代碼按照最佳實踐進行代碼的執行、編寫。你會更加高效,由於你編寫了更快的、沒有任何錯誤的分頁代碼。若是你不喜歡這樣的行爲 (看,就和ASP.Net 1.x開發人員抱怨的同樣),你仍然能夠使用老的編程風格,也就是將對象傳遞給DataSource屬性,而後調用 DataBind方法。另外在這種狀況下,基類能夠幫你避免常規的作法,即便看起來改進不明顯。

 

10二、在下述選項時,沒有構成死循環的程序是 (C)

A.int i=100;while (1) { i=i%100+1; if (i>100) break; } 

B.for (;;); 

C.int k=1000; do { ++k; }while(k>=10000); 

D.int s=36; while (s);--s;

 

10三、下列哪一個是和數據庫訪問技術關係不大的技術(C)

A、SQLHelper

B、EnterPrise Library

C、AppDomain

D、Linq

 

10四、下列哪些說法是錯誤的(傳智播客.Net培訓班原創模擬題)

A、將bmp格式的文件修改成jpg是修改圖片格式最簡單的方法

B、將QQ動態表情顯示在網頁上用gif格式比較好

C、將bmp格式的圖片放到網頁中能夠優化網站速度

D、png格式用在網頁中能夠實現透明的效果。

 

答案:A、C。A錯誤是由於修改文件的後綴並無真的修改文件的格式,要使用Photoshop、mspaint等圖片處理工具進行轉換才能夠。C錯誤是由於在網頁中不能使用bmp圖片。

 

10五、從如下簡寫中任選一個簡單描述

OA\MIS\HRM\CRM\KM

 

參考答案:

OA(Office Automation):辦公自動化

MIS(Managment Information system):管理信息系統

HRM(Human Resource Managment):人力資源管理,包括員工管理、薪資管理、入職管理、離職管理、報銷管理、請假管理等

CRM(Customer Relation Managment):客戶關係管理系統,包括客戶管理、客戶關懷、客戶回訪、投訴管理、諮詢管理、報修管理等

KM(Knowledge Managment):知識管理

 

10六、請在數據庫中設計表來保存一個樹狀結構的公司組織結構

參考呼叫中心項目的代碼和板書。

 

10七、下面程序的執行結果是什麼?

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

答案:

200,100

 

解答:結構體是複製傳遞的。

 

10八、在Windows命令行中敲入下面的指令各有什麼反應(傳智播客.Net培訓班原創模擬題)

cd ..

 

notepad

cmd

ipconfig

dir

 

答案:

cd ..:進入上一級目錄

notepad:打開記事本

cmd:啓動另一個命令行

ipconfig:打印網絡設置信息

dir:顯示當前目錄下的文件

 

10九、下列這些軟件用過哪些?他們是用來作什麼的?(傳智播客.Net培訓班原創模擬題)

TypeAndRun、FoxMail、Reflector、UltraEdit、VSS、VirtualPC、VMWare

參考答案:

TypeAndRun:快速經過敲命令的方式啓動其餘程序的工具。

FoxMail:郵件收發客戶端

Reflector:.net程序反編譯工具

UltraEdit:高級文本編輯器

VSS:源代碼管理工具

VirtualPC:在一臺計算機中虛擬出另一個計算機的軟件,是微軟的產品

VMWare:和VirtualPC同樣,也是一種虛擬機軟件

 

1十、開放式問題:若是程序連不上SQLServer數據庫服務器服務器,你會怎麼排除這個故障?(傳智播客.Net培訓班原創模擬題)

參考解答:首先ping一下服務器IP,看是否可以 ping通,若是不能ping通,則看是否網絡有問題;若是能ping通,再telnet一下服務器的1433端口,看是否可以連通;若是不能連通則可能 是SQLServer服務停掉了或者是服務器上的防火牆封掉了1433端口;若是能連通再檢查是否是本地程序的問題、驅動的問題。

 

1十一、下面的IP地址有什麼含義?(傳智播客.Net培訓班原創模擬題)

127.0.0.1:本地迴環地址(LoopBack),localhost

0.0.0.0:監聽全部的網卡。AnyIP。

255.255.255.0

 

1十二、不用JQuery等框架實現AJAX無刷新登陸。

提示:用純XMLHttpRequest實現。

11三、單點登陸。

11四、Http狀態碼各是什麼意思。

301 :重定向
404 :頁面不錯在

500:服務器內部錯誤

11五、 對html文本框進行賦值的JQuery語句,對html文本框進行取值的JQuery語句,對TextBox服務端控件進行取值的語句JQuery。

11六、IE和FireFox的不一樣,IE6和IE8的不一樣。JQuery

XMLHttpRequest。不一樣瀏覽器實現AJAX的代碼是不同的。InnerHTML。

CSS、Javascript、dom。

咱們項目開發中爲了不這些跨瀏覽器兼容的問題,就是用JQuery框架,他幫咱們屏蔽了瀏覽器的差別。

 

說說在軟件設計中你遇到的以空間換時間的例子?Cache、索引、簡繁轉換用Dictionary。

 

機試題:

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

*******

*****

***

*

  static void Main(string[] args)

        {

            while (true

            { 

                Console.Write("請輸入行數:範圍3-21,輸入0退出程序。");

                int line = 0; 

                if (!Int32.TryParse(Console.ReadLine(), out line)) 

                { 

                    Console.WriteLine("請輸入正確的行數!");

                    continue

                } 

                if (line == 0) 

                {

                    Console.WriteLine("退出!");

                    break

                } 

                else if (!(line > 2 && line < 22)) 

                {

                    Console.WriteLine("非法行數!請輸入正確的行數!");

                    continue

                } 

                for (int i = 0; i < line; i++) 

                { 

                    int j = 0; 

                    for (; j < i; j++) 

                    { 

                        Console.Write(" ");

                    } 

                    for (int k = j; k < line; k++) 

                    { 

                        Console.Write("* "); 

                    } 

                    Console.WriteLine();

                } 

            }

        }

 

二、現有1~100共一百個天然數,已隨機放入一個有98個元素的數組a[98]。要求寫出一個儘可能簡單的方案,找出沒有被放入數組的那2個數,並在屏幕上打印這2個數。注意:程序不用實現天然數隨機放入數組的過程。

  static void Main(string[] args)

        {

            while (true

            {

                int[] arry = new int[98];

                Random rd = new Random();

                List<int> temp = new List<int>();

                //隨機產生98個1-100天然數

                while (temp.Count < 98)

                {

                    int result = rd.Next(1, 101);//隨機產生1~100隨機數;

                    if (temp.Contains(result))

                    {

                        continue;

                    }

                    temp.Add(result);

                }

                //將98個數填充到數組中;

                for (int i = 0; i < 98; i++)

                {

                    arry[i] = temp[i];

                }

 

                ///*強烈推薦這種作法開始*/

                ////標識爲1

                int[] arrytemp = new int[101];

                for (int i = 0; i < 98; i++)

                {

                    arrytemp[arry[i]] = 1;//給98個天然數標識;

 

                }

                for (int i = 1; i <= 100; i++)

                {

                    if (arrytemp[i] == 1)

                    {

                        continue;

                    }

                    Console.WriteLine(i);

                }

                /*強烈推薦這種作法結束*/

 

 

                /*如下通常的作法,我不推薦。。。。*/

                /*如下通常的作法,我不推薦。。。。*/

                /*如下通常的作法,我不推薦。。。。*/

                /*如下通常的作法,我不推薦。。。。*/

                /*如下通常的作法,我不推薦。。。。*/

                //定義一個泛型數組

                List<int> aa = new List<int>();

 

                //賦值1-100天然數

                for (int i = 1; i <= 100; i++)

                {

                    aa.Add(i);

                }

 

                //若是隨機產生的98個天然數存在上面定義泛型數組中,將它移除;

                for (int i = 0; i < 98; i++)

                {

                    if (aa.Contains(arry[i]))

                    {

                        aa.Remove(arry[i]);

                    }

                }

                //打印這兩個數

                foreach (var item in aa)

                {

                    Console.WriteLine(item);

                }

                Console.ReadKey();

 

     

 

                

            }

        }

 

三、一個文本文件含有以下內容:

4580616022644994|3000|趙濤

4580616022645017|6000|張屹

4580616022645090|3200|鄭欣夏

上述文件每行爲一個轉帳記錄,第一列表示賬號,第二列表示金額,第三列表示開戶人姓名。

建立一張數據庫表(MS SQLServer數據庫,表名和字段名自擬),請將上述文件逐條插入此表中。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data.SqlClient;

using System.Diagnostics;

 

namespace 從文本中提取數據到數據庫中

{

    class Program

    {

 

        static void Main(string[] args)

        {

            //項目中的Programe.cs文件必須加上如下神奇的代碼,對數據庫的操做才能生效

            string dataDir = AppDomain.CurrentDomain.BaseDirectory;

            if (dataDir.EndsWith(@"\bin\Debug\")

                || dataDir.EndsWith(@"\bin\Release\"))

            {

                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;

                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);

            }

 

            //啓用秒錶來計時

            Stopwatch timer = new Stopwatch();

            timer.Start();

 

 

            string[] lines = System.IO.File.ReadAllLines(@"D:\轉帳記錄.txt", Encoding.Default);

            for (int i = 0; i < lines.Length; i++)

            {

                string[] str=lines[i].Split('|');

 

                using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;

AttachDBFilename=|DataDirectory|\ZhuanZhang.mdf;Integrated Security=True;User Instance=True"))

                {

                    conn.Open();

                    using (SqlCommand cmd = conn.CreateCommand())

                    {

                        cmd.CommandText = "Insert into T_ZhuanZhang (CardNum,Money,Name) values (@CardNum,@Money,@Name)";

                        cmd.Parameters.Add(new SqlParameter("CardNum", str[0]));

                        cmd.Parameters.Add(new SqlParameter("Money", str[1]));

                        cmd.Parameters.Add(new SqlParameter("Name", str[2]));

                        cmd.ExecuteNonQuery();

                    }

                }

            }

 

            Console.WriteLine("數據導入成功!");

            timer.Stop();

            Console.WriteLine(timer.Elapsed);

            Console.ReadKey();

 

 

        }

    }

}

 

四、一個文本文件含有以下內容,分別表示姓名和成績:

張三 90

李四 96

王五 78

趙六 82

 

提供用戶一個控制檯界面,容許用戶輸入要查詢的姓名,輸入姓名而且按回車之後,打印出此人的成績,若是不輸入姓名直接按回車則顯示全部人的姓名以及成績。(注意:不能使用數據庫)

相關文章
相關標籤/搜索