.net

来源:互联网 发布:室内设计网络教育 编辑:程序博客网 时间:2024/06/07 21:01

51  请解释ASPNET中的web页面与其隐藏类之间的关系?

一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>

Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件

Inherits="T1.Tst1" 表用运行时使用哪一个隐藏类

52  什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用。最有力的举例子:LabelTextBox在禁用ViewState后不同的表现来说明。

53、你对web service的体会?

答:如果自己写的一些程序也希望别人可以通过Web服务来使用,也可以把自己编写的方法贴上标签[WebMethed]来实现Web 服务。[是当编写程序时,希望实现一些别的网站已经实现过的,也用Web服务可视成XML语言的编码。可以使用别人的编码生成的XML找到自己需要的信息,来实现自己编写的程序的一些功能。把传智播客.net培训的如鹏网项目中用WebService实现管理客户端的例子说出来。

SOAPWSDL

54您在什么情况下会用到虚方法?它与接口有什么不同?

答案:子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual 

在定义接口中不能有方法体,虚方法可以。

实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。

讲到这里了

55不定项选择:

(1) 以下叙述正确的是: B C

A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 

(2) 从数据库读取记录,你可能用到的方法有:B C D

      A. ExecuteNonQuery            B. ExecuteScalar      C. Fill                        D. ExecuteReader

3.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选)   (        ABC         )   

  A.Close B.Dispose C.Finalize   

  D.using E.Quit   

4以下关于refout的描述哪些项是正确的?(多选)   (    ACD   )   

  A.使用ref参数,传递到ref参数的参数必须最先初始化。   

  B.使用out参数,传递到out参数的参数必须最先初始化。   

  C.使用ref参数,必须将参数作为ref参数显式传递到方法。   

  D.使用out参数,必须将参数作为out参数显式传递到方法。 

讲到这里

56项选择:

1下列选项中,(C)是引用类型。

a)enum类型   b)struct类型 c)string类型   d)int类型

2.关于ASP.NET中的代码隐藏文件的描述正确的是(C

a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为代码隐藏文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。

b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

d)以上都不正确。

3.下列描述错误的是(D

a)类不可以多重继承而接口可以;

b)抽象类自身可以定义成员而接口不可以;

c)抽象类和接口都不能被实例化;

d)一个类可以有多个基类和多个基接口;

57DataReaderDataSet的异同?

DataReader使用时始终占用SqlConnection,在线操作数据库

每次只在内存中加载一条数据,所以占用的内存是很小的

是只进的、 只读的

DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接(非连接模式)

DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,,数据.对数据库进行 回传更新操作(动态操作读入到内存的数据)

58public static const; int  A = 1;这段代码有错误么? 

错误:const不能被修饰为static ;因为定义为常量 (const )后就是静态的(static )。

59传入某个属性的set方法的隐含参数的名称是什么?

value,它的类型和属性所声名的类型相同。 

60C#支持多重继承么?

类之间不支持,接口之间支持。类对接口叫做实现,不叫继承。 

61C#中所有对象共同的基类是什么?

System.Object

62、通过超链接怎样传递中文参数?

答:用URL编码,通过QueryString传递,用urlencode编码 用urldecode解码

63stringStringintInt32Booleanbool的区别

StringInt32Boolean等都属于.Net中定义的类,而stringintbool相当于C#中对这些类定义的别名。CTS

64Server.TransferResponse.Redirect的区别是什么?(常考)

: Server.Transfer仅是服务器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;Response.Redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

Server.Transfer是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 这个过程中浏览器和Web服务器之间经过了一次交互。

   Response.Redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求。这个过程中浏览器和Web服务器之间经过了两次交互。

65、不是说字符串是不可变的吗?string s="abc";s="123"不就是变了吗?(传智播客.Net培训班原创模拟题)

String是不可变在这段代码中,s原先指向一个String对象,内容是 "abc",然后我们s指向"123",那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"123",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

66、是否可以从一个static方法内部发出对非static方法的调用? 

不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部不能发出对非static方法的调用。

67.Net中会存在内存泄漏吗,请简单描述。 (*)

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。.Net中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。虽然.Net可以回收无用的对象,但是.Net仍然存在由于使用不当导致的内存泄露问题。.Net中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是.Net中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是.Net中可能出现内存泄露的情况,例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局Dictionary对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

formManager

{

  public static IList<Form> forms = new .....;  

}

扩展:使用弱引用那么及时被引用也可以被回收。

68说出一些常用的类、接口,请各举5个 

要让人家感觉你对.Net开发很熟,所以,不能仅仅只列谁都能想到的那些东西,要多列你在做项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。

常用的类:StreamReaderWebClientDictionary<K,V>StringBuilderSqlConnectionFileStreamFileRegexList<T> 

常用的接口:IDisposableIEnumerableIDbConnectionIComparableICollectionIListIDictionary

要出乎意料!不要仅仅完成任务!

69BSCS的联系与区别。 

C/SClient/Server的缩写。客户端需要安装专用的客户端软件。 

B/S是Brower/Server的缩写,客户机上只要安装一个浏览器。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。 

C/S 与 B/S 区别: 

1).硬件环境不同

  C/S 一般建立在专用的网络上小范围里的网络环境局域网之间再通过专门服务器提供连接和数据交换服务

  B/S 建立在广域网之上的不必是专门的网络硬件环境,例与电话上网租用设备信息自己管理有比C/S更强的适应范围一般只要有操作系统和浏览器就行 

).对安全要求不同 

  C/S 一般面向相对固定的用户群对信息安全的控制能力很强一般高度机密的信息系统采用C/S 结构适宜可以通过B/S发布部分可**息

  B/S 建立在广域网之上对安全的控制能力相对弱可能面向不可知的用户。 

3).处理问题不同 

  C/S 程序可以处理用户面固定并且在相同区域安全要求高需求与操作系统相关应该都是相同的系统。C/S的客户端由于是本地程序,因此和本地硬件、程序的交互性很强,比如可以控制本机的其他程序、可以读写本地磁盘文件、可以与硬件交互。

  B/S 建立在广域网上面向不同的用户群分散地域这是C/S无法作到的与操作系统平台关系最小,正应为如此B/S很难和本地硬件、程序、文件进行交互,比如很难控制本机的其他程序、很难读写本地磁盘文件、很难与硬件交互,当然可以用ActiveX技术解决,比如网银等就是这么解决的,这样做的问题就是可能会被客户拒绝,而且只局限于Windows操作系统。

C/S也分为两层架构和三层架构。两层架构:客户端程序程序直连数据库;三层架构:客户端访问服务端的服务,主要逻辑代码写在服务端的服务中,然后服务端服务再去访问数据库,Oracle版分布式呼叫中心,WCF

70、编写一个单例(Singleton)类。

参考复习ppt

把构造函数设置为private,设置一个publicstatic的对象实例

public FileManager

{

    private FileManager(){}

    public static FileManager Instance = new FileManager();

}

扩展:搜“C#  Singleton

71、什么是sql注入?如何避免sql注入?

用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意SQL语句。使用参数化的SQL就可以避免SQL注入。

详细参考复习ppt。举例子,摆事实!

1' or 1=1

72数据库三范式是什么?

传智播客风格的非严谨却一下子明了的解答方式:

第二范式:表必须有主键。

第三范式:表引用其他的表必须通过主键引用。

73、说出一些数据库优化方面的经验?

索引内部原理:想象成Dictionary,插入、删除、更新的速度慢了,加上索引也多占用了空间,查询的速度快了。加上索引以后速度提升非常明显。

1在经常检索的字段上(select * from Person where Name=@Name)使用索引提高查询速度。(2select中只列出必要的字段,而不是*。(3避免隐式类型转换造成的全表扫描,在索引上使用函数也会造成全表扫描(因为索引只是为字段建立的,一旦使用表达式或者函数,那么索引就是失效了,当然也可以使用“函数索引”、“表达式索引”解决这个问题),使用索引不一定能提高查询速度。4)避免在索引列上使用计算(where Name+'A'=@MyName

加分的回答:不进行无意义优化,根据性能查看器的报表,对最耗时的SQL进行优化。

74、什么是数据库事务?

事务三个特性:一致性、原子性、隔离性。

几个SQL语句,要么全部执行成功,要么全部执行失败。举例就用最经典的银行转账的例子就行,然后再举一个项目中用的例子:传智播客.net培训中批量导入客户数据的时候要么全部导入成功,要么全部导入失败。事务的三个操作:BeginCommitRollBack

取刚插入数据的id值,就要用事务来隔离:Insert select top 1 id from ....

75、谈谈你对设计模式的理解(传智播客.Net培训班原创模拟题)

世界上本没有模式,用的人多了,也就有了模式。不用刻意记每种模式的名字,手中无模式,心中有模式。

大部分设计模式就是接口、抽象类的一个组合。ADO.Net基于接口编程,SafeDbCommandSafeConnectionSettingsProvider。没必要记模式的名字。

举例:传智播客.net培训时SettingsProvider、第三方支付的例子。

76、谈谈ViewState。谈谈对ASP.Net原理的理解。谈谈ASP.Net生命周期。

LabelTextbox在禁用ViewState的时候自增的不同表现

Http是无状态的WebForm为了实现基于http的“有状态”从而简化开发,ViewState用来在两次请求间保持状态。页面返回前将界面的状态序列化到ViewState中,这样就将状态保存在了浏览器中,下次页面提交的时候会顺便再将ViewState提交到服务器,这样服务器就根据ViewState还原了状态,这样WebForm开发就像有状态一样了。谈谈自定义AutoInc控件。

77postget的区别

get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中;

使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;

get的页面可以被搜索引擎抓取,而用post的则不可以;

post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。

post可以进行文件的提交,而用get则不可以。

 参考阅读:http://www.cnblogs.com/skynet/archive/2010/05/18/1738301.html 

78、下面的程序执行结果是什么?(传智播客.Net培训班原创模拟题)

    class Person

    {

        public int Age { getset; }

    }

            int i1 = 20;

            int i2 = i1;

            i1++;

            Console.WriteLine(i2);

            Person p1 = new Person();

            p1.Age = 20;

            Person p2 = p1;

            p1.Age++;

            Console.WriteLine(p2.Age);

答案:

20

21

解释:引用类型和值类型的区别。 

79Http默认的端口号是(80)、Ftp默认的端口号是(21)、SQLServer的默认端口号是(1433)(传智播客.Net培训班原创模拟题)

80运算符++a表示(先将a1,然后表达式的值为a1后的值),i++表示(表达式的值为a,然后a1)。

81、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)

            int i = 10;

            Console.WriteLine(i++);

            Console.WriteLine(++i);

            Console.WriteLine(i=20);

答案:

10

12

20        

解答:前两个参考第80题,i++表达式的值为i自增之前的值,所以打印10,执行完成后i变成11,执行++i的时候表达式的值为自增以后的值12。C#中赋值表达式的值为变量被赋值的值,因此最后一个就输出i赋值后的值20

while((line=reader.ReadLine())!=null)

{

}

82、如果不用VisualStudio,用哪个命令行编译C#程序?(*)(传智播客.Net培训班原创模拟题)

答:csc.exe。

83、下列哪个名词和WebService不直接相关?(B)(传智播客.Net培训班原创模拟题)

A、UDDI 

B、GUID

C、WSDL

D、SOAP

SOAP和HTTP的关系:SOAP基于Http协议的,和普通网页不同的是网页返回HTML,SOAP则是符合SOAP协议的XML数据。

84、.Net Framework中的类是专门供C#调用的是吗?(传智播客.Net培训班原创模拟题)

答:错。VB.Net等语言都可以调用.Net Framework中的类。CTS、CLS。

85、开放性问题:说出尽可能多的基于.Net Framework的语言。(*)(传智播客.Net培训班原创模拟题)

参考解答:C#、VB.Net、F#、PowerShell、IronPython、J#、Ruby.Net

86、.Net、ASP.Net、C#、VisualStudio之间的关系是什么?(传智播客.Net培训班原创模拟题)

答:.Net一般指的是.Net Framework,提供了基础的.Net类,这些类可以被任何一种.Net编程语言调用,.Net Framework还提供了CLR、JIT、GC等基础功能。

ASP.Net是.Net中用来进行Web开发的一种技术,ASP.Net的页面部分写在aspx 文件中,逻辑代码通常通过Code-behind的方式用C#、VB.Net等支持.Net的语言编写。

C#是使用最广泛的支持.Net的编程语言。除了C#还有VB.Net、IronPython等。

VisualStudio是微软提供的用来进行.Net开发的集成开发环境(IDE),使用VisualStudio可以简化很多工作,不用程序员直接调用csc.exe等命令行进行程序的编译,而且VisualStudio提供了代码自动完成、代码高亮等功能方便开发。除了VisualStudio,还有SharpDevelop、MonoDevelop等免费、开源的IDE,VisualStudio Express版这个免费版本。

87、AJAX解决什么问题?如何使用AJAX?AJAX有什么问题需要注意?项目中哪里用到了AJAX?(传智播客.Net培训班原创模拟题)

答:AJAX解决的问题就是“无刷新更新页面”,用传统的HTML表单方式进行页面的更新时,每次都要将请求提交到服务器,服务器返回后再重绘界面,这样界面就会经历:提交→变白→重新显示这样一个过程,用户体验非常差,使用AJAX则不会导致页面重新提交、刷新。

AJAX最本质的实现是在Javascript中使用XMLHttpRequest进行Http的请求,开发中通常使用UpdatePanel、JQuery等方式简化AJAX的开发,UpdatePanel的方式实现AJAX最简单,但是数据通讯量比较大,因为要来回传整个ViewState,而且不灵活,对于复杂的需求则可以使用JQuery提供的ajax功能。

UpdatePanel的内部原理。

AJAX最重要的问题是无法跨域请求(www.rupeng.com →so.rupeng.com),也就是无法在页面中向和当前域名不同的页面发送请求,可以使用在当前页面所在的域的服务端做代理页面的方式解决。

在如鹏网项目中发帖的时候显示相关帖的功能、站内搜索项目中显示搜索Suggestion、数据采集项目中都用到了AJAX。

88、NET通过对各语言先编译成( IL),然后再执行时用( JIT)将其编译成本地平台代码,来实现异构平台下对象的互操作。(*)

89、编写正则表达式验证一个字符串是否为Email。复习正则表达式部分的知识。

90、Application 、Cookie和 Session 两种会话有什么不同

答:Application是用来存取整个网站全局的信息,而Session是用来存取与具体某个访问者关联的信息。

91、开放式问题:你经常访问的技术类的网站是什么?

博客园(www.cnblogs.com)、csdn、codeplex、codeproject、msdn文档、msdn论坛(遇到问题先到网上搜解决方案,还不行就问同事,同事也解决不了就去MSDN论坛提问,一定能得到解决)

92、你对.net的GC的理解

GC是.Net的垃圾收集器,可以进行内存资源的回收,程序员无需关心资源的回收,当一个对象没有任何引用的时候就可以被回收了。一个对象可以被回收并不意味着一定会被立即回收,GC会选择时机进行回收。可以调用GC.Collect()让GC立即回收。GC不能回收非托管资源,对于非托管资源一般都实现了IDisposable接口,然后使用using关键字进行资源的回收。

93、请写一个SQL语句:从user表中取出name列中的起始字符是“北京”的全部记录

select * from [user] wherer name like'北京%'

94、请你简单的说明数据库建立索引的优缺点

使用索引可以加快数据的查询速度,不过由于数据插入过程中会建索引,所以会降低数据的插入、更新速度,索引还会占磁盘空间。

95、什么是WEB服务控件?使用WEB服务控件有那些优势、劣势?  

web服务控件就是可以在服务器执行的控件,优势在于可以回传数据(ViewState),带有事件驱动(doPostBack),简化了Html标签的使用,使得开发ASP.net程序可以像开发Winform程序一样简单。Web服务控件最终还是被渲染(Render)为Html标签。使用WEB服务控件的劣势是会生成一些无用的属性、ViewState等,不利于SEO,一般在内网系统或者互联网系统的后台中使用WEB服务控件。如果没有复杂的服务器交互动作,就不用Web服务器控件。

runat=server的HTML控件有什么特点:路径不用程序员解析,可以使用“~”来虚拟路径。

96、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)

            int i = 10;

            if (i <=0) ;

                Console.WriteLine("i必须大于0");

            Console.WriteLine("ok");

答案:

i必须大于0

ok

解答:注意if (i <=0)后面的“;”,由于有了“;”,所以Console.WriteLine("i必须大于0")不再是和if一起的一部分,而是独立的语句。

for循环也是如此。

97、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)(*)

        static void Main(string[] args)

        {

            Console.WriteLine(Calc());

            Console.ReadKey();

        }

        static int Calc()

        {

            int i = 0;

            try

            {

                return i;

            }

            finally

            {

                Console.WriteLine("finally");

                i++;

            }

        }

答案:

finally

0

解释:参考第22题的值,return先执行,finally后执行,所以return的值是没有i++之前的0。注意并不是return的时候函数真的就“返回、执行结束”了,return只是标记函数的返回值是0,标记完了还会执行finally中的代码,只有finally中的代码执行完成后函数才真正的返回。

98、开放式问题:工作中遇到不懂的问题是怎样去解决的?(传智播客.Net培训班原创模拟题)

参考解答:首先到百度上搜索中文的资料,一般都可以找到解决方案,如果还找不到解决方案就到google上搜索英文的资料,如果还没有解决方案就请教同事,如果同事也没有解决方案,就将问题提交到MSDN论坛。

99、开放性问题:你能说出哪些数据库?(传智播客.Net培训班原创模拟题)

参考解答:MSSQLServer、Oracle、Access、DB2、Sybase

100、开放性问题:你能说出尽可能多的你听说过的编程语言?(传智播客.Net培训班原创模拟题)(*)

参考解答:C#、VB.Net、Ada、Cobol、C、C++、Delphi、Erlang、F#、Fortran、Java、JavaScript、Pascal、Python、PowerShell、Ruby、Smalltalk。

原创粉丝点击