網站首頁 工作範例 辦公範例 個人範例 黨團範例 簡歷範例 學生範例 其他範例 專題範例

軟體工程師面試題

欄目: 面試試題 / 釋出於: / 人氣:2.1W

談談指標和引用的區別?

軟體工程師面試題

指標用操作符“*”和“->”,引用使用操作符“&”. 相同點是:指標與引用都是讓你間接引用其他物件。

區別:(1). 指標是一個實體,指向一塊記憶體,它的內容是所指記憶體的地址;而引用僅是個別名,是某塊記憶體的別名。

(2). 引用使用時無需解引用(*),指標需要解引用;

(3). 引用只能在定義時被初始化一次,之後不可變,“從一而終”;指標可變;

(4). 引用沒有 const型別,指標有 const型別,const 的指標不可變;

(5). 引用不能為空,指標可以為空;

(6). “sizeof 引用”得到的是所指向的變數(物件)的大小,而“sizeof 指標”得到的是指標本身(所指向的變數或物件的地址)的大小;typeid(t) == typeid(t&) 恆為真,sizeof(t) == sizeof(t&) 恆為真,但是當引用作為成員時,其佔用空間與指標相同(沒找到標準的規定)。

(7). 指標和引用的自增(++)運算意義不一樣;

你在程式程式碼中用assert嗎?assert一般用於做什麼?

(1) 是我常用。

(2)主要用於debug下斷言,即假設一定是這樣的,否則就是錯誤的。例如 asser ( a > 100 );

i++ 相比 ++i 哪個更高效?為什麼?

答:(1)++i 比 i++效率高。

(2)i++要多呼叫一次類的構造和析夠函式

c#中的委託是什麼?事件是不是一種委託?

委託是指具有相同屬性(也稱具有相同的函式簽名:返回型別相同,引數型別、引數順序及引數個數相同)的函式或方法的抽象,關鍵字為delegate。主要用途是三個:1)函式回撥;2)傳遞方法;3)事件機制

事件就是一個狹義的委託,也就是事件是一個用於事件驅動模型的專用委託,對事件的宣告, 實際是宣告一個私有的委託變數,對委託變數進行封裝,即委託變數加上event關鍵字後,不管其前面的訪問修飾符是public還是private,編譯器都會將其編譯為private。

委託是一個類,它定義了方法的型別,使得可以將方法當作另一個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用if-else(switch)語句,同時使得程式具有更好的可擴充套件性。以委託為引數的函式具有一定的通用性。

使用委託可以將多個方法繫結到同一個委託變數,當呼叫此變數時(這裡用“呼叫”這個詞,是因為此變數代表一個方法),可以依次呼叫所有繫結的方法。

請敘述屬性與索引器的區別。

屬性:它是存取類的欄位,索引器:indexer它是特殊的屬性,用它可以使使用者像訪問陣列一樣訪問類的成員。

請詳述在dotnet中類(class)與結構(struct)的異同。

類class可以進行例項化,它是引用型別,記憶體分配在棧中,效率高,它有預設的建構函式,有解構函式可以使用 abstract 和 sealed, protected 修飾符。要用new進行初始化,

結構它是屬於值型別,記憶體分配在堆中,效率低,它沒有預設的建構函式,但是可以新增建構函式,沒有解構函式沒有 abstract 和 sealed(因為不能繼承)不能有protected 修飾符 可以不使用new 初始化,但是可以在結構中初始化例項欄位。

在c#中,string str = null與string str = “” 請儘量使用文字或圖象說明其中的區別。

回答要點:說明詳細的空間分配。

答:string str = null是不給他分配記憶體空間,而string str = “” 給它分配長度為空字串的記憶體空間.

請詳述在dotnet中類(class)與結構(struct)的異同

答:class可以被例項化,屬於引用型別,是分配在記憶體的堆上的,struct屬於值型別,是分配在記憶體的棧上的.

簡要談一下您對微軟構架下remoting和webservice兩項技術的理解以及實際中的應用。

答:ws主要是可利用http,穿透防火牆。而remoting可以利用tcp/ip,二進位制傳送提高效率。

如何區別過載方法?

不同的引數型別,不同的引數個數,不同的引數順序。

請說明在中常用的幾種頁面間傳遞引數的方法,並說出他們的優缺點。

session(viewstate) 簡單,但易丟失

application 全域性

cookie 簡單,但可能不支援,可能被偽造

input ttype="hidden" 簡單,可能被偽造

url引數簡單,顯示於位址列,長度有限

資料庫穩定,安全,但效能相對弱