1、在c#中,string str = null 與 string str = “” 請盡量使用文字或圖象說明其中的區別。
回答要點:說明詳細的空間分配。(10分)
答:string str = null 是不給他分配內存空間,而string str = "" 給它分配長度為空字符串的內存空間.
2、請詳述在dotnet中類(class)與結構(struct)的異同:(10分)
答:class可以被實例化,屬于引用類型,是分配在內存的堆上的,struct屬于值類型,是分配在內存的棧上的.
3、根據委托(delegate)的知識,請完成以下用戶控件中代碼片段的填寫:(10)
namespace test
{
public delegate void ondboperate();
public class usercontrolbase : system.windows.forms.usercontrol
{
public event ondboperate onnew;
privatevoidtoolbar_buttonclick(objectsender,system.windows.forms.toolbarbuttonclickeventargs e)
{
if(e.button.equals(btnnew))
{
//請在以下補齊代碼用來調用ondboperate委托簽名的onnew事件。
}
}
}
答:if( onnew != null )
onnew( this, e );
4、分析以下代碼,完成填空(10分)
string strtmp = "abcdefg某某某";
int i= system.text.encoding.default.getbytes(strtmp).length;
int j= strtmp.length;
以上代碼執行完后,i= j=
答:i=13,j=10
5、sqlserver服務器中,給定表 table1 中有兩個字段 id、lastupdatedate,id表示更新的事務號, lastupdatedate表示更新時的服務器時間,請使用一句sql語句獲得最后更新的事務號。(10)
答:select id
from table1
where lastupdatedate = (select max(lastupdatedate) from table1)
6、根據線程安全的相關知識,分析以下代碼,當調用test方法時i>10時是否會引起死鎖?并簡要說明理由。(10分)
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答:不會發生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現死鎖。但如果把int換做一個object,那么死鎖會發生)
7、分析以下代碼。(10)
public static void test(string connectstring)
{
system.data.oledb.oledbconnection conn = new system.data.oledb.oledbconnection();
conn.connectionstring = connectstring;
try
{
conn.open();
…….
}catch(exception ex)
{
messagebox.show(ex.tostring());
}finally
{
if (!conn.state.equals(connectionstate.closed))
conn.close();
}
請問
1)以上代碼可以正確使用連接池嗎?
答:回答:如果傳入的connectionstring是一模一樣的話,可以正確使用連接池。不過一模一樣的意思是,連字符的空格數,順序完全一致。
2)以上代碼所使用的異常處理方法,是否所有在test方法內的異常都可以被捕捉并顯示出來?
答:只可以捕捉數據庫連接中的異常吧. (finally中,catch中,如果有別的可能引發異常的操作,也應該用try,catch。所以理論上并非所有異常都會被捕捉。)
8、簡要談一下您對微軟.net 構架下remoting和webservice兩項技術的理解以及實際中的應用。(10)
答:ws主要是可利用http,穿透防火墻。而remoting可以利用tcp/ip,二進制傳送提高效率。
9、公司要求開發一個繼承system.windows.forms.listview類的組件,要求達到以下的特殊功能:點擊listview各列列頭時,能按照點擊列的每行值進行重排視圖中的所有行 (排序的方式如datagrid相似)。根據您的知識,請簡要談一下您的思路:(10)
答:根據點擊的列頭,包該列的id取出,按照該id排序后,在給綁定到listview中
10、給定以下xml文件,完成算法流程圖。(10)
<filesystem>
< driverc >
<dir dirname=”msdos622”>
<file filename =” command.com” ></file>
</dir>
<file filename =”msdos.sys” ></file>
<file filename =” io.sys” ></file>
</driverc>
</filesystem>
請畫出遍歷所有文件名(filename)的流程圖(請使用遞歸算法)。
答:
void findfile( directory d )
{
fileorfolders = d.getfileorfolders();
foreach( fileorfolder fof in fileorfolders )
{
if( fof is file )
you found a file;
else if ( fof is directory )
findfile( fof );
}
}
簡單的說就是從根節點開始遍歷找子節點,在從找到的子節點找它的子節點,一層層下去
|
新聞熱點
疑難解答