.net程式設計師面試問題

.net程式設計師面試問題分享

1. new 關鍵字用法

(1)new 運算符

用於創建對象和調用構造函式。

(2)new 修飾符

用於向基類成員隱藏繼承成員。

(3)new 約束

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

2.如何把一個array複製到arraylist里

(1) 實現1

string[] s ={ "111", "22222" };

arraylist list = new arraylist();

list.addrange(s);

(2)實現2

string[] s ={ "111", "22222" };

arraylist list = new arraylist(s);

3.datagrid的datasouse可以連線什麼數據源

datatable

dataview

dataset

dataviewmanager

任何實現ilistsource接口的組件

任何實現ilist接口的組件

4.概述反射和序列化

反射

公共語言運行庫載入器管理應用程式域。這種管理包括將每個程式集載入到相應的應用程式域以及控制每個程式集中類型層次結構的記憶體布局。

程式集包含模組,而模組包含類型,類型又包含成員。反射則提供了封裝程式集、模組和類型的對象。您可以使用反射動態地創建類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。然後,可以調用類型的方法或訪問其欄位和屬性。

序列化

序列化是將對象狀態轉換為可保持或傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕鬆地存儲和傳輸數據。

5.概述o/r mapping 的原理

利用反射,配置將對象和資料庫表映射。

6. 可訪問性級別有哪幾種

public 訪問不受限制。

protected 訪問僅限於包含類或從包含類派生的類型。

internal 訪問僅限於當前程式集。

protected internal 訪問僅限於從包含類派生的當前程式集或類型。

private 訪問僅限於包含類型。

7. sealed 修飾符有什麼特點

sealed 修飾符可以套用於類、實例方法和屬性。密封類不能被繼承。密封方法會重寫基類中的方法,但其本身不能在任何派生類中進一步重寫。當套用於方法或屬性時,sealed 修飾符必須始終與 override一起使用。

8.列舉ado.net中的共享類和資料庫特定類

共享類

dataset

datatable

datarow

datacolumn

datarelation

constraint

datacolumnmapping

datatablemapping

特定類

(x)connection

(x)command

(x)commandbuilder

(x)dataadapter

(x)datareader

(x)parameter

(x)transaction

9.執行下面代碼後:

string strtemp ="abcdefg 某某某";

int i=system.text.encoding.default.getbytes(strtemp).length;

int j=strtemp.length;

問:

i=?

j=?

i=(14 ) ;j=(11 ) 中文兩個位元組

10.c#中,string str = null 與 string str ="",請儘量用文字說明區別。

string str =""初始化對象分配空間

而string str=null初始化對象

11.詳述.net里class和struct的異同

結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多:

儘管結構的靜態欄位可以初始化,結構實例欄位聲明還是不能使用初始值設定項。

結構不能聲明默認構造函式(沒有參數的構造函式)或析構函式。

結構的副本由編譯器自動創建和銷毀,因此不需要使用默認構造函式和析構函式。實際上,編譯器通過為所有欄位賦予默認值(參見默認值表)來實現默認構造函式。結構不能從類或其他結構繼承。

結構是值類型 -- 如果從結構創建一個對象並將該對象賦給某個變數,變數則包含結構的全部值。複製包含結構的變數時,將複製所有數據,對新副本所做的任何修改都不會改變舊副本的數據。由於結構不使用引用,因此結構沒有標識 -- 具有相同數據的兩個值類型實例是無法區分的。c# 中的所有值類型本質上都繼承自 valuetype,後者繼承自 object。

編譯器可以在一個稱為裝箱的過程中將值類型轉換為引用類型。

結構具有以下特點:

結構是值類型,而類是引用類型。

向方法傳遞結構時,結構是通過傳值方式傳遞的,而不是作為引用傳遞的。

與類不同,結構的實例化可以不使用 new 運算符。

結構可以聲明構造函式,但它們必須帶參數。

一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。所有結構都直接繼承自 system.valuetype,後者繼承自 system.object。

結構可以實現接口。

在結構中初始化實例欄位是錯誤的。

12.什麼叫應用程式域?什麼是託管代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?cts、cls和clr分別作何解釋?

應用程式域

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

託管代碼

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

裝箱和拆箱

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

重載

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

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

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

clr公共語言運行庫

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

cls公共語言規範

要和其他對象完全互動,而不管這些對象是以何種語言實現的,對象必須只向調用方公開那些它們必須與之互用的所有語言的通用功能。為此定義了公共語言規範 (cls),它是許多應用程式所需的一套基本語言功能。

強類型

c# 是強類型語言;因此每個變數和對象都必須具有聲明類型。

13.值類型和引用類型的區別?

基於值類型的變數直接包含值。將一個值類型變數賦給另一個值類型變數時,將複製包含的值。這與引用類型變數的賦值不同,引用類型變數的賦值只複製對對象的引用,而不複製對象本身。

所有的值類型均隱式派生自 system.valuetype。

與引用類型不同,從值類型不可能派生出新的類型。但與引用類型相同的是,結構也可以實現接口。

與引用類型不同,值類型不可能包含 null 值。然而,可空類型功能允許將 null 賦給值類型。

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

值類型主要由兩類組成:結構、枚舉

結構分為以下幾類:numeric(數值)類型、整型、浮點型、decimal、bool、用戶定義的結構。

引用類型的變數又稱為對象,可存儲對實際數據的引用。聲明引用類型的關鍵字:class、inte***ce、delegate、內置引用類型: object、string

14.如何理解委託

委託類似於 c++ 函式指針,但它是類型安全的。

委託允許將方法作為參數進行傳遞。

委託可用於定義回調方法。

委託可以連結在一起;例如,可以對一個事件調用多個方法。

方法不需要與委託簽名精確匹配。有關更多信息,請參見協變和逆變。

c# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。

15.c#中的接口和類有什麼異同。

異:

不能直接實例化接口。

接口不包含方法的實現。

接口、類和結構可從多個接口繼承。但是c# 只支持單繼承:類只能從一個基類繼承實現。

類定義可在不同的源檔案之間進行拆分。

同:

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

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

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

一個類可以實現多個接口。

16.asp.net的身份驗證方式有哪些

windows 身份驗證提供程式

提供有關如何將 windows 身份驗證與 microsoft internet 信息服務 (iis) 身份驗證結合使用來確保 asp.net 應用程式安全的信息。

forms 身份驗證提供程式

提供有關如何使用您自己的代碼創建應用程式特定的登錄窗體並執行身份驗證的信息。使用 forms 身份驗證的一種簡便方法是使用 asp.net 成員資格和 asp.net 登錄控制項,它們一起提供了一種只需少量或無需代碼就可以收集、驗證和管理用戶憑據的方法。

passport 身份驗證提供程式

提供有關由 microsoft 提供的集中身份驗證服務的信息,該服務為成員站點提供單一登錄和核心配置

17.活動目錄的作用

active directory存儲了有關網路對象的信息,並且讓管理員和用戶能夠輕鬆地查找和使用這些信息。active directory使用了一種結構化的數據存儲方式,並以此作為基礎對目錄信息進行合乎邏輯的分層組織。

18.解釋一下uddi、wsdl的意義及其作用

uddi

統一描述、發現和集成協定(uddi, universal description, discovery and integration)是一套基於web的、分散式的、為web服務提供的信息註冊中心的實現標準規範,同時也包含一組使企業能將自身提供的web服務註冊以使得別的企業能夠發現的訪問協定的實現標準。uddi 提供了一組基於標準的規範用於描述和發現服務,還提供了一組基於網際網路的實現。

wsdl

wsdl描述web服務的公共接口。這是一個基於xml的關於如何與web服務通訊和使用的服務描述;

服務 url 和命名空間

網路服務的類型(可能還包括 soap 的函式調用,正像我所說過的,wsdl 足夠自如地去描述網路服務的廣泛內容)

有效函式列表

每個函式的參數

每個參數的類型

每個函式的返回值及其數據類型

19.什麼是soap

soap(simple object access protocol )簡單對象訪問協定是在分散或分散式的環境中交換信息並執行遠程過程調用的協定,是一個基於xml的協定。使用soap,不用考慮任何特定的傳輸協定(最常用的還是http協定),可以允許任何類型的對象或代碼,在任何平台上,以任何一直語言相互通信。

soap 是一種輕量級協定,用於在分散型、分散式環境中交換結構化信息。 soap 利用 xml 技術定義一種可擴展的訊息處理框架,它提供了一種可通過多種底層協定進行交換的訊息結構。 這種框架的設計思想是要獨立於任何一種特定的編程模型和其他特定實現的語義。

soap 定義了一種方法以便將 xml 訊息從 a 點傳送到 b 點。 為此,它提供了一種基於 xml 且具有以下特性的訊息處理框架:1) 可擴展,2) 可通過多種底層網路協定使用,3) 獨立於編程模型。

20.如何部署一個asp.net頁面

vs XX和vs XX都有發布機制。XX可以發布然後再複製部署。

vsXX基本上可以直接部署到對應位置。

21.如何理解.net中的垃圾回收機制

.net framework 的垃圾回收器管理應用程式的記憶體分配和釋放。每次您使用 new 運算符創建對象時,運行庫都從託管堆為該對象分配記憶體。只要託管堆中有地址空間可用,運行庫就會繼續為新對象分配空間。但是,記憶體不是無限大的。最終,垃圾回收器必須執行回收以釋放一些記憶體。垃圾回收器最佳化引擎根據正在進行的分配情況確定執行回收的最佳時間。當垃圾回收器執行回收時,它檢查託管堆中不再被應用程式使用的對象並執行必要的操作來回收它們占用的記憶體。

  面試現場出錯怎么辦?

首先,對面試出錯這一問題要有正確的認識。

面試中的難題大多是沒有標準答案的,主要是考查你的能力。你只要鮮明地亮出自己的正向的觀點,盡可以按照自己的思考做出回答,表現出自己的綜合素質和不俗的能力。偶爾出點差錯,考官也不會對你全盤否定,所以不必緊張。

其次,要迅速判斷能不能進行彌補。答錯了,總是想著找機會彌補,總想解釋剛才為什麼沒答好,以證明自己水平不差,但由於下面的問題一個接一個,考生一方面要回答新問題,另一方面想著前面問題的回答缺憾,結果鬧得新問題也沒答好。所以,當自己判斷不能進行彌補的話,就不必耿耿於懷,而要馬上忘記,繼續沉著地回答下面的問題。

第三,如果覺得自己有把握對出錯進行彌補,也要講究方式方法。具體說來,面試出錯補救有以下幾種技巧:

一、以正改錯。

意識到錯了,就要誠實地加以糾正,不要為了面子而置之不理。最好的辦法就是按正確的講法再講一遍。諸如語句不通,詞不達意,口誤等等,只要很自然地加以糾正,就會得到考官的理解。

二、化錯為正。

察覺自己說錯了,如果考生能夠針對自己的失誤,進行一番合乎情理的闡釋,只要能夠自圓其說,也不失不一種補救的辦法。如對大學生賣豬肉當保姆等現象的認識,在回答時,本來想好要重點談大學生就業觀念的改變,就業環境的變化,就業壓力的增大等方面的問題,但回答時一開口就說是人才的浪費,自己覺得說錯了,考生也不必緊張,就把人才浪費做為重點闡述,其它觀點做為一般論述,自圓其說,效果也不差。

三、續錯成正。

在答問時,如果說錯了話,有時可以採用調整語意,改換語氣等方式予以補救。只要反應敏捷,應變及時,就可以收到不露痕跡的糾錯效果。如列舉了一系列腐敗現象後,考生想好要說的是“我們決不允許這種現象存在下去”,結果說成“我們允許這種現象存在”。此時如果直接承認自己說錯了,把正確的再說一遍,效果並不好。這種情況下,續錯成正是最好的選擇,考生可以接著“我們允許這種現象存在”說下去,“就是對人民的犯罪”。這樣續接補救,可謂順理成章,天衣無縫。

在緊張的面試過程中,要進行糾錯不是一件容易的事,這就要求考生儘量不出錯。而要不出錯或少出錯,就要做好應試準備。平時的積累不可少,考前參加強化訓練也很有必要。在專家的指導下全面提高自己,在面試時就能少出錯,即使出錯了,也能及時糾錯,從容應對。