2019 11 19 C 高階面試題

2021-09-29 20:10:01 字數 3648 閱讀 8983

title

author

date

createtime

categories

c# 高階面試題

lindexi

2019-11-19 08:40:50 +0800

2018-11-12 11:18:2 +0800

c#

很少會有人可以答對,如果你遇到乙個來面試的人實在囂張,就可以用本文的題去打擊 本文內容就看著玩,請不要在嚴肅的面試中問題這樣的題目

如果面試到乙個人可以回答出下面的題目也不能證明他的技術很強,只能說明他了解很多c#相關,或者他看過我的部落格

請在下面的**的注釋處填寫**,讓函式 foo 裡面的**輸出

static

void

main(string args)

private

static

void

foo()

}finally

}

參***

使用乙個執行緒呼叫的方式,呼叫之後結束執行緒,此時就會輸出

static

void

main(string args)

注意,在 dotnet core 不支援 abort 方法

請寫出 ifoo 和 foo 的實現,讓下面的**不會丟擲空異常

static

void

main(string args)

參***

class

ifoo

class

foo

public

static

implicit

operator

foo(ifoo

foo)

}

請新增新的類的**讓下面的**編譯通過

class

program

}public

class

foo

}

參***

public

class

heabdsdnbkevx : inotifycompletion

public

foogetresult()

////>

public

void

oncompleted(action

continuation)

}public

static

class

relelnissou

}

再高階一點,寫出下面的**

static

async

task

main(string args)

其實很簡單,也就是將 getresult 修改一下,在上面的**修改

public

string

getresult()

因為返回值是 string 所以又可以繼續等待

這裡有乙個**,需要讓 finally 裡面的**不執行,現在你只能寫 foo 方法,同時這個方法不能執行無限長時間

try

finally

參***

因為不能讓 foo 執行無限長,就不能使用無限迴圈的方法,可以使用的方法有 environment.failfast 或 environment.exit 退出

private

static

void

foo()

或者進行堆疊溢位,如下面**

private

static

void

foo()

或者 少珺 小夥伴的不安全**申請

private

static

void

foo()

}

或者乾掉自己程序

private

static

void

foo()

但是申請大記憶體和退出當前執行緒方法都會讓 finally 執行

private

static

void

foo()

// 雖然提示記憶體不夠,但是finally依然可以執行

退出當前執行緒丟擲的是執行緒中斷異常,和其他異常一樣都能執行 finally **

private

static

void

foo()

注意,在 dotnet core 不支援 abort 方法

另外,如果進入 try 是不能使用 goto 跳出但不執行 finally **

如果是在 visualstudio 除錯,在 foo 執行完之後,在 vs 裡把除錯箭頭拖到 finally 的後面

請問下面的**的 n 的值是多少?

class

foo =

1; }

foofoo=

null;

varn=

2+foo?.n

??1;

console.writeline(n);

參***

可能有小夥伴認為在2 + foo?.n這時如果 foo 為空就應該返回??後面的值,但是這是不對的上面的**是和下面的**差不多等同的

if (foo

==null)

else

而不是和下面的**等價的

if (foo

==null)

else

在表達裡面只有?的值為空,那麼就不會執行

等等,為什麼上面的**說的是差不多等同而不是等價,因為嘗試執行下面**,會看到 hi 輸出,多謝 九鼎 指出

using

system;

class

test}}

static

void

main()

}

上面**中,第乙個foo?.n會進行判斷,因為 foo 不存在,所以整個表示式沒有執行,但是表示式內的邏輯依然執行

請問下面**輸出什麼?

class

b

private

staticbb

static

void

main(string args)

也許這是全部題目裡面最簡單的一道題

請看 c# 匹配可空變數

其實這裡的a is b用的bclass不是定義的屬性,對a is b b5返回的是bool所以將會是boolb之間的運算

IOS高階面試題

1.寫一下uibutton與uitableview的層級結構 2.cocoa的foundation物件與core foundation物件通過什麼關鍵字進行轉換?這些關鍵字有什麼區別?3.kvo是什麼?內部是怎麼實現的?4.是否可以把比較耗時的操作放在nsnotificationcenter中處理?...

PHP高階面試題

1.寫出乙個能建立多級目錄的php函式 function createdir path,mode elseelse path aa bb cc cd 要建立的目錄 mode 0755 建立目錄的模式 createdir path,mode 測試 2.請寫一段php 確保多個程序同時寫入同乙個檔案成功...

IOS高階面試題

1.寫一下uibutton與uitableview的層級結構 2.cocoa的foundation物件與core foundation物件通過什麼keyword進行轉換?這些keyword有什麼差別?3.kvo是什麼?內部是怎麼實現的?4.能否夠把比較耗時的操作放在nsnotificationcen...