C#程序員面試(一)答案

發表于:2007-06-30來源:作者:點擊數: 標簽:
前提:狀態欄面板sbpFilePath已經設定為自繪樣式.當有如下代碼段1被執行一次以后: 代碼段1: private void treeviewArchives_AfterSelect(object sender, System. Windows .Forms.TreeViewEventArgs e) { if (e.Node.Text!= ) { try {this.richtexebox.LoadF
前提:狀態欄面板sbpFilePath已經設定為自繪樣式.當有如下代碼段1被執行一次以后:

代碼段1:
private void treeviewArchives_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if (e.Node.Text!= "" )
{
try
{this.richtexebox.LoadFile(Application.StartupPath+e.Node.Text);
statusMessages=e.Node.Text;
sbpFilePath.Text=statusMessages;//statusMessages表示字符串
}
catch
{MessageBox.Show("加載文件出錯,無法顯示!");
}
}
}

代碼段2:
private void statusBar1_DrawItem(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent)
{// 繪制面板區域
sbdevent.Graphics.FillRectangle(Brushes.Green, sbdevent.Bounds);
//繪制面板上的文本
sbdevent.Graphics.DrawString(statusMessages,sbdevent.Font,Brushes.White,sbdevent.Bounds);
sbdevent.Graphics.Dispose();
}

考試題:

1、代碼段2會不會被執行?
答案:會。

2、代碼段2如果不會被執行,為什么?該如何修改?
答案:過。繼續下一問題。

3、代碼段2如果會得到執行,會不會被重復執行(即連續執行兩次或更多次)?
答案:會。

4、代碼段2如果被重復執行,該如何修改使之只運行一次就足夠?
答案:代碼段1可以修改為:
private void treeviewArchives_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if (e.Node.Text!= "" )
{
try
{
this.richtexebox.LoadFile(Application.StartupPath+e.Node.Text);
statusMessages=e.Node.Text;
//將以下這一句注釋掉,同時加上強制繪制的方法
//sbpFilePath.Text=statusMessages;//statusMessages表示字符串
statusBar1.Invalidate();
}
catch
{ MessageBox.Show("加載文件出錯,無法顯示!");
}
}
}

5、代碼段2中 sbdevent.Graphics.Dispose();//這個語句是否可有可無,為什么?
答案:為盡可能釋放資源,只要編譯與運行過程中不出錯,應當加上。
(如現場有爭議,留下名單,讓他回去測試,第二天帶測試報告再來)


6、假設運行以下語句
{sbpFilePath.Text=statusMessages;sbpFilePath.Text=statusMessages;}
問題同上述1-3項,請再次回答。
答案:如果不修改代碼段1,此語句段在第一次運行
sbpFilePath.Text=statusMessages;
時,代碼段2就被運行兩次,此后,只要給sbpFilePath.Text的值不變,
即statusMessages的值不變,則代碼段2不會繼續運行。
即:
{sbpFilePath.Text=statusMessages;sbpFilePath.Text=statusMessages;}
等效于
sbpFilePath.Text=statusMessages;

7、您認為代碼段1或者代碼段2有沒有錯誤?(如果您認為回答對了上面的問題,此問題可不必做答)
答案:語法沒有錯,但可以修改代碼,減少重繪,節省資源。

8、有人認為C#開發出來的程序太慢,你怎么看待這個問題?你在編碼過程中優先考慮以人為本、用戶為上的思想嗎?
請簡述。
答案:一部分是實情,另外一部分在于很多人完全依賴自動垃圾回收,而沒有考慮弱引用、Dispose()、Close()、
GC、等等,甚至有很多人忌諱try-catch-finally,導致夸大問題,C#開發的實質問題在于目前的跨平臺方面。
公司研發部認為:如果JAVA開發人員認為C#開發出來的程序太慢,肯定不是一個合格的JAVA程序員,他寫的代碼肯定
性能低,耗費資源。如果經2次提醒后,他還堅持此觀點,肯定是一個浮躁的人,忌用。
招聘過程中注意:不要試圖引導應聘者比較語言的差異,不得發表帶偏見性的語言觀點,注意應聘者的情緒。

9、普遍認為以下幾本書都是經典,如果你看過,請從里面挑任意一本書,指出該書中5處以上嚴重影響程序速度的代碼段
或錯誤代碼。(希望通過此題強調我公司的原則:程序員水平如何,是看他寫的代碼以及代碼性能,不是看他學了多少,
也不看他的工齡)
答案:
資料上沒有提供。

我信守承諾,暫時沒有在其它網站公布更多題目。
而且絕對沒有公布除此文以外的任何技術問題與答案。
一旦第3輪招聘結果公布,我將第一時間全部傳到網上,
大家留意。

很多人都可以指教我,我會很珍惜有人指教的機會......

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97