今天的面試小記

2022-01-31 13:51:29 字數 3762 閱讀 7784

做程式設計師以來,一直都是在創業型小公司呆著,手下的程式設計師最多也就三倆號人,但是老闆的各種要求和任務都要快速滿足,很多技術還不及深鑽就要去趕緊學習其它東西,所以造成了現在技術層面:「廣度有,深度無」的尷尬局面,今天去某公司面試了,被問一些我以往工作中沒用到(或很少用)的知識點,基本上都是憑經驗當場猜的,記在這裡備忘:

1、在乙個同步的asp.net頁面(即常規aspx頁面)時,如果乙個button點選去發起乙個非同步操作,頁面會不會有異常?

因為我之前在asp.net頁上有試過非同步查詢,也是類似**的機制處理,當時頁面能正常跑的,沒報異常,所以我說不會報異常。

回來後測試了一下:

using system;

protected void button1_click(object sender, eventargs e)

void callback(iasyncresult ir)

void helloworld()

}}

確實也沒報異常,除錯視窗也正常輸出了。但是從面試官當時的反應上看,好象對我的回答有些不認同。事後我反思了一下:如果網路問題或其它原因,導致**超時,也許有可能報異常吧。

馬後炮:如果在非同步或多執行緒中,呼叫其它控制項(比如修改介面上textbox框裡的值),不光是aps.net,winform也會出異常,不過面試當時,沒提到是否需要呼叫其它控制項的值,只是問到在同步頁面裡,發起非同步操作,能不能正常跑下去,所以我的回答也不能算錯,最多也就是不完備而已

2、ref與"指標的指標":乙個類的例項,當成引數傳入方法中後,如果在方法中改變了例項的屬性,方法呼叫完成後,該例項的屬性最終是否也改變了?

這個問題很基礎,就是引用型別與值型別的理解,引用型別的引數傳到方法中時,實際上相當於指標,方法呼叫完成後,當然屬性值也變了,這個很easy,99%的程式設計師就算新手也能回答。

然後面試官接著問:如果在這個引用型別的引數前再加乙個ref關鍵字,結果又是怎樣?我的回答,應該還是變了。(後面我回來在vs.net上試了下,我的回答是對的)

using system;

namespace console1

; console.writeline("before change,p1.name = ", p1.name);

changepersonname(ref p1, "b");

console.writeline("after change,p1.name = ", p1.name);

console.read();

}static void changepersonname(ref person p,string newname)

}public class person

}}

問題還沒結束:如果引用型別的引數,相當於傳入的是指標,指標的前面加乙個ref,代表什麼意思?我的回答:指標的指標。

繼續:指標的指標是個什麼含義?這時候,方法體內什麼事情不能做? 我一時短路,懵了,c語言沒學好的遺憾。

3、乙個第三方的類(不能修改),但是該類的某個屬性的setter方法是private的?有什麼方法可以修改這個屬性的值?

public class person 

private set

}}

上面是這個類的原型,要求不能修改它,但是必須要求person類的例項,能修改name屬性值。

第一次遇到這種要求,常規辦法肯定是行不通的,看來只能不走尋常路。大腦空白,沒想法! 不過回來的路上,我想了想,除了將第三方的dll反編譯,得到il**(或其它語言的原始碼),重新編譯外,貌似沒有其它辦法。這個問題也是所有問題中,最讓我感到不知所措,最想知道答案的,如果園友有其它高招,跪求指點。

注:好吧,如果面試官換個問法「反射能幹些什麼」?也許我就不會這麼盲然了

我的馬後炮答案:

using system;

using system.reflection;

namespace console1

}public class person

private set}}

}

4、乙個複雜的sql語句比如: select ... from ... join on ... where ... group by ... order by ... ,資料庫內部在執行時,是按什麼順序處理的?

這個基本上也沒回答全。 回頭得去翻翻sqlserver的相關書籍。

5、在寫html**時,用什麼**可以改變瀏覽器的解析方式?

這個基本上,也沒答上來,以前寫css時,只知道這個可以將ie8強制改成相容檢視,但是明顯不是面試官要的答案。

馬後炮:同樣,如果面試官問:doctype的三種型別strict、transitional 以及 frameset,分別有什麼不同?我就知道怎麼回答了,當時被「解析方式」這一專業詞彙給卡住了,導致大腦神遊短路。

6、sqlserver的預設系統資料庫中model庫是幹嘛用的?

當時也瞎扯了一通,基本上也沒扯全,仍然要去翻翻sqlserver的相關書籍

馬後炮:model庫是系統資料庫之一,是乙個模板資料庫,每當建立乙個新的資料庫時,會把model建立乙個副本,然後重新命名為使用者自己定義的資料庫名。相當於印刷術中的「字模」

7、二個委託a與b,用combine操作連線後,賦值給委託c,c指向的是a還是b?

我只知道最終c會執行委託a與委託b中呼叫的方法,但是最終指向誰?真沒想過

馬後炮:委託a與委託b的combine操作,其實考查的是委託鏈的知識點,多個委託合併後,內部的_invocationlist會初始化成乙個委託陣列,依次存放a與b,然後c指向這個陣列,所以該問題中的「指向誰」,如果這個意思的話,應該是指向a(因為a是陣列的第乙個元素)

8、如果在asp.net中開發者即自定義了httpmodule,又定義了httphandle,且均在web.config中正確註冊了,最後誰會先執行?

我的回答:httpmodule,然後面試官繼續問到:如果沒有在web.config中註冊的httpmodule,如何動態載入? 沒答上來

馬後炮:當時是憑印象答的,回來驗證了一下順序,沒答錯,**如下,但是動態載入httpmodule,還是沒頭緒(嘗試在global裡搗鼓了下,失敗收場,個人感覺多半是要用c#來對iis進行控制了,繼續求達人指點)

然後在web.config中註冊

<?xml version="1.0"?>

最終除錯視窗的輸出:

mymodule.init is called

myhandler.processrequest is called

更新: 動態載入httpmodule的問題,在微軟中文論壇上發貼求助後,很快得到了解答,原來很簡單:)

public static moduledemo _moduledemo = new moduledemo();

public override void init()

在global.asax裡過載init事件就ok了

今天的面試

今天去尚都國際中心的一家公司面試net開發,信心滿滿,可是卻被打擊的夠嗆,題不多沒做對幾道。現在分享出來,共同討論下。1.判斷陣列元素是否存在重複,要求時間複雜度為o n 這個沒記清楚 2.有乙個遊客在海上登陸乙個小島。臨行前,親友告訴他這個海域有兩個小島,乙個叫 誠實島 乙個叫 說謊島 誠實島的居...

今天的面試有感

今天下午是在拓維的最後一次面試,為了請假我撒了次謊。最後一次面試當然沒有任何懸念了,主要就是談待遇,很快就結束了。這也讓我有點時間觀察了一下拓維。首先我發現,我將來的部門經理,也就是第一次面試我的那位,正在網上下象棋。他坐的位置很有意思,他的螢幕就對著走廊。而他坐的隔間和走廊之間是一堵玻璃牆,誰經過...

談談今天的面試

今天再一次,去了一家公司面試 上海手遊 手機遊戲開發的 之前去的幾家公司,要不就是沒有問我專業問題,可以直接上班的,要不就是讓我過去實習,在看表現後可以隨便開工資,確實沒有受到什麼打擊。今天懷著求打擊的心態,到了那家公司。開始第一輪的筆試,筆試題都是一些跟演算法 預算 數字 智力有關的益智題,如 有...