1、簡述 private、 protected、 public、 internal 修飾符的訪問權限。javascript
private : 私有成員, 在類的內部才能夠訪問。public : 公共成員,徹底公開,沒有訪問限制html
protected : 保護成員,該類內部和繼承類中能夠訪問。 internal: 當前程序集內能夠訪問。前端
2、ADO.NET中的五個主要對象java
Connection:主要是開啓程序和數據庫之間的鏈接。沒有利用鏈接對象將數據庫打開,是沒法從數據庫中取得數據的。Close和Dispose的區別,Close之後還能夠Open,Dispose之後則不能再用。ios
Command:主要能夠用來對數據庫發出一些指令,例如能夠對數據庫下達查詢、新增、修改、刪除數據等指令,以及調用存在數據庫中的存儲過程等。這個對象是架構在Connection 對象上,也就是Command 對象是透過鏈接到數據源。c++
DataAdapter:主要是在數據源以及DataSet 之間執行數據傳輸的工做,它能夠透過Command 對象下達命令後,並將取得的數據放入DataSet 對象中。這個對象是架構在Command對象上,並提供了許多配合DataSet 使用的功能。程序員
DataSet:這個對象能夠視爲一個暫存區(Cache),能夠把從數據庫中所查詢到的數據保留起來,甚至能夠將整個數據庫顯示出來,DataSet是放在內存中的。DataSet 的能力不僅是能夠儲存多個Table 而已,還能夠透過DataAdapter對象取得一些例如主鍵等的數據表結構,並能夠記錄數據表間的關聯。DataSet 對象能夠說是ADO.NET 中重量級的對象,這個對象架構在DataAdapter對象上,自己不具有和數據源溝通的能力;也就是說咱們是將DataAdapter對象當作DataSet 對象以及數據源間傳輸數據的橋樑。DataSet包含若干DataTable、DataTableTable包含若干DataRow。web
DataReader:當咱們只須要循序的讀取數據而不須要其它操做時,可使用DataReader 對象。DataReader對象只是一次一筆向下循序的讀取數據源中的數據,這些數據是存在數據庫服務器中的,而不是一次性加載到程序的內存中的,只能(經過遊標)讀取當前行的數據,並且這些數據是隻讀的,並不容許做其它的操做。由於DataReader 在讀取數據的時候限制了每次只讀取一筆,並且只能只讀,因此使用起來不但節省資源並且效率很好。使用DataReader 對象除了效率較好以外,由於不用把數據所有傳回,故能夠下降網絡的負載。面試
ADO.NET 使用Connection 對象來鏈接數據庫,使用Command 或DataAdapter對象來執行SQL語句,並將執行的結果返回給DataReader 或 DataAdapter ,而後再使用取得的DataReader 或DataAdapter 對象操做數據結果。ajax
3、列舉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是有瀏覽器參與的,因此在地址欄中能夠看到地址的變化。
4、C#中的委託是什麼?事件是否是一種委託?事件和委託的關係。
委託能夠把一個方法做爲參數代入另外一個方法。
委託能夠理解爲指向一個函數的指針。
委託和事件沒有可比性,由於委託是類型,事件是對象,下面說的是委託的對象(用委託方式實現的事件)和(標準的event方式實現)事件的區別。事件的內部是用委託實現的。由於對於事件來說,外部只能「註冊本身+=、註銷本身-=」,外界不能夠註銷其餘的註冊者,外界不能夠主動觸發事件,所以若是用Delegate就無法進行上面的控制,所以誕生了事件這種語法。事件是用來閹割委託實例的,類比用一個自定義類閹割List。事件只能add、remove本身,不能賦值。事件只能+=、-=,不能= 。加分的補充回答:事件內部就是一個private的委託和add、remove兩個方法。
面試聊:用Reflector查看.Net的類的內部實現,解決問題。
5、override與重載(overload)的區別
重載是方法的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要。重載(overload)是面向過程的概念。
Override 是進行基類中函數的重寫。Override是面向對象的概念
6、C#中索引器是否只能根據數字進行索引?是否容許多個索引器參數?
參數的個數和類型都是任意的。加分的補充回答:用reflector反編譯能夠看出,索引器的內部本質上就是set_item、get_item方法。
7、屬性和public字段的區別是什麼?調用set方法爲一個屬性設值,而後用get方法讀取出來的值必定是set進去的值嗎?
屬性能夠對設值、取值的過程進行非法值控制,好比年齡禁止設值負數,而字段則不能進行這樣的設置。雖然通常狀況下get讀取的值就是set設置的值,可是可讓get讀取的值不是set設置的值的,極端的例子。Public Age{get{return 100;}set{}}。加分的補充回答:用reflector反編譯能夠看出,屬性內部本質上就是set_***、get_***方法。
class Person
{ public int Age
{
get {return 3;}
set {}
}
} Person p1 = new Person();
p1.Age = 30;
p1.Age++;
Console.Write(p1.Age);//輸出3
8、三層架構
一般意義上的三層架構就是將整個業務應用劃分爲:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。 區分層次的目的即爲了「高內聚,低耦合」的思想。
表現層(UI):通俗講就是展示給用戶的界面,即用戶在使用一個系統的時候的所見所得。
業務邏輯層(BLL):針對具體問題的操做,也能夠說是對數據層的操做,對數據業務邏輯處理。
數據訪問層(DAL):該層所作事務直接操做數據庫,針對數據的增添、刪除、修改、更新、查找等每層之間是一種垂直的關係。
三層結構是N層結構的一種,通常來講,層次之間是向下依賴的,下層代碼未肯定其接口(契約)前,上層代碼是沒法開發的,下層代碼接口(契約)的變化將使上層的代碼一塊兒變化。 優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點: 增長成本。
9、MVC模式(*)
MVC(Model View Controller)模型-視圖-控制器
aspx就是View,視圖;Model:DataSet、Reader、對象;Controller:cs代碼。
MVC是典型的平行關係,沒有說誰在上誰在下的關係,模型負責業務領域的事情,視圖負責顯示的事情,控制器把數據讀取出來填充模型後把模型交給視圖去處理。而各類驗證什麼的應該是在模型裏處理了。它強制性的使應用程序的輸入、處理和輸出分開。MVC最大的好處是將邏輯和頁面分離。
10、什麼是裝箱(boxing)和拆箱(unboxing)?(*)
裝箱:從值類型接口轉換到引用類型。 拆箱:從引用類型轉換到值類型。
object obj = null;//引用類型
obj = 1;//裝箱,boxing。把值類型包裝爲引用類型。 int i1 = (int)obj;//拆箱。unboxing
11、什麼叫應用程序域(AppDomain) (*)
一種邊界,它由公共語言運行庫圍繞同一應用程序範圍內建立的對象創建(即,從應用程序入口點開始,沿着對象激活的序列的任何位置)。
應用程序域有助於將在一個應用程序中建立的對象與在其餘應用程序中建立的對象隔離,以使運行時行爲能夠預知。
在一個單獨的進程中能夠存在多個應用程序域。應用程序域能夠理解爲一種輕量級進程。起到安全的做用。佔用資源小。
12、CTS、CLS、CLR分別做何解釋(*)
CTS:Common Type System 通用系統類型。Int3二、Int16→int、String→string、Boolean→bool
CLS:Common Language Specification 通用語言規範。不一樣語言語法的不一樣。
CLR:Common Language Runtime 公共語言運行時,就是.Net提供的那些 類。
13、在dotnet中類(class)與結構(struct)的異同?
Class能夠被實例化,屬於引用類型,是分配在內存的堆上的。類是引用傳遞的。
Struct屬於值類型,是分配在內存的棧上的。結構體是複製傳遞的。加分的回答:Int3二、Boolean等都屬於結構體。
14、堆和棧的區別?
棧是編譯期間就分配好的內存空間,所以你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數等都在棧內存中。
堆是程序運行期間動態分配的內存空間,你能夠根據程序的運行狀況肯定要分配的堆內存的大小。
15、能用foreach遍歷訪問的對象的要求
須要實現IEnumerable接口或聲明GetEnumerator方法的類型。
16、GC是什麼? 爲何要有GC?
GC是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。GC只能處理託管內存資源的釋放,對於非託管資源則不能使用GC進行回收,必須由程序員手工回收,一個例子就是FileStream或者SqlConnection須要程序員調用Dispose進行資源的回收。
要請求垃圾收集,能夠調用下面的方法:GC.Collection()通常不須要手動調用GC.Collection()。加分的回答:有一次用OLEAutomation的方式操做Excel的時候,Excel常常不能正常退出,在MSDN網站上找到官方解答說要調用一下GC.Collection(),至於爲何這樣就能夠也沒找到答案。
17、String s = new String("xyz");建立了幾個String Object?
兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象。
18、值類型和引用類型的區別?
1.將一個值類型變量賦給另外一個值類型變量時,將複製包含的值。引用類型變量的賦值只複製對對象的引用,而不復制對象自己。
2.值類型不可能派生出新的類型:全部的值類型均隱式派生自 System.ValueType。但與引用類型相同的是,結構也能夠實現接口。
3.值類型不可能包含 null 值:然而,可空類型功能容許將 null 賦給值類型。
4.每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。
19、C#中的接口和類有什麼異同。
不一樣點:1.不能直接實例化接口。 2.接口不包含方法的實現。
3.接口能夠多繼承,類只能單繼承。 4.類定義可在不一樣的源文件之間進行拆分。
相同點:
接口、類和結構均可以從多個接口繼承。
接口相似於抽象基類:繼承接口的任何非抽象類型都必須實現接口的全部成員。
接口和類均可以包含事件、索引器、方法和屬性。
20、abstract class和interface有什麼區別?
相同點: 都不能被直接實例化,均可以經過繼承實現其抽象方法。
不一樣點: 接口支持多繼承;抽象類不能實現多繼承。
接口只能定義行爲;抽象類既能夠定義行爲,還可能提供實現。
接口能夠用於支持回調(CallBack);抽象類不能實現回調,由於繼承不支持。
接口只包含方法(Method)、屬性(Property)、索引器(Index)、事件(Event)的簽名,但不能定義字段和包含實現的方法;
抽象類能夠定義字段、屬性、包含有實現的方法。
接口能夠做用於值類型(Struct)和引用類型(Class);抽象類只能做用於引用類型。例如,Struct就能夠繼承接口,而不能繼承類。
加分的補充回答:講設計模式的時候SettingsProvider的例子。
21、是否能夠繼承String類? String類是sealed類故不能夠繼承。
22、try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行?
會執行,在return前執行。
加分的補充回答(也助記):讀取數據庫中數據的條數的程序
public int QueryCount()
{…..
try {return cmd.ExecuteScalar();}
finally{ cmd.Dispose(); }
}
若是C#設計的是先執行cmd.Dispose()再執行return就會出現return執行失敗了,由於cmd已經Dispose了。
23、new 關鍵字用法(*)
new 運算符 用於建立對象和調用構造函數。
new 修飾符 用於向基類成員隱藏繼承成員。
new 約束 用於在泛型聲明中約束可能用做類型參數的參數的類型。
24、如何把一個Array複製到ArrayList裏(*)
實現1 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(); list.AddRange(s);
實現2 string[] s ={ "111", "22222" }; ArrayList list = new ArrayList(s);
25、描述線程與進程的區別?(*)
1.線程(Thread)與進程(Process)兩者都定義了某種邊界,不一樣的是進程定義的是應用程序與應用程序之間的邊界,不一樣的進程之間不能共享代碼和數據空間,而線程定義的是代碼執行堆棧和執行上下文的邊界。
2.一個進程能夠包括若干個線程,同時建立多個線程來完成某項任務,即是多線程。而同一進程中的不一樣線程共享代碼和數據空間。用一個比喻來講,若是一個家庭表明一個進程,在家庭內部,各個成員就是線程,家庭中的每一個成員都有義務對家庭的財富進行積累,同時也有權利對家庭財富進行消費,當面對一個任務的時候,家庭也能夠派出幾個成員來協同完成,而家庭以外的人則沒有辦法直接消費不屬於本身家庭的財產。
26、什麼是強類型,什麼是弱類型?哪一種更好些?爲何?
C#中:int i=3;i="a";不能夠 JavaScript中:var i=3;i="a";能夠
強類型是在編譯的時候就肯定類型的數據,在執行時類型不能更改,而弱類型在執行的時候纔會肯定類型。沒有好很差,兩者各有好處,強類型安全,由於它事先已經肯定好了,並且效率高。弱類型更靈活,可是效率低,並且出錯機率高。通常用於編譯型編程語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運行的時候容易出現錯誤,但它靈活,多用於解釋型編程語言,如javascript,vb等
27、什麼是反射?
程序集包含模塊,而模塊又包括類型,類型下有成員,反射就是管理程序集,模塊,類型的對象,它可以動態的建立類型的實例,設置現有對象的類型或者獲取現有對象的類型,能調用類型的方法和訪問類型的字段屬性。它是在運行時建立和使用類型實例
28、int、DateTime、string是否能夠爲null?
int、DateTime不能,由於其爲Struct類型,而結構屬於值類型,值類型不能爲null,只有引用類型才能被賦值null。string能夠爲null。
29、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");
31、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是用來顯示數據的
32、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)
解答3:ROW_NUMBER(推薦)
34.面向對象的語言具備? 答:封裝性、繼承性、多態性。(不要背,腦子中要有聯想。)
35.在.Net中全部可序列化的類都被標記爲_____? 答:[serializable]
36.在.Net託管代碼中咱們不用擔憂內存漏洞,這是由於有了______? 答:GC。
38、什麼是code-Behind技術。
就是代碼隱藏,在ASP.NET中經過ASPX頁面指向CS文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web應用程序的建立。好比分工,美工和編程的能夠個幹各的,不用再像之前asp那樣都代碼和html代碼混在一塊兒,難以維護。
39、接口是一種引用類型,在接口中能夠聲明( a),但不能夠聲明公有的域或私有的成員變量。
a) 方法、屬性、索引器和事件; c) 索引器和字段; d) 事件和字段;
41. 下列關於C#中索引器理解正確的是(c )
a) 索引器的參數必須是兩個或兩個以上 b) 索引器的參數類型必須是整數型
c) 索引器沒有名字 d) 以上皆非
40. 在ADO.NET中,對於Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是(c)。
a) insert、update、delete等操做的Sql語句主要用ExecuteNonQuery()方法來執行; b) ExecuteNonQuery()方法返回執行Sql語句所影響的行數。 c) Select操做的Sql語句只能由ExecuteReader()方法來執行; d) ExecuteReader()方法返回一個DataReder對象; 解答:ExecuteScalar→select getdate()。
37、什麼叫應用程序域?什麼是受管制的代碼?什麼是託管代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?CTS、CLS和CLR分別做何解釋?
應用程序域爲安全性、可靠性、版本控制以及卸載程序集提供了隔離邊界。應用程序域一般由運行庫宿主建立,運行庫宿主負責在運行應用程序以前引導公共語言運行庫。應用程序域提供了一個更安全、用途更廣的處理單元,公共語言運行庫可以使用該單元提供應用程序之間的隔離。
受管制的代碼:在.Net環境中運行的任何代碼都是受管制的代碼(managed code),.Net外部的代碼也運行在windows上,這些代碼稱爲未受管制的代碼(unmanaged code)。
使用基於公共語言運行庫的語言編譯器開發的代碼稱爲託管代碼;託管代碼具備許多優勢,例如:跨語言集成、跨語言異常處理、加強的安全性、版本控制和部署支持、簡化的組件交互模型、調試和分析服務等。
強類型語言是可以禁止任何違反類型系統的代碼的語言,或者說是可以捕獲全部違反類型系統的錯誤的語言。咱們說C++相對於C是強類型的,是由於C++禁止了一些C中的隱式轉換,好比將void*轉換爲任意的指針類型。
裝箱和拆箱使值類型可以被視爲對象。對值類型裝箱將把該值類型打包到 Object 引用類型的一個實例中。這使得值類型能夠存儲於垃圾回收堆中。拆箱將從對象中提取值類型。
每一個類型成員都有一個惟一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。只要簽名不一樣,就能夠在一種類型內定義具備相同名稱的多種方法。當定義兩種或多種具備相同名稱的方法時,就稱做重載。
CTS通用類型系統 (common type system) :一種肯定公共語言運行庫如何定義、使用和管理類型的規範。
CLR公共語言運行庫:.NET Framework 提供了一個稱爲公共語言運行庫的運行時環境,它運行代碼並提供使開發過程更輕鬆的服務。
CLS公共語言規範:要和其餘對象徹底交互,而無論這些對象是以何種語言實現的,對象必須只向調用方公開那些它們必須與之互用的全部語言的通用功能。爲此定義了公共語言規範 (CLS),它是許多應用程序所需的一套基本語言功能。
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只是爲了生成結構化文檔;
45、如下的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;}
48.StringBuilder 和 String 的區別?
答:String 在進行運算時(如賦值、拼接等)會產生一個新的實例,而 StringBuilder 則不會。因此在大量字符串拼接或頻繁對某一字符串進行操做時最好使用 StringBuilder,不要使用 String
若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.NET框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。
50.請敘述const與readonly的區別。(*)
const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。
const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。由於它是在編譯時就須要徹底評估。
const成員可使用另外一個const成員來初始化,前提是二者之間沒有循環依賴。
readonly在運行期評估賦值,使咱們得以在確保「只讀訪問」的前提下,把object的初始化動做推遲到運行期進行。
readonly 關鍵字與 const 關鍵字不一樣: const 字段只能在該字段的聲明中初始化。readonly 字段能夠在聲明或構造函數中初始化。所以,根據所使用的構造函數,readonly 字段可能具備不一樣的值。另外,const 字段是編譯時常數,而 readonly 字段可用於運行時常數。
readonly 只能在聲明時或者構造函數裏面初始化,而且不能在 static 修飾的構造函數裏面。
47. 聲明一個委託public delegate int myCallBack(int x); 則用該委託產生的回調方法的原型應該是(b )。
a) void myCallBack(int x) ; b) int receive(int num) ;
c) string receive(int x) ; d) 不肯定的;
51. 請解釋ASP。NET中的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便可禁用。最有力的舉例子:Label、TextBox在禁用ViewState後不一樣的表現來講明。
53、你對web service的體會?
答:若是本身寫的一些程序也但願別人能夠經過Web服務來使用,也能夠把本身編寫的方法貼上標籤[WebMethed]來實現Web 服務。[是當編寫程序時,但願實現一些別的網站已經實現過的,也用Web服務可視成XML語言的編碼。可使用別人的編碼生成的XML找到本身須要的信息,來實現本身編寫的程序的一些功能。SOAP、WSDL。
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)如下關於ref和out的描述哪些項是正確的?(多選) ( 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)一個類能夠有多個基類和多個基接口;
54您在什麼狀況下會用到虛方法?它與接口有什麼不一樣?
答案:子類從新定義父類的某一個方法時,必須把父類的方法定義爲virtual
在定義接口中不能有方法體,虛方法能夠。
實現時,子類能夠不從新定義虛方法,但若是一個類繼承接口,那必須實現這個接口。
57、DataReader和DataSet的異同?
DataReader使用時始終佔用SqlConnection,在線操做數據庫;每次只在內存中加載一條數據,因此佔用的內存是很小的;是隻進的、 只讀的。
DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接(非鏈接模式)
DataSet將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行 回傳更新操做(動態操做讀入到內存的數據)
58、public static const; int A = 1;這段代碼有錯誤麼?
錯誤:const不能被修飾爲static ;由於定義爲常量 (const )後就是靜態的(static )。
59傳入某個屬性的set方法的隱含參數的名稱是什麼?
value,它的類型和屬性所聲名的類型相同。
60、C#支持多重繼承麼?類之間不支持,接口之間支持。類對接口叫作實現,不叫繼承。
61、C#中全部對象共同的基類是什麼? System.Object
62、經過超連接怎樣傳遞中文參數?
答:用URL編碼,經過QueryString傳遞,用urlencode編碼 用urldecode解碼
63、string、String;int、Int32;Boolean、bool的區別
String、Int3二、Boolean等都屬於.Net中定義的類,而string、int、bool至關於C#中對這些類定義的別名。CTS。
64、Server.Transfer和Response.Redirect的區別是什麼?(常考)
答: Server.Transfer僅是服務器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向後的地址;Response.Redirect則是徹底的跳轉,瀏覽器將會獲得跳轉的地址,並從新發送請求連接。這樣,從瀏覽器的地址欄中能夠看到跳轉後的連接地址。
Server.Transfer是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而後把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,因此它的地址欄中仍是原來的地址。 這個過程當中瀏覽器和Web服務器之間通過了一次交互。
Response.Redirect就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器從新去請求那個地址,通常來講瀏覽器會用剛纔請求的全部參數從新請求。這個過程當中瀏覽器和Web服務器之間通過了兩次交互。
65、不是說字符串是不可變的嗎?string s="abc";s="123"不就是變了嗎?
String是不可變的在這段代碼中,s原先指向一個String對象,內容是 "abc",而後咱們將s指向"123",那麼s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另外一個 String對象,內容爲"123",原來那個對象還存在於內存之中,只是s這個引用變量再也不指向它了。
66、是否能夠從一個static方法內部發出對非static方法的調用?
不能夠。由於非static方法是要與對象關聯在一塊兒的,必須建立一個對象後,才能夠在該對象上進行方法調用,而static方法調用時不須要建立對象,能夠直接調用。也就是說,當一個static方法被調用時,可能尚未建立任何實例對象,若是從一個static方法中發出對非static方法的調用,那個非static方法是關聯到哪一個對象上的呢?這個邏輯沒法成立,因此,一個static方法內部不能發出對非static方法的調用。
79、Http默認的端口號是(80)、Ftp默認的端口號是(21)、SQLServer的默認端口號是(1433)
68說出一些經常使用的類、接口,請各舉5個
要讓人家感受你對.Net開發很熟,因此,不能僅僅只列誰都能想到的那些東西,要多列你在作項目中涉及的那些東西。就寫你最近寫的那些程序中涉及的那些類。
經常使用的類:StreamReader、WebClient、Dictionary<K,V>、StringBuilder、SqlConnection、FileStream、File、Regex、List<T> 經常使用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary 要出乎意料!不要僅僅完成任務!
67、.Net中會存在內存泄漏嗎,請簡單描述。 (*)
所謂內存泄露就是指一個再也不被程序使用的對象或變量一直被佔據在內存中。.Net中有垃圾回收機制,它能夠保證一對象再也不被引用的時候,即對象編程了孤兒的時候,對象將自動被垃圾回收器從內存中清除掉。雖然.Net能夠回收無用的對象,可是.Net仍然存在因爲使用不當致使的內存泄露問題。.Net中的內存泄露的狀況:長生命週期的對象持有短生命週期對象的引用就極可能發生內存泄露,儘管短生命週期對象已經再也不須要,可是由於長生命週期對象持有它的引用而致使不能被回收,這就是.Net中內存泄露的發生場景,通俗地說,就是程序員可能建立了一個對象,之後一直再也不使用這個對象,這個對象卻一直被引用,即這個對象無用可是卻沒法被垃圾回收器回收的,這就是.Net中可能出現內存泄露的狀況,例如,緩存系統,咱們加載了一個對象放在緩存中(例如放在一個全局Dictionary對象中),而後一直再也不使用它,這個對象一直被緩存引用,但卻再也不被使用。
formManager
{ public static IList<Form> forms = new .....; }
擴展:使用弱引用那麼及時被引用也能夠被回收。
69、BS與CS的聯繫與區別。
C/S是Client/Server的縮寫。客戶端須要安裝專用的客戶端軟件。
B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器。在這種結構下,用戶界面徹底經過WWW瀏覽器實現,一部分事務邏輯在前端實現,可是主要邏輯在服務器端實現。瀏覽器經過Web Server 同數據庫進行數據交互。
C/S 與 B/S 區別:
1).硬件環境不一樣:
C/S 通常創建在專用的網絡上, 小範圍裏的網絡環境, 局域網之間再經過專門服務器提供鏈接和數據交換服務.
B/S 創建在廣域網之上的, 沒必要是專門的網絡硬件環境,例與電話上網, 租用設備. 信息本身管理. 有比C/S更強的適應範圍, 通常只要有操做系統和瀏覽器就行
2).對安全要求不一樣
C/S 通常面向相對固定的用戶羣, 對信息安全的控制能力很強. 通常高度機密的信息系統採用C/S 結構適宜. 能夠經過B/S發佈部分可公開信息.
B/S 創建在廣域網之上, 對安全的控制能力相對弱, 可能面向不可知的用戶。
3).處理問題不一樣
C/S 程序能夠處理用戶面固定, 而且在相同區域, 安全要求高需求, 與操做系統相關. 應該都是相同的系統。C/S的客戶端因爲是本地程序,所以和本地硬件、程序的交互性很強,好比能夠控制本機的其餘程序、能夠讀寫本地磁盤文件、能夠與硬件交互。
B/S 創建在廣域網上, 面向不一樣的用戶羣, 分散地域, 這是C/S沒法做到的. 與操做系統平臺關係最小,正應爲如此B/S很難和本地硬件、程序、文件進行交互,好比很難控制本機的其餘程序、很難讀寫本地磁盤文件、很難與硬件交互,固然能夠用ActiveX技術解決,好比網銀等就是這麼解決的,這樣作的問題就是可能會被客戶拒絕,並且只侷限於Windows操做系統。
C/S也分爲兩層架構和三層架構。兩層架構:客戶端程序程序直連數據庫;三層架構:客戶端訪問服務端的服務,主要邏輯代碼寫在服務端的服務中,而後服務端服務再去訪問數據庫。
70、編寫一個單例(Singleton)類。
把構造函數設置爲private,設置一個public、static的對象實例
public FileManager
{ private FileManager(){}
public static FileManager Instance = new FileManager(); } 擴展:搜「C# Singleton」
71、什麼是sql注入?如何避免sql注入?
用戶根據系統的程序構造非法的參數從而致使程序執行不是程序員指望的惡意SQL語句。使用參數化的SQL就能夠避免SQL注入。 舉例子,擺事實! 1' or 1=1
72、數據庫三範式是什麼? 參考ppt
73、說出一些數據庫優化方面的經驗?
索引內部原理:想象成Dictionary,插入、刪除、更新的速度慢了,加上索引也多佔用了空間,查詢的速度快了。加上索引之後速度提高很是明顯。
(1)在常常檢索的字段上(select * from Person where Name=@Name)使用索引提升查詢速度。(2)select中只列出必要的字段,而不是*。(3)避免隱式類型轉換形成的全表掃描,在索引上使用函數也會形成全表掃描(由於索引只是爲字段創建的,一旦使用表達式或者函數,那麼索引就是失效了,固然也可使用「函數索引」、「表達式索引」解決這個問題),使用索引不必定能提升查詢速度。(4)避免在索引列上使用計算(where Name+'A'=@MyName)
加分的回答:不進行無心義優化,根據性能查看器的報表,對最耗時的SQL進行優化。
74、什麼是數據庫事務?
事務三個特性:一致性、原子性、隔離性。
幾個SQL語句,要麼所有執行成功,要麼所有執行失敗。舉例就用最經典的銀行轉帳的例子就行,而後再舉一個項目中用的例子。事務的三個操做:Begin、Commit、RollBack。
取剛插入數據的id值,就要用事務來隔離:Insert 和select top 1 id from ....
75、談談你對設計模式的理解
世界上本沒有模式,用的人多了,也就有了模式。不用刻意記每種模式的名字,手中無模式,心中有模式。
大部分設計模式就是接口、抽象類的一個組合。ADO.Net基於接口編程,SafeDbCommand、SafeConnection。SettingsProvider。不必記模式的名字。
76、談談ViewState。談談對ASP.Net原理的理解。談談ASP.Net生命週期。
Label、Textbox在禁用ViewState的時候自增的不一樣表現
Http是無狀態的,WebForm爲了實現基於http的「有狀態」從而簡化開發,ViewState用來在兩次請求間保持狀態。頁面返回前將界面的狀態序列化到ViewState中,這樣就將狀態保存在了瀏覽器中,下次頁面提交的時候會順便再將ViewState提交到服務器,這樣服務器就根據ViewState還原了狀態,這樣WebForm開發就像有狀態同樣了。談談自定義AutoInc控件。
77、post、get的區別
get的參數會顯示在瀏覽器地址欄中,而post的參數不會顯示在瀏覽器地址欄中;
使用post提交的頁面在點擊【刷新】按鈕的時候瀏覽器通常會提示「是否從新提交」,而get則不會;
用get的頁面能夠被搜索引擎抓取,而用post的則不能夠;
用post能夠提交的數據量很是大,而用get能夠提交的數據量則很是小(2k),受限於網頁地址的長度。
用post能夠進行文件的提交,而用get則不能夠。
80、運算符++a表示(先將a加1,而後表達式的值爲a加1後的值),i++表示(表達式的值爲a,而後a加1)。
82、若是不用VisualStudio,用哪一個命令行編譯C#程序?(*)答:csc.exe。
83、下列哪一個名詞和WebService不直接相關?(B)
A、UDDI B、GUID C、WSDL D、SOAP
78、下面的程序執行結果是什麼?
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);
答案:
20
21 解釋:引用類型和值類型的區別。
SOAP和HTTP的關係:SOAP基於Http協議的,和普通網頁不一樣的是網頁返回HTML,SOAP則是符合SOAP協議的XML數據。
84、.Net Framework中的類是專門供C#調用的是嗎?
答:錯。VB.Net等語言均可以調用.Net Framework中的類。CTS、CLS。
85、開放性問題:說出儘量多的基於.Net Framework的語言。(*)
參考解答:C#、VB.Net、F#、PowerShell、IronPython、J#、Ruby.Net
86、.Net、ASP.Net、C#、VisualStudio之間的關係是什麼?
答:.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版這個免費版本。
87、AJAX解決什麼問題?如何使用AJAX?AJAX有什麼問題須要注意?項目中哪裏用到了AJAX?
答:AJAX解決的問題就是「無刷新更新頁面」,用傳統的HTML表單方式進行頁面的更新時,每次都要將請求提交到服務器,服務器返回後再重繪界面,這樣界面就會經歷:提交→變白→從新顯示這樣一個過程,用戶體驗很是差,使用AJAX則不會致使頁面從新提交、刷新。
AJAX最本質的實現是在Javascript中使用XMLHttpRequest進行Http的請求,開發中一般使用UpdatePanel、JQuery等方式簡化AJAX的開發,UpdatePanel的方式實現AJAX最簡單,可是數據通信量比較大,由於要來回傳整個ViewState,並且不靈活,對於複雜的需求則可使用JQuery提供的ajax功能。 UpdatePanel的內部原理。
AJAX最重要的問題是沒法跨域請求(www.rupeng.com →so.rupeng.com),也就是沒法在頁面中向和當前域名不一樣的頁面發送請求,可使用在當前頁面所在的域的服務端作代理頁面的方式解決。
88、NET經過對各語言先編譯成( IL),而後再執行時用( JIT)將其編譯成本地平臺代碼,來實現異構平臺下對象的互操做。(*)
89、編寫正則表達式驗證一個字符串是否爲Email。複習正則表達式部分的知識。
90、Application 、Cookie和 Session 兩種會話有什麼不一樣?
答:Application是用來存取整個網站全局的信息,而Session是用來存取與具體某個訪問者關聯的信息。
19.ASP.net的身份驗證方式有哪些?分別是什麼原理?
答:Windwos(默認)用IIS...From(窗體)用賬戶....Passport(密鑰)
20.什麼是Code-Behind技術? :代碼後植。(.CS文件和前臺頁面分,就叫Code-Behind)
21.在.net中,配件的意思是? :程序集。(中間語言,源數據,資源,裝配清單)
22.經常使用的調用WebService的方法有哪些?(傳輸的是XML)Http
答:1.使用WSDL.exe命令行工具。2.使用VS.NET中的Add Web Reference菜單選項
23..net Remoting 的工做原理是什麼(傳輸的是二進制)TCP?
答:服務器端向客戶端發送一個進程編號,一個程序域編號,以肯定對象的位置。
Remoting和WebService
24.在C#中,string str = null 與 string str = 「」 請儘可能使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度爲空字符串的內存空間。
25.請詳述在dotnet中類(class)與結構(struct)的異同?
答:Class能夠被實例化,屬於引用類型,是分配在內存的堆上的,Struct屬於值類型,是分配在內存的棧上的.
30.簡要談一下您對微軟.NET 構架下remoting和webservice兩項技術的理解以及實際中的應用。 ebservice主要是可利用HTTP,穿透防火牆,傳輸的是XML。而Remoting能夠利用TCP/IP,二進制傳送提升效率。
35.能用foreach遍歷訪問的對象須要實現IEnumerable 接口或聲明GetEnumerator 方法的類型。
39.啓動一個線程是用run()仍是start()?
答:啓動一個線程是調用start()方法,使線程所表明的虛擬處理機處於可運行狀態,這意味着它能夠由JVM調度並執行。這並不意味着線程就會當即運行。run()方法能夠產生必須退出的標誌來中止一個線程。
42.是否能夠繼承String類?答:String類是final類故不能夠繼承。
41.構造器Constructor是否可被override?
答:構造器Constructor不能被繼承,所以不能重寫Overriding,但能夠被重載Overloading。
40.接口是否可繼承接口? 抽象類是否可實現(implements)接口? 抽象類是否可繼承實體類(concrete class)?
答:接口能夠繼承接口。抽象類能夠實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
57.進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進程的資源。
58.堆和棧的區別?
棧:由編譯器自動分配、釋放。在函數體中定義的變量一般在棧上。
堆:通常由程序員分配釋放。用new、malloc等分配內存函數分配獲得的就是在堆上。
59.成員變量和成員函數前加static的做用?
答:它們被稱爲常成員變量和常成員函數,又稱爲類成員變量和類成員函數。分別用來反映類的狀態。好比類成員變量能夠用來統計類實例的數量,類成員函數負責這種統計的動做。
60.ASP。NET與ASP相比,主要有哪些進步?
答:asp解釋形(不會檢查錯誤碼,運行時再會報錯),aspx編譯型(編譯後再運行),性能提升,有利於保護源碼。
66.軟件開發過程通常有幾個階段?每一個階段的做用?
答:需求分析,架構設計,代碼編寫,QA,部署
63.請指出GAC的含義?答:全局程序集緩存。
73.什麼是Application Pool?答:Web應用,相似Thread Pool,提升併發性能。
74.什麼是虛函數?什麼是抽象函數?
答:虛函數:沒有實現的,可由子類繼承並重寫的函數。抽象函數:規定其非虛子類必須實現的函數,必須被重寫。
75.什麼是XML?
答:XML便可擴展標記語言,(應用配置文件)。eXtensible Markup Language.標記是指計算機所能理解的信息符號,經過此種標記,計算機之間能夠處理包含各類信息的文章等。如何定義這些標記,便可以選擇國際通用的標記語言,好比HTML,也可使用象XML這樣由相關人士自由決定的標記語言,這就是語言的可擴展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。
76.什麼是Web Service?UDDI?
答:Web Service即是基於網絡的、分佈式的模塊化組件,它執行特定的任務,遵照具體的技術規範,這些規範使得Web Service能與其餘兼容的組件進行互操做。
UDDI 的目的是爲電子商務創建標準;UDDI是一套基於Web的、分佈式的、爲Web Service提供的、信息註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的Web Service註冊,以使別的企業可以發現的訪問協議的實現標準。
82.C#中 property 與 attribute的區別,他們各有什麼用處,這種機制的好處在哪裏?
答:一個是屬性,用於存取類的字段,一個是特性,用來標識類,方法等的附加性質
83.XML 與 HTML 的主要區別
答:1. XML是區分大小寫字母的,HTML不區分。
2. 在HTML中,若是上下文清楚地顯示出段落或者列表鍵在何處結尾,那麼你能夠省略
或者之類的結束 標記。在XML中,絕對不能省略掉結束標記。
3. 在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個 / 字符做爲結尾。這樣分析器就知道不用 查找結束標記了。
4. 在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。
5. 在HTML中,能夠擁有不帶值的屬性名。在XML中,全部的屬性都必須帶有相應的值。
84.c#中的三元運算符是?答:?:。
85.當整數a賦值給一個object對象時,整數a將會被?答:裝箱。
86.類成員有_____種可訪問形式?答:this.;new Class().Method;
87.public static const int A=1;這段代碼有錯誤麼?是什麼?答:const不能用static修飾。
89.委託聲明的關鍵字是:delegate
90.用sealed修飾的類有什麼特色?答:密封,不能繼承。
91.在Asp.net中全部的自定義用戶控件都必須繼承自________?答:Control。
92.在.Net中全部可序列化的類都被標記爲_____? 答:[serializable]
93.在.Net託管代碼中咱們不用擔憂內存漏洞,這是由於有了______?答:GC。
120.重載與覆蓋的區別?
答:一、方法的覆蓋是子類和父類之間的關係,是垂直關係;方法的重載是同一個類中方法之間的關係,是水平關係
二、覆蓋只能由一個方法,或只能由一對方法產生關係;方法的重載是多個方法之間的關係。
三、覆蓋要求參數列表相同;重載要求參數列表不一樣。
四、覆蓋關係中,調用那個方法體,是根據對象的類型(對象對應存儲空間類型)來決定;重載關係,是根據調 用時的實參表與形參表來選擇方法體的。
94.rloaded的方法是能夠改變返回值的類型。
95.和&&的區別。&是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and).
96概描述一下ASP。NET服務器控件的生命週期
答:初始化 加載視圖狀態 處理回發數據 加載 發送回發更改通知 處理回發事件 預呈現 保存狀態 呈現 處置 卸載
97.ADO。NET相對於ADO等主要有什麼改進?
答:1:ado.net不依賴於ole db提供程序,而是使用.net託管提供的程序,2:不使用com3:不在支持動態遊標和服務器端遊 4:,能夠斷開connection而保留當前數據集可用 5:強類型轉換 6:xml支持
97.在.Net中,類System.Web.UI.Page 能夠被繼承麼?答:能夠。
98..net的錯誤處理機制是什麼?
答:.net錯誤處理機制採用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的Catch爲止。
99.利用operator聲明且僅聲明瞭==,有什麼錯誤麼?
答:要同時修改Equale和GetHash() ? 重載了"==" 就必須重載 "!="
100.可以實現容許被繼承,但不容許其中的某個方法被覆寫麼?
能夠,標記這個類爲public,並標記這個方法爲sealed.
11.c# 中全部對象共同的基類是:System.Object.
12.重載和覆寫有什麼區別:重載提供了對一個方法簽名的不一樣參數調用的實現。覆寫提供了子類中改變方法行爲的實現。
13.在方法定義中,virtual有什麼含義:被virtual修飾的方法能夠被子類覆寫。
14.可以將非靜態的方法覆寫成靜態方法麼?:不能,覆寫方法的簽名必須與被覆寫方法的簽名方法保持一致,除了將virtual改成override.
什麼是面向對象:面向對象OO = 面向對象的分析OOA + 面向對象的設計OOD + 面向對象的編程OOP;
通俗的解釋就是萬物皆對象,把全部的事物都看做一個個能夠獨立的對象(單元),它們能夠本身完成本身的功能,而不是像C那樣分紅一個個函數;
91、開放式問題:你常常訪問的技術類的網站是什麼?博客園(www.cnblogs.com)、csdn、codeplex、codeproject、msdn文檔、msdn論壇(遇到問題先到網上搜解決方案,還不行就問同事,同事也解決不了就去MSDN論壇提問,必定能獲得解決)
92、你對.net的GC的理解 GC是.Net的垃圾收集器,能夠進行內存資源的回收,程序員無需關心資源的回收,當一個對象沒有任何引用的時候就能夠被回收了。一個對象能夠被回收並不意味着必定會被當即回收,GC會選擇時機進行回收。能夠調用GC.Collect()讓GC當即回收。GC不能回收非託管資源,對於非託管資源通常都實現了IDisposable接口,而後使用using關鍵字進行資源的回收。
93、請寫一個SQL語句:從user表中取出name列中的起始字符是「北京」的所有記錄 select * from [user] wherer name like'北京%'
94、請你簡單的說明數據庫創建索引的優缺點
使用索引能夠加快數據的查詢速度,不過因爲數據插入過程當中會建索引,因此會下降數據的插入、更新速度,索引還會佔磁盤空間。
95、什麼是WEB服務控件?使用WEB服務控件有那些優點、劣勢?
web服務控件就是能夠在服務器執行的控件,優點在於能夠回傳數據(ViewState),帶有事件驅動(doPostBack),簡化了Html標籤的使用,使得開發ASP.net程序能夠像開發Winform程序同樣簡單。Web服務控件最終仍是被渲染(Render)爲Html標籤。使用WEB服務控件的劣勢是會生成一些無用的屬性、ViewState等,不利於SEO,通常在內網系統或者互聯網系統的後臺中使用WEB服務控件。若是沒有複雜的服務器交互動做,就不用Web服務器控件。
runat=server的HTML控件有什麼特色:路徑不用程序員解析,可使用「~」來虛擬路徑。
96、下面程序的執行結果是什麼?
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循環也是如此。
97、下面程序的執行結果是什麼?(*)
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中的代碼執行完成後函數才真正的返回。
98、開放式問題:工做中遇到不懂的問題是怎樣去解決的?
參考解答:首先到百度上搜索中文的資料,通常均可以找到解決方案,若是還找不到解決方案就到google上搜索英文的資料,若是尚未解決方案就請教同事,若是同事也沒有解決方案,就將問題提交到MSDN論壇。
99、開放性問題:你能說出哪些數據庫?
參考解答:MSSQLServer、Oracle、Access、DB二、Sybase
100、開放性問題:你能說出儘量多的你據說過的編程語言?(*)
參考解答:C#、VB.Net、Ada、Cobol、C、C++、Delphi、Erlang、F#、Fortran、Java、JavaScript、Pascal、Python、PowerShell、Ruby、Smalltalk。
101、請翻譯下面的文章(*)
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 situation—look, the same situation that many ASP.NET 1.x developers complained about—you 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方法。另外在這種狀況下,基類能夠幫你避免常規的作法,即便看起來改進不明顯。
102、在下述選項時,沒有構成死循環的程序是 (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;
103、下列哪一個是和數據庫訪問技術關係不大的技術(C)
A、SQLHelper B、EnterPrise Library C、AppDomain D、Linq
104、下列哪些說法是錯誤的
A、將bmp格式的文件修改成jpg是修改圖片格式最簡單的方法
B、將QQ動態表情顯示在網頁上用gif格式比較好
C、將bmp格式的圖片放到網頁中能夠優化網站速度
D、png格式用在網頁中能夠實現透明的效果。
答案:A、C。A錯誤是由於修改文件的後綴並無真的修改文件的格式,要使用Photoshop、mspaint等圖片處理工具進行轉換才能夠。C錯誤是由於在網頁中不能使用bmp圖片。
105、從如下簡寫中任選一個簡單描述
OA\MIS\HRM\CRM\KM 參考答案:
OA(Office Automation):辦公自動化
MIS(Managment Information system):管理信息系統
HRM(Human Resource Managment):人力資源管理,包括員工管理、薪資管理、入職管理、離職管理、報銷管理、請假管理等
CRM(Customer Relation Managment):客戶關係管理系統,包括客戶管理、客戶關懷、客戶回訪、投訴管理、諮詢管理、報修管理等
KM(Knowledge Managment):知識管理
106、請在數據庫中設計表來保存一個樹狀結構的公司組織結構
112、不用JQuery等框架實現AJAX無刷新登陸。
提示:用純XMLHttpRequest實現。
107、下面程序的執行結果是什麼?
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 解答:結構體是複製傳遞的。
108、在Windows命令行中敲入下面的指令各有什麼反應
答案:cd ..:進入上一級目錄 notepad:打開記事本
cmd:啓動另一個命令行 ipconfig:打印網絡設置信息
dir:顯示當前目錄下的文件
109、下列這些軟件用過哪些?他們是用來作什麼的?
TypeAndRun、FoxMail、Reflector、UltraEdit、VSS、VirtualPC、VMWare
參考答案: TypeAndRun:快速經過敲命令的方式啓動其餘程序的工具。
FoxMail:郵件收發客戶端 Reflector:.net程序反編譯工具
UltraEdit:高級文本編輯器 VSS:源代碼管理工具
VirtualPC:在一臺計算機中虛擬出另一個計算機的軟件,是微軟的產品
VMWare:和VirtualPC同樣,也是一種虛擬機軟件
110、開放式問題:若是程序連不上SQLServer數據庫服務器服務器,你會怎麼排除這個故障?
參考解答:首先ping一下服務器IP,看是否可以ping通,若是不能ping通,則看是否網絡有問題;若是能ping通,再telnet一下服務器的1433端口,看是否可以連通;若是不能連通則多是SQLServer服務停掉了或者是服務器上的防火牆封掉了1433端口;若是能連通再檢查是否是本地程序的問題、驅動的問題。
111、下面的IP地址有什麼含義?
127.0.0.1:本地迴環地址(LoopBack),localhost
0.0.0.0:監聽全部的網卡。AnyIP。 255.255.255.0
112、不用JQuery等框架實現AJAX無刷新登陸。
提示:用純XMLHttpRequest實現。
114、Http狀態碼各是什麼意思。
301 :重定向 404 :頁面不錯在 500:服務器內部錯誤
115、對html文本框進行賦值的JQuery語句,對html文本框進行取值的JQuery語句,對TextBox服務端控件進行取值的語句JQuery。
116、IE和FireFox的不一樣,IE6和IE8的不一樣。
JQuery XMLHttpRequest。不一樣瀏覽器實現AJAX的代碼是不同的。InnerHTML。
CSS、Javascript、dom。 咱們項目開發中爲了不這些跨瀏覽器兼容的問題,就是用JQuery框架,他幫咱們屏蔽了瀏覽器的差別。
QQ羣:108845298,期待你的加入