c#高级程序员面试题附部分参考答案Word文件下载.docx
- 文档编号:19222207
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:10
- 大小:48.41KB
c#高级程序员面试题附部分参考答案Word文件下载.docx
《c#高级程序员面试题附部分参考答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《c#高级程序员面试题附部分参考答案Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。
博客园:
5.Javascript中类库的制作和调用方法
创建外部JS文件,在JS文件中可以创建多个对象或类。
一个JS文件可以看成是一个类库。
首先引用该JS类库,再实例化类库中的对象即可实现调用。
6.AJAX原理及你所知道和使用过的版本
简单的讲就是客户端通过javascript脚本获取服务器端的文本,通过解析返回值,更新部分的网页内容。
ASP.NET中AJAX版本:
∙ASP.NET2.0AJAXExtensions1.0
∙ASP.NETAJAX3.5
∙MicrosoftAJAXLibrary3.5SP1
∙ASP.NETAJAX4.0Preview3
7.WebService使用的协议及简述工作流程
封装必须是SOAP(SimpleObjectAccessProtocol简单对象存取)协议
封装后的消息你可以通过各种已有的协议来传输,比如http,https,tcp/ip,smtp等
step1:
加入web应用,将刚才发布的web服务加入,这时生成了上述web服务在本地的一个代理,我们假设为WebProxy。
step2:
客户端调用之前首先实例化一个该代理的对象,然后调用发布的方法
step3:
客户端将调用信息包括方法名和参数加入到soap消息中通过http传送给webservice服务端
step4:
服务端从soap消息中获得调用信息,然后执行方法,将返回结果加入到soap消息中然后通过http传回
step5:
客户端代理得到这个soap消息后解析处结果返回给调用客户端方法
8.谈一下WebService的安全性及相关技术
1.接收到来自网络的SOAP请求。
它是否包含身份验证凭证取决于所使用的身份验证类型。
2.IIS可以有选择地使用基本、摘要、集成(NTLM或Kerberos)或证书身份验证对调用者进行身份验证。
在不能使用IIS(Windows)身份验证的异类环境中,可以将IIS配置为使用匿名身份验证。
在这个方案中,可以使用消息级属性(例如,在SOAP标头中传递的票证)对客户端进行身份验证。
3.IIS也可以配置为只接受来自特定IP地址的客户端计算机的请求。
4.IIS将已验证的调用者的Windows访问令牌传递给ASP.NET(如果将Web服务配置为使用匿名身份验证,则它可能是匿名Internet用户的访问令牌)。
5.ASP.NET对该调用者进行身份验证。
如果将ASP.NET配置为使用Windows身份验证,则此时不会进行任何其他的身份验证;
IIS对调用者进行身份验证。
如果使用的是非Windows身份验证方法,则将ASP.NET身份验证模式设置为“无”以使用自定义身份验证。
注Web服务目前不支持表单和Passport身份验证。
6.ASP.NET通过使用URL授权和文件授权来授权访问所请求的Web服务(.asmx文件),文件授权使用与.asmx文件关联的NTFS权限来确定是否将访问权限授予已验证身份的调用者。
注只能将文件授权用于Windows身份验证。
对于细分的授权,还可以使用.NET角色(以声明方式或编程方式)确保授权调用者访问所请求的Web方法。
7.Web服务中的代码可以使用特定标识来访问本地和/或远程资源。
在默认情况下,ASP.NETWeb服务不执行任何模拟,因此,配置的ASP.NET进程帐户提供该标识。
也可以选择原调用者的标识或已配置的服务标识。
强悍的技术参考文章:
9.事务操作的原理及同库事务及跨库事务的思路
首先题目问的有点模糊,事务有很多种。
不知道出题者是要问具体的那种事务。
此答案暂以NET中的事务处理作答!
事务处理协议分成两个阶段(准备阶段和提交阶段)
应用程序选择控制代理,即commit
agent.
commit
agent可以是参与的资源管理器之一,例如com+或者其他的资源管理器
下面是执行的步骤
1。
评估每一个资源管理器的条件,以com+为例
2。
启动每一个管理器将会处理的方法
3。
确认方法已经启动
4。
应用程序检察确保所有的管理器都成功的完成了他们的功能。
5。
确认没有错误
6。
把条件报告给com+
7.确认可以开始提交
8。
发送提交,修改所有的数据
如果任何参与的资源管理器提交失败,应用程序必须在所有的资源管理器中中止事务处理
跨库事务处理思路:
首先进行本地的数据库提交,
如果本地失败,那直接进行回滚,
如果本地成功,则进行远程提交,捕获远程提交的结果,
如果抛出远程异常(remoteExcepiton),则进行回滚
如果成功,则进行提交.
9.简述你的一个项目,主要的流程及部署
可行性分析->
招投标->
需求分析->
概要设计->
详细设计->
代码编写和单元测试->
集成测试->
部署试运行->
验收->
后期升级维护。
10.谈一下你对SOA的理解及熟习的SOA架构
SOA--Service-OrientedArchitecture。
SOA是一种IT体系结构样式,支持将您的业务作为链接服务或可重复业务任务进行集成,可在需要时通过网络访问这些服务和任务。
这个网络可能完全包含在您的公司总部内,也可能分散于各地且采用不同的技术,通过对来自纽约、伦敦和香港的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。
SOA优点:
﹡更高的业务和IT一致性
﹡基于组件的系统
﹡松散耦合的组件和系统
﹡基于网络的基础设施,允许分散于各地且采用不同技术的资源协同工作
﹡动态构建的按需应用程序
﹡更高的代码重用率
﹡更好地标准化整个企业内的流程
﹡更易于集中企业控制
SOA主要特点:
●
松耦合
服务请求方与服务之间应该是松耦合的。
它们之间不是绝对相互依赖的关系,它们可能各自有自己的独立功能,有需要的时候一方向另一方请求服务以完成某项功能,但是如果访问不到该服务,也不会影响到请求方的其它功能的正常运作。
这样降低了双方的耦合性,也就降低了系统间的相互间的不良影响的扩散,提高了整体的可靠性。
●
明确定义的接口
服务交互必须是明确定义的。
Web服务描述语言(WebservicesDescriptionLanguage,WSDL)是受到广泛支持的方法,用于描述服务请求者所要求的绑定到服务提供者的细节。
服务描述的重点在于与下面几部分交互所用的操作:
服务
调用操作的消息
构造这种消息的细节
关于向何处发送用于构造这种消息的处理细节的消息的信息
WSDL不包括服务实现的任何技术细节。
服务请求者不知道也不关心服务究竟是由Java代码、C#、COBOL,还是由某种其他的程序设计语言编写的。
WSDL的通用定义允许开发工具创建各种各样类型的交互的通过接口,同时隐藏它是如何由应用程序代码调用服务的细节。
无状态的服务设计
服务应该是独立的、自包含的请求,在实现时它不需要从一个请求到另一个请求的信息或状态。
服务不应该依赖于其他服务的上下文和状态。
如果需要服务端保存每次客户端请求的状态,将会大大加大复杂性,也有悖松耦合的理念。
实际中往往有需要在客户端多次访问服务端时保持状态,这时最好的处理方法是由客户端记住状态,下次请求服务时把状态发送到服务端,服务端在任何时候接收到请求都当作一个新的请求进行处理。
服务粒度
推荐使用粗粒度的接口,一般是把具有比较完整的功能包装成服务对外提供,这样可以体现服务的意义,才能称得上是服务。
如果对外提供的服务粒度很细,每个服务提供一个简单的数据返回,要完成一个完整的功能,可能需要客户调用多次服务才能完成,这样的服务不但使用繁琐,也会增加不必要的网络通讯压力,这样的服务适合做内部的接口,不适合做对外的服务。
主流SOA架构:
微软:
biztalk
IBM:
WebSphereMQ以及WebSphereBusinessIntegrationMessageBroker。
SAP:
mySAP、SAPBusinessAll-in-one、SAPBusinessone
ORACLE:
OracleSOASuite
WebMethods:
webMethodsIntegrationPlatform
BEA:
AquaLogic(在2008年1月16日,以85亿美元被Oracle公司收购)
参考:
11.谈一下你对SaaS的理解
SaaS是Software-as-a-service(软件即服务)的简称,是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式。
它与“on-demandsoftware”(按需软件),theapplicationserviceprovider(ASP,应用服务提供商),hostedsoftware(托管软件)所具有相似的含义。
它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。
用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。
对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
在这种模式下,客户不再象传统模式那样花费大量投资用于硬件、软件、人员,而只需要支出一定的租赁服务费用,通过互联网便可以享受到相应的硬件、软件和维护服务,享有软件使用权和不断升级,这是网络应用最具效益的营运模式。
13.你是否在ASP.NET之外还会JAVA、PHP?
14.如果让你设计一个登录模块,你会怎么考虑和制作?
15.如果让你制作日志模块,你会怎么考虑和制作?
16.如果让你制作用户权限模块,你会怎么考虑和制作?
17.如果让你做文件上传模块,你会怎么考虑和制作?
如果文件大于1G你会怎么考虑设计?
1.分割成多个块,压缩,上传,然后再合并
2.多线程上传
3.AJAX上传(问题多,慎用)
18.是否了解及使用过WCF、WF、WPF?
19.Web页面的打印及报表的输出思路?
20.报表的制作思路?
21.谈一下你对.Net中垃圾回收的理解?
博客园:
22.ADO和ADO.NET的区别?
ADO和ADO.NET的区别:
ADO使用OLEDB接口并基于微软的COM技术
而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。
ADO以Recordset存储,而ADO.NET则以DataSet表示。
Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。
反之,DataSet可以是多个表的集合。
ADO的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。
ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本
ADO.NET的数据库连接也只有在这段时间需要在线。
由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范
而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。
ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访问方式。
与ado存在着比较大的差异:
1.遵循更通用的原则,不那么专门面向数据库。
集合了所有允许数据处理的类。
这些类表示具有典型数据库功能(如索引,排序和视图)的数据容器对象。
尽管是.net数据库应用程序的权威解决方案
但从总体设计上看,它不像ado数据模型那样以数据库为中心,这是的一大特点。
2.目前,提供了两种数据库访问类库:
一种用于sqlserver7.0或更高版本
另一种用于其他所有您可能已经安装的oledb提供程序。
在这两种情况下,您分别使用不同的类,但遵循相似的命名规则。
除前缀,名称都是相同的。
前一种情况前缀为sql,后一种情况则是oledb。
同时,.net框架还提供了odbc.net的数据访问模式。
odbc.netdataprovider是.net框架的增强组件,它可以访问原始的odbc驱动程序
就像oledb.netdataprovider可以访问原始的oledbproviders一样。
目前它仅在下列驱动程序中测试过:
microsoftsqlodbcdriver,microsoftodbcdriverfororacle,microsoftjetodbcdriver。
3.提供了两个队形来处理从数据源中抽取数据,它们是dataset和datareader对象。
前者是记录在内存中的缓存,您可以从任何方向随意访问和修改。
后者是高度优化的对象,专为以仅向前方式滚动只读记录而设计。
4.统一了数据容器类编程接口,无论您打算编写何种应用程序,windows窗体,web窗体还是web服务
都可以通过同一组类来处理数据。
不管在后端的数据源数sqlserver数据库,oledb,xml文件还是一个数组
您都可以通过相同的方法和属性来滚动和处理它们的内容。
5.在ado中,xml只不过是输入和输出格式。
然而在中,xml是一种数据格式,提供了操作,组织,共享和传递数据的手段。
ADO。
NET相对于ADO等主要有什么改进?
1:
不依赖于oledb提供程序,而是使用.net托管提供的程序,
2:
不使用com
3:
不在支持动态游标和服务器端游
4:
可以断开connection而保留当前数据集可用
5:
强类型转换
6:
xml支持
23.托管程序与非托管程序的区别
一般一个可执行文件的内部都包含一个PE头,系统根据PE的信息找到入口函数,在通过执行入口函数中的代码来执行可执行程序。
托管程序的文件中相对于非托管程序还包含了一个CLR表头文件以及其他CLR需要的信息。
(1)非托管程序的执行过程
在非托管程序中,可执行里面保存的是机器代码,CPU可以直接加载并执行,当系统加载了可执行程序后,系统就将可执行文件的段基址加上偏移地址形成实际的物理地址,并直接加载到内存中运行。
(2)托管程序的执行过程
托管程序的可执行文件中,包含的是中间语言以及元数据,当然不能直接运行,必须启动CLR,由CLR对中间语言进行即时编译成机器代码,并加载到内存里面执行(具体过程:
程序在进入入口函数前会提前跳转到MSCoree.dll中,调用它的代码来启动CLR并完成一些初始化工作)。
当然,IL中的方法并不是每次被调用都会被编译一次,而是它只有在第一次调用时才进行编译,即时编译器会将方法名称以及对应的入口地址存放在映射表中,当下次调用该方法时,会直接从映射表里去而不是再编译一次。
24.readonly关键字与const关键字
1.const字段只能在该字段的声明中初始化。
readonly字段可以在声明或构造函数中初始化。
因此,根据所使用的构造函数,readonly字段可能具有不同的值。
2.const字段是编译时常数,而readonly字段可用于运行时常数。
3.const默认就是静态的,而readonly如果设置成静态的就必须显示声明。
4.const对于引用类型的常数,可能的值只能是string和null。
readonly可以是任何类型
25.反射和序列化
反射:
程序集包含模块,而模块包含类型,类型又包含成员。
反射则提供了封装程序集、模块和类型的对象。
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。
然后,可以调用类型的方法或访问其字段和属性
序列化:
序列化是将对象转换为容易传输的格式的过程。
例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。
在另一端,反序列化将从该流重新构造对象。
26.ArrayList类和Array类的区别
1Array位于system命名空间中,而ArrayList位于system.collections命名空间中。
2Array的容量是固定的,而ArrayList的容量是根据需要自动扩展的。
如果更改了arraylist.capacity属性的值,则自动进行内存重新分配额元素复制。
3ArrayList提供添加,插入或移除某一范围元素的方法。
在Array中,只能一次获取或设置一个元素的值。
4使用Synchronized方法可以很容易地创建arraylist的同步版本。
而array将一直保持它直到用户实现同步为止。
5ArrayList提供将只读和固定大小包装返回到集合的方法,而array不提供。
6另一方面,array提供arraylist所不具有的某些灵活性。
7可以设置array的下限,但arraylist的下限始终为零。
8array可以具有多个维度,而arraylist始终只是一维的
9特定类型的array具有比arraylist更好的性能,则是因为arraylist的元素属于object类型,所以在存储或检索值类型时通常发生装箱和取消装箱
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c# 高级程序员 试题 部分 参考答案