最怕的就是面試,每每到找工作的時候感覺壓力山大,每次都要提前刷點題目去面對。所以這裡自己對以後需要了解的知識做乙個記錄,方便自己隨時的補充和深入了解,也給現在的自己留下一點點的印記,給未來留下一點回憶。
下面進入到正題,其實在面試的時候我們往往都會被問到一些c#基礎的知識,其實就和之前聽過的一句話所說的,「它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了」,的確!很多東西就是這樣子,尤其對於我個人來說更加是這樣子,如果有實踐的實現和應用,我能夠把這個東西理解的稍微透徹一點,說起來也能夠表達出自己的一些看法,但如果是一些只聽說過,用的不是很深的東西,每每一些基礎點,只能夠大概的講出他的官方定義,在深入可能滿腦子都是問號了!所以就想通過這篇文章記錄一些面試過程中會常碰見的問題,熟悉的自己講一講自己看法,不熟悉的先記錄下來,然後慢慢的去補充。
1.委託和事件
a.委託
關鍵字:delegate
基礎定義:c「執行時「的qsort函式獲取指向乙個**函式的指標,以便對陣列中的元素進行排序。在microsoft windows中,視窗過程,鉤子過程和非同步過程呼叫等都需要**函式。在.net framework中,**函式的應用更是廣泛
個人理解:其實單從這個基礎上面定義來說比較簡單的,主要應用的場景主要是在乙個方法,有乙個引數的值是需要傳遞另外乙個方法,然後使用這個傳入的方法。如果在js中大致的把這個理解為**函式,**函式的也是把方法名作為引數傳遞,但是因為js定義方法的時候不需要對這個傳入的方法進行修飾,直接乙個名稱定義就可以了,但是在c#的方法定義的時候需要對這個傳入的引數進行定義,比如是int,string,實體,等等,所以在這裡出現了委託delegate修飾符,定義乙個delegate修飾的委託,然後作為修飾符修飾需要傳遞的方法。個人的暫時理解是這樣的,如果理解錯了,請大家指出。(後面翻了一下clr via c#關於委託的說明,表示有點懵,講得很底層也很深入,感覺我理解的要怎麼去用!而書裡講的是為什麼是這樣,實現的機制以及原理是什麼,產出的1l**是怎樣的!)
namespaceview code委託與事件
//////
中文問好
/// ///
///public
static
string showchinese(string
name)
//////
英文問好
/// ///
///public
static
string showenglish(string
name)
//////
定義乙個委託
/// ///
///public
delegate
string show(string
name);
//注意此方法,它接受乙個show型別的方法作為引數
private
static
string greetpeople(string
name, show show)}}
2.事件
關鍵字:event
基礎定義:定義了事件成員的型別允許型別(或型別的例項)通知其他物件發生了特定的事情。例如button類定義了click時間。應用程式中的乙個或多個物件可以接收關於該事件的通知,以便在button被單擊之後採取特定的操作。我們用事件這種型別成員來實現這種互動。具體地說,定義了事件成員的型別能提供一下功能
方法能登記它對事件的關注
方法能登出它對事件的關注
事件發生時,登記了的方法將會收到通知。
個人理解:對於事件的理解主要停留在button按鈕的點選事件,做窗體程式,webfrom程式的時候,每新增乙個button的時候,在雙擊它的時候,後天的cs頁面就會註冊乙個點選事件
,點選這個按鈕檢視屬性的時候也會在事件這個屬性中看到按鈕的click事件被註冊了button1_click這個方法,其實從這個例子可以推理一下,當前是註冊了單擊按鈕這個行為到事件,擴充套件一下同理的可以註冊事物的其它的行為到事件,所以個人在這裡就這樣理解,事件就是給某乙個事物註冊了某乙個動作或者行為,這個動作或者是行為在收到某個指令的時候會傳送。在這裡聯想到了機械人,當機械人收到了某乙個命令,肯定會先去解析這個命令,然後轉換成指令,然後去執行相對應的動作,在這裡就可以把這些機器執行的動作當做是程式事先給機器註冊的事件。(感覺說的有點偏,如果理解的不對,還望能夠指出)
這裡非常推薦一篇文章:c# 中的委託和事件
2.關於int型別的長度,佔多少位元組(ps去年碰到的乙個試題,到現在都還印象深刻)
其實這問題有乙個條件沒有補充完整,所以回答的時候得自己補充完成。
主要的int型別有int16,uint16,int32,uint32,int64,uint64
shortsystem.int16 (短整型,佔 2 位元組,表示 16 位整數,範圍 -2^15 ~ 2^15-1)
ushortsystem.uint16 (無符號短整型,佔 2 位元組,表示 16 位正整數,範圍 0 ~ 2^16)
intsystem.int32 (整型,佔 4 位元組,表示 32 位整數,範圍 -2^31 到 2^31-1)
uintsystem.uint32 (無符號整型,佔 4 位元組,表示 32 位正整數,範圍 0 ~ 2^32)
longsystem.int64 (長整型,佔 8 位元組,表示 64 位整數,範圍大約 -(10 的 19) 次方 到 10 的 19 次方)
ulongsystem.uint64 (無符號長整型,佔 8 位元組,表示 64 位正整數,範圍 0 ~ 大約 10 的 20 次方)
補充一下其他的型別
boolsystem.boolean (布林型,其值為 true 或者 false)
bytesystem.byte (位元組型,佔 1 位元組,表示 8 位正整數,範圍 0 ~ 255)
sbytesystem.sbyte (帶符號位元組型,佔 1 位元組,表示 8 位整數,範圍 -128 ~ 127)
charsystem.char (字元型,占有兩個位元組,表示 1 個 unicode 字元)
floatsystem.single (單精度浮點型,佔 4 個位元組)
doublesystem.double (雙精度浮點型,佔8 個位元組)
暫時先寫這兩點了,之後有時間在補充。
面試題記錄
面試題記錄 2012年6月13日杭州某網路技術公司 1,空指標自加 int p int pa null p pa p 求p的值 這道題考的貌似指標的加法,因為對於空指標比較敏感直接感覺有問題,所以填寫出錯.到底如何呢?直接反彙編之 int p int pa null 010d14f1 mov dwo...
面試題記錄
筆試面試題總結 1,var a 0 function a catch e 0 this.b bbb var aa new a settimeout function 0 settimeout的作用域是window,所以結果為1,2,bbb,b但是將 中的第二個settimeout去掉之後,結果為1,...
面試題記錄
1 linux實時檢視日誌 tail f catalina.out 2 linux檢視埠是否被占用 etstat tunlp grep 埠號,用於檢視指定埠號的程序情況 lsof i 80 3 linux查詢abc開頭的檔案的第一行輸出到指定檔案 system bin sh ls users zha...