C#面试常问技术问题.docx

上传人:b****8 文档编号:9924761 上传时间:2023-05-22 格式:DOCX 页数:43 大小:33.61KB
下载 相关 举报
C#面试常问技术问题.docx_第1页
第1页 / 共43页
C#面试常问技术问题.docx_第2页
第2页 / 共43页
C#面试常问技术问题.docx_第3页
第3页 / 共43页
C#面试常问技术问题.docx_第4页
第4页 / 共43页
C#面试常问技术问题.docx_第5页
第5页 / 共43页
C#面试常问技术问题.docx_第6页
第6页 / 共43页
C#面试常问技术问题.docx_第7页
第7页 / 共43页
C#面试常问技术问题.docx_第8页
第8页 / 共43页
C#面试常问技术问题.docx_第9页
第9页 / 共43页
C#面试常问技术问题.docx_第10页
第10页 / 共43页
C#面试常问技术问题.docx_第11页
第11页 / 共43页
C#面试常问技术问题.docx_第12页
第12页 / 共43页
C#面试常问技术问题.docx_第13页
第13页 / 共43页
C#面试常问技术问题.docx_第14页
第14页 / 共43页
C#面试常问技术问题.docx_第15页
第15页 / 共43页
C#面试常问技术问题.docx_第16页
第16页 / 共43页
C#面试常问技术问题.docx_第17页
第17页 / 共43页
C#面试常问技术问题.docx_第18页
第18页 / 共43页
C#面试常问技术问题.docx_第19页
第19页 / 共43页
C#面试常问技术问题.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C#面试常问技术问题.docx

《C#面试常问技术问题.docx》由会员分享,可在线阅读,更多相关《C#面试常问技术问题.docx(43页珍藏版)》请在冰点文库上搜索。

C#面试常问技术问题.docx

C#面试常问技术问题

1、在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别。

回答要点:

说明详细的空间分配。

(10分)

答:

stringstr=null是不给他分配内存空间,而stringstr=""给它分配长度为空字符串的内存空间.

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

(10分)

答:

Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.

3、根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:

(10)

namespacetest

{

publicdelegatevoidOnDBOperate();

publicclassUserControlBase:

System.Windows.Forms.UserControl

{

publiceventOnDBOperateOnNew;

privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)

{

if(e.Button.Equals(BtnNew))

{

  //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。

}

}

}

答:

if(OnNew!

=null)

OnNew(this,e);

4、分析以下代码,完成填空(10分)

stringstrTmp="abcdefg某某某";

inti=System.Text.Encoding.Default.GetBytes(strTmp).Length;

intj=strTmp.Length;

以上代码执行完后,i=                j=         

答:

i=13,j=10

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

(10)

答:

SELECTID

FROMtable1

WHERELastUpdateDate=(SELECTMAX(LastUpdateDate)FROMtable1)

6、根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?

并简要说明理由。

(10分)

publicvoidtest(inti)

{  

lock(this)

{

if(i>10)

{

i--;

test(i);

}

}

}

答:

不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。

但如果把int换做一个object,那么死锁会发生)

7、分析以下代码。

(10)

publicstaticvoidtest(string ConnectString)

{

System.Data.OleDb.OleDbConnectionconn=newSystem.Data.OleDb.OleDbConnection();

conn.ConnectionString=ConnectString;

try

{

conn.Open();

…….

}catch(ExceptionEx)

{

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)

请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。

答:

voidFindFile(Directoryd)

{

   FileOrFolders=d.GetFileOrFolders();

   foreach(FileOrFolderfofinFileOrFolders)

{

       if(fofisFile)

             YouFoundafile;

       elseif(fofisDirectory)

             FindFile(fof);

   }

}

简单的说就是从根节点开始遍历找子节点,在从找到的子节点找它的子节点,一层层下去

 

一、Application对象

Application对象是个应用程序级的对象,用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。

Application的属性:

Application对象没有内置的属性,但是我们可以自行创建其属性。

<%Application(“属性名”)=值%>

大部分Application变量都 存放在Contents集合中,当创建一个新的Application变量时,其实就是在Contents集合中添加了一项。

下面两个脚本是等效的:

<%Application(“greeting”)=”hello!

”%>或<%Application.contents(“greeting”)=”hello!

”由于Application变量存在集合里,所以

如果想要全部显示,可以使用ForEach循环。

<%

ForEachitemINApplication.Contents

Response.write(“
”&item&Application.Contents(item))

next

%>

Application的方法:

Application的方法只有两个方法:

一个是Lock,另一个是Unlock。

其中Lock方法用于保证同一时刻只能一个用户对Application操作。

Unlock则用于取消Lock方法的限制。

如:

<%

Application.Lock

Application(“visitor_num”)=Application(“visitor_num”)+1

Application.Unlock

%>

Application的事件:

1、Application_OnStart()

当事件应用程序启动时触发。

2、Application_OnEnd()

此事件应用程序结束时触发。

这两个事件过程都是必须定义在Global.asp文件中,一般把连接数据的函数定义在这两个事件,然后放在Global.asp中。

例如:

SubApplication_OnStart

Application(“tt18_ConnectionString”)=“driver={SQL

Server};server=jeff;uid=sa;pwd=;database=test”

EndSub

一个数组能够被定义成Application对象,不过这个数组只能作为一个对象保存,而不能用Application(0)取出其值。

可以定义一个临时数

组实现这种功能。

如:

<%

dimArray()

Array=Application(“array”)

fori=0toubound(array)

Response.writeArray(i)

nexti

%>

同样要修改这个Application对象也可以定义一个临时数组,把Application对象赋给数组,然后修改这个数组的元素,最后把数组赋回

Application对象。

如:

<%

dimArray()

Array=Application(“array”)

Array(0)=”jeff”

Array

(1)=”zhu”

Application.lock

Application(“array”)=Array

Application.unlock

%>

二、ObjectContext对象

该对象用于控制ActiveServerPages的事务处理。

事务处理由MicrosoftTransactionServer(MTS)管理。

事件

ObjectContext.OnTransactionAbort

由放弃的事务处理事件激发,在脚本完成处理后发生。

ObjectContext.OnTransactionCommit

由成功的事务处理事件激发,在脚本完成处理后发生。

方法

ObjectContext.SetAbort

显式的放弃一次事务处理。

ObjectContext.SetComplete

覆盖前面任何调用ObjectContext.SetAbort方法的调用。

三、Request对象

Request对象用于接受所有从浏览器发往你的服务器的请求内的所有信息。

集合

Request.ClientCertificate(key[SubField])

所有客户证书的信息的集合。

对于Key,该集合具有如下的关键字:

Subject

证书的主题。

包含所有关于证书收据的信息。

能和所有的子域后缀一起使用。

Issuer

证书的发行人。

包含所有关于证书验证的信息。

除了CN外,能和所有的子域后缀一起使用。

VadidFrom

证书发行的日期。

使用VBscript格式。

ValidUntil

该证书不在有效的时间。

SerialNumber

包含该证书的序列号。

Certificate

包含整个证书内容的二进制流,使用ASN.1格式。

对于SubField,Subject和Issuer关键字可以具有如下的子域后缀:

(比如:

SubjectOU或IssuerL)

C

起源国家。

O

公司或组织名称。

OU

组织单元。

CN

用户的常规名称。

L

局部。

S

州(或省)。

T

个人或公司的标题。

GN

给定名称。

I

初始。

当文件cervbs.inc(VBscript使用)或cerjavas.inc(Jscript使用)通过使用#INCLUDE导向包含在你的ActiveServerPage里时,下面两个标志可

以使用:

ceCertPresent

指明客户证书是否存在,其值为TRUE或FALSE。

ceUnrecongnizedIssure

指明在该链表中的最后的证书的发行者是否未知,其值为TRUE或FALSE。

Request.Cookies(Cookie[(key).Attribute])

Cookie的集合。

允许获得浏览器的Cookie。

Cookie指明返回那一个Cookie。

Key用于从Cookie字典中返回具有某一关键字的Cookie值。

对于

Attribute,你能使用属性HasKeys来确定某一Cookie是否具有子关键字。

HasKeys的值为TRUE或FALSE。

Request.Form(Parameter)[(Index).Count]

填写在HTML的表单中所有的数据的集合。

Parameter是在HTML表单中某一元素的名称。

当某一参数具有不止一个值(比如,当在

以上是提交的表单,下面是处理表单的文件formjump.asp:

<%response.buff=true%>

Redirect示例

<%

thisurl=”

where=Request.form(“wheretogo”)

SelectCasewhere

case“fun”

response.redirectthisurl&“/fun/default.asp”

case“news”

response.redirectthisurl&“/news/default.asp”

case“sample”

response.redirectthisurl&“/sample/default.asp”

EndSelect

%>

这个例子当用户选择了以后,按”Jump”按钮提交表单,服务器接到申请后调用formjump.asp判断后定位到相应的URL。

不过这里有一点要注

意,HTTP标题已经写入到客户浏览器,任何HTTP标题的修改必须在写入页内容之前,遇到这种问题时,可以如下做:

在文件的开始<@Language=..>后写:

Response.Buffer=True

在结尾定:

Response.Flush

这里Flush是Response的一个方法,它必须是Buffer属性设置为True时才能使用,否则会产生一个运行模式错误。

另外一个Clear方法也是

用于清除被缓存的页面,同样要Buffer属性设置为True时才能使用。

5、End方法

该方法用于告知ActiveServer当遇到该方法时停止处理ASP文件。

如果Response对象的Buffer属性设置为True,这时End方法即把缓存中的

内容发送到客户并清除冲区。

所以要取消所有向客户的输出民,可以先清除缓冲区,然后利用End方法。

如:

<%

Response.buffer=true

Onerrorresumenext

Err.clear

ifErr.number<>0then

Response.Clear

Response.End

endif

%>

五、Server对象:

Server对象提供对服务器上的方法和属性的访问。

其中大多数方法和属性是作为实用程序的功能服务的。

语法

Server.property|method

属性

scriptTimeout:

scriptTimeout属性指定脚本在结束前最大可运行多长时间。

当处理服务器组件时,超时限制将不再生效。

语法 Server

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2