谁有这些面试题的答案啊,高分献上!

caoit 2005-03-04 10:42:28
1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
回答要点:说明详细的空间分配。(10分)




2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)





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事件。



}
}
}
}

4、分析以下代码,完成填空(10分)
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i= j=

5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)



6、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。(10分)
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}

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) 以上代码可以正确使用连接池吗?
2) 以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?

8、简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。(10)





9、公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:(10)





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)的流程图(请使用递归算法)。
...全文
639 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
cat_hsfz 2005-05-08
  • 打赏
  • 举报
回复
到底String str=""分配什么,这真是个值得研究的问题。虽然String.Empty已经存在,但是分配一个新String值为""到底是不是就用回String.Empty的引用,这应该不是吧。

另外我们讨论的都是理论上一个String占多少空间,难道你是有办法在C#里面SizeOf这个String吗?至于一个.NET String真正占的空间是多少,这真的很值得研究哦。
ziyan0218 2005-05-08
  • 打赏
  • 举报
回复
2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)
结构和类都是对成员的封装方式,它们都含有成员,包括构造函数、方法、属性、字段、常量、枚举和事件。都可以实现接口,都有共享的构造函数.
结构是值类型,而类是引用类型。因此,结构使用堆栈分配,类使用堆分配。类作为引用类型,存储在运行时的堆上,
只能通过引用该存储来访问它们,不能直接访问。引用类型的变量总是包含该类型的值引用,或包含空引用。空引用不引用任何内容。除分配空引用外,对空引用进行的任何操作都是无效的。引用类型的变量赋值只会创建引用的一个副本,而不是所引用值的副本。它们实际上都会指向同一块存储区。
结构直接存储在堆栈上,要么在数组中,要么在另一个类型中。当包含结构实例的位置被销毁时,结构实例也会被销毁。值类型可以直接访问。我们不能创建对值类型的引用,也不能引用已销毁的值类型实例。值类型的变量总是包含此类型的值。与引用类型不同,值类型的值不能为空引用,也不能引用派生相近程度较大的类型的对象。值类型变量的赋值会创建所赋值的副本,当然会新开辟一块内存区来保存值。
比如所有的结构成员都默认为 Public,类变量和常量默认为 Private,其他的类成员默认为 Public;结构成员不能声明为 Protected,类成员可以;结构过程不能处理事件,类过程可以;结构变量声明不能指定初始值、New关键字或数组初始大小,类变量声明可以
结构从不终止,所以公共语言运行库从不在任何结构上调用 Finalize 方法;类可由垃圾回收器终止,垃圾回收器会跟踪未完成的引用直到某个特定的实例,当检测到没有剩下的活动引用时,垃圾回收器将在类上调用 Finalize
结构是不可继承的,而类可以继承。其实结构自身是从 ValueType 类隐式继承下来的。数据类型可分为值类型和引用类型。值类型要么是堆栈分配的,要么是在结构中以内联方式分配的。引用类型是堆分配的。引用类型和值类型都是从最终的基类 Object 派生出来的。当值类型需要充当对象时,就在堆上分配一个包装,该包装能使值类型看上去像引用对象一样,并且将该值类型的值复制给它。该包装被加上标记,以便系统知道它包含一个值类型。这个进程称为装箱,其反向进程称为取消装箱。装箱和取消装箱能够使任何类型像对象一样进行处理。
Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.
.NET中,所有的类都是直接或间接继承自System.Object类。struct继承自System.ValueType,而后者又继承自System.Object。ValueType是在Stack上分配内存的,而“ReferenceType”(Class)是在托管堆上分配的,当GC执行内存回收时,只会对托管堆上的内存进行回收,对于Stack上分配的,应该说CLR对其全然不知,自然不会去回收。另外struct类似一个sealed class,一般在C#,VB.NET中struct也不能有默认构造器(但用IL写确实是可以的)。
afanti_nj 2005-05-08
  • 打赏
  • 举报
回复
5、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号。(10)

SELECT top 1 ID
FROM table1
order by LastUpdateDate desc

^-^
fzxml 2005-05-08
  • 打赏
  • 举报
回复
mark
仓木泽 2005-05-08
  • 打赏
  • 举报
回复
我一题都不会,看来只能要饭了
too
njuzgj 2005-05-08
  • 打赏
  • 举报
回复
我一题都不会,看来只能要饭了
lilijr 2005-05-08
  • 打赏
  • 举报
回复
标记一下
豌豆干 2005-05-08
  • 打赏
  • 举报
回复
再在知道我的.net学的还很肤浅,还要努力,yes!
zmacro 2005-05-08
  • 打赏
  • 举报
回复
学习
evaELLIS 2005-05-07
  • 打赏
  • 举报
回复
刚巧路过,随便做做,不正确之处,见笑了:)

1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
-----------------------------------------------------------------
=null,不初始化,不分配内存
="",初始化,分配内存,内容是空串


2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)
-----------------------------------------------------------------
.NET中,所有的类都是直接或间接继承自System.Object类。struct继承自System.ValueType,而后者又继承自System.Object。ValueType是在Stack上分配内存的,而“ReferenceType”(Class)是在托管堆上分配的,当GC执行内存回收时,只会对托管堆上的内存进行回收,对于Stack上分配的,应该说CLR对其全然不知,自然不会去回收。另外struct类似一个sealed class,一般在C#,VB.NET中struct也不能有默认构造器(但用IL写确实是可以的)。


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= 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);
}
}
}

会死锁。先调用test(11),然后i--;调用test(10),然后由于lock主了,导致test(10)无法返回,test(11)也就无法返回,所以死锁。



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)
可能要抽象出“行”的概念。对任何一列进行排序,其实就是对字符串排序,有了排序后的字符串,再利用“行”概念,重新显示数据。。。。。。


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 );
}
}

pclogic 2005-05-07
  • 打赏
  • 举报
回复
mark
flyrat 2005-05-07
  • 打赏
  • 举报
回复
mark
wangasp 2005-04-26
  • 打赏
  • 举报
回复
学习
Ivony 2005-03-05
  • 打赏
  • 举报
回复
1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。


实际上深究起来,这两条语句都不会给str分配空间,str = null就不要说了,肯定是不会被分配空间的,表示str是一个空引用,而str = ""也不会分配空间,只会把""的引用赋给str,而""这个字符串的空间是早就分配好了的,即使你不str = ""也会分配。

因为:

static String()
{
string.Empty = "";//注意这里。
string.WhitespaceChars = new char[0x15] {
'\t', '\n', '\v', '\f', '\r', ' ', '\x00a0', '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', '\u2007', '\u2008',
'\u2009', '\u200a', '\u200b', '\u3000', '\ufeff'
} ;
}
flyingonnet 2005-03-05
  • 打赏
  • 举报
回复
上边的几位回答的都还不错,如果你对上边的问题比较熟悉,英文好,可以交流,并且乐意来海外(新加坡)工作,可以给我发消息。我的旧同事,比我年龄和经验大的多,他的公司需要.NET开发人员。
flyingonnet 2005-03-05
  • 打赏
  • 举报
回复
上边的几位回答的都还不错,如果你对上边的问题比较熟悉,英文好,可以交流,并且乐意来海外(新加坡)工作,可以给我发消息。我的旧同事,比我年龄和经验大的多,他的公司需要.NET开发人员。
tonybaobao 2005-03-05
  • 打赏
  • 举报
回复
刚巧路过,随便做做,不正确之处,见笑了:)

1、在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。
-----------------------------------------------------------------
=null,不初始化,不分配内存
="",初始化,分配内存,内容是空串


2、请详述在dotnet中类(class)与结构(struct)的异同:(10分)
-----------------------------------------------------------------
.NET中,所有的类都是直接或间接继承自System.Object类。struct继承自System.ValueType,而后者又继承自System.Object。ValueType是在Stack上分配内存的,而“ReferenceType”(Class)是在托管堆上分配的,当GC执行内存回收时,只会对托管堆上的内存进行回收,对于Stack上分配的,应该说CLR对其全然不知,自然不会去回收。另外struct类似一个sealed class,一般在C#,VB.NET中struct也不能有默认构造器(但用IL写确实是可以的)。


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= 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);
}
}
}

会死锁。先调用test(11),然后i--;调用test(10),然后由于lock主了,导致test(10)无法返回,test(11)也就无法返回,所以死锁。



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)
可能要抽象出“行”的概念。对任何一列进行排序,其实就是对字符串排序,有了排序后的字符串,再利用“行”概念,重新显示数据。。。。。。


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 );
}
}
flyingonnet 2005-03-05
  • 打赏
  • 举报
回复
上边的几位回答的都还不错,如果你对上边的问题比较熟悉,英文好,可以交流,并且乐意来海外(新加坡)工作,可以给我发消息。我的旧同事,比我年龄和经验大的多,他的公司需要.NET开发人员。
noyester 2005-03-05
  • 打赏
  • 举报
回复
4和8,能答一点点,别的都不会
5555
seaonce 2005-03-05
  • 打赏
  • 举报
回复
惭愧,只能回答出几个
加载更多回复(13)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧