《C#精华面试题及答案.doc》由会员分享,可在线阅读,更多相关《C#精华面试题及答案.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、注:红色表示答案一选择,填空题1. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。a) insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;b) ExecuteNonQuery()方法返回执行Sql语句所影响的行数。c) Select操作的Sql语句只能由ExecuteReader()方法来执行;d) ExecuteReader()方法返回一个DataReder对象;2. 面向对象的语言具有_继承性_性、_封装性_性、_多态性 性。3. 能
2、用foreach遍历访问的对象需要实现 _接口或声明_方法的类型。()答:IEnumerable 、 GetEnumerator()4. 在C#中,表示一个字符串的变量应使用以下哪条语句定义?( B )A. CString str;B. string str;C. Dim str as stringD. char * str;5. 在C#编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用下列哪条语句?( A )A. decimal theMoney;B. int theMoney;C. string theMoney;D. Dim theMoney as double6. C#
3、中,新建一字符串变量str,并将字符串”Toms Living Room”保存到串中,则应该使用下列哪条语句?(B)A. string str = “Toms Living Room”;B. string str = “Toms Living Room”;C. string str(“Toms Living Room”);D. string str(“Tom”s Living Room”);7. 应用ADO.NET 访问数据时,Connection 对象的连接字符串中Initial Catalog 子串的含义是 ( A )A. Connection 对象连接到的数据库的名称 B. Connec
4、tion 对象的身份验证信息C. Connection 对象的最大连接时间D. Connection 对象使用的缓存大小8. 使用Visual Studio .NET 的”新建C# 项目”创建一个名为”SimpleForm”的Windows表单应用程序,则在生成_文件中可设置该程序集的Copyright、Trademark 等属性信息.( D )A. Form1.resxB. SimpleForm.slnC. SimpleForm.csprojD. AssemblyInfo.cs9. C#程序中,为使变量myForm 引用的窗体对象显示为对话框,必须: ( C )A. 使用myForm.Sho
5、wDailog 方法显示对话框B. 将myForm 对象的isDialog 属性设为trueC. 将myForm 对象的FormBorderStyle 枚举属性设置为FixedDialogD. 将变量myForm 改为引用System.Windows.Dialog 类的对象10. 下列哪些语言可以用来开发XML Web Service? ( A,B,C,D )A. CB. C+C. JavaD. C#11. Web 表单中,按钮的默认事件是 ( A )A. Click 事件B. Load 事件C. Init 事件D. Command 事件12. 关于ASP.NET 窗体应用程序,下列说法哪些是
6、正确的? ( D )A. Web 窗体是在浏览器中进行解释执行的B. Web 窗体程序中脚本和代码必须严格分开C. Web 窗体程序产生的HTML 页面只能运行于IE 浏览器D. Web 窗体程序的代码可以使用任何一种.NET 兼容的编程语言编写13. 关于结构类型,下列说法哪些是正确的? ( A )A. 结构是值类型B. 结构中不允许定义带参数的实例构造函数;C. 结构中不允许定义析构函数D. 结构中可以定义成员方法,但是方法内不能使用this 指针E. 不能使用new 关键字创建结构类型的实例14. 关于线程和进程,下列说法哪些是正确的? ( A D )A. 线程是操作系统分配处理器时间的
7、基本单位;B. 进程是操作系统分配处理器时间的基本单位;C. 一个线程可以属于多个进程;D. 一个进程可以有多个线程;15. 为从某个网站访问xml信息,应使用( _)类的对象分析下载返回的xml文档 (C D)A StreamReaderB TextReaderC XmlReaderD XmlTextReader16. 面向对象编程中的”继承”的概念是指(B)A 派生类对象可以不受限制地访问所有的基类对象B 派生自同一个基类的不同类的对象具有一些共同特征C 对象之间通过消息进行交互D 对象的内部细节被隐藏17. 以下叙述正确的是( D )。A. 一条表达式中可以同时出现浮点数类型和decim
8、al类型B. 类可以继承,并且可以多重继承C. int, b=new int4,5 /创建了一个二维数组,第一维长为4,第二维长为5D. int x=23; object o=x; int y=(int) o; /实现了一次装箱操作18. 以下有关结构类型和枚举类型的叙述错误的是( C)。A. 结构类型和枚举类型都是复合类型 B. 结构类型只能是简单值类型的组合C. 枚举类型要求成员只能是整数类型 D. 枚举类型的变量在某一时刻只19. 接口和类最主要的区别在于( D )。A类可以重载而接口不可以 B类不可以重载而接口可以C类可以多重重载而接口不可以 D类不可以多重重载而接口可以20. 关于静
9、态域成员与非静态域成员,以下说法正确的是( C )。A. 一个类的所有对象共享非静态域成员 B. 一个类的一个对象分别拥有不同的非静态域成员的实例C. 静态域成员都能在不生成实例的情况下直接被使用 D. 非静态域成员都能21. 关于重载,以下叙述错误的是(C,D)。A. 重载是指在类的内部存在若干个方法名称一致但是参数列表不同的方法B. 方法重载是指创建多个名称相同的方法,其中每个方法都在某些方面具有唯一性,以便编译器能够正确区别它们C. 重载构造函数主要是为了在创建对象的同时进行赋值D. 方法的重载允许两个方法的名称和参数列表相同,而返回类型不同22. 下面有关C中方法的参数描述正确的是(B
10、 )。A. 利用值类型参数调用方法时,对形参的修改会反映到实参上去B. 输出型参数的实参在传递给形参前,不需要明确赋值C. 引用型参数不另外开辟新的内存区域,这一点是它与输出型参数的不同之处D. 数组型参数可以是任何类型的数组23. 下面是一个派生类的定义语句:public class car: vehicle private string model=”L”; private int wheelNo=4;请指出针对该定义的正确的说法(C )。A. vehicle类是car类的一个特例,因而它可以被继承B. car类是父类,vehicle类是子类C. 在car类中定义的成员model和whee
11、lNo会删除vehicle类中同名的成员D. car类是vehicle类的一个特例,它可以继承vehicle类中除构造函数和析构函24. (D )关键字可以用来访问当前对象的基类对象。Aobject Bthis Cas Dbase25. 重载是(B )的形式之一。A接口 B多态 C继承 D类26. x的初值为24,则表达式x+=x-+=x%=17运算的结果值为(D )。A. 28 B27 C26 D错误的表达式27. 下面是几条定义初始化二维数组的语句,指出其中正确的是(D )。Aint array2 =new int3,2; Bint array2,=new int3,2; Cint arr
12、ay2=new int3,2; Dint, array2=new int3,2;28. 一个初始化语句:enum monthesJanuary,February=3,March=5,April=7,May,June,则此时May的值为(C )。A4 B5 C8 D929. 在A中所有的自定义用户控件都必须继承自_? 答:Control。30. 在.Net中所有可序列化的类都被标记为_? 答:serializable 31. 在.Net托管代码中我们不用担心内存漏洞,这是因为有了_? 答:GC。32. 在.Net中,类System.Web.UI.Page 可以被继承么?答:可以。33. 声明静态
13、变量的关键字是(static),声明常量的关键字是(const) 34. 在流程控制中CONTINUE的作用(跳出当前循环继续下一次循环)35. 软件工程的三大文档(需要分析说明书)(概要设计说明书)(详细设计说明书)。 36. B/S通常使用的结构设计模型分为(模型)(视图)(控制器)。(MVC经典的Web/Business/DataAccess) 37. XML的全称是(Extensible Markup Language”可扩展标记语言”),提供了快速和有效地读写XML的方式的类分别是(XMLReader)(XMLWriter) 38. C#中所有的类型实质上都是从(Object)类派生
14、而来的。39. NET运行库支持被称为(委托)的引用类型,其作用类似于C+中函数指针的用途。 40. B/S通常使用的结构设计模型分为(模型)(视图)(控制)?*41. 类的三大特性是(封装)(继承)(多态) 42. .NET运行库支持被称为(委托)的引用类型,其作用类似于C+中函数指针的用途 43. C#中处理内存管理功能的是(托管代码GC(垃圾回收))44. 在C#中用于显式地将一个值或引用转换为另一种不同的类型称为(拆箱)45. 在ADO。NET中,command对象是用(ExcuteNonQuery)(ExcuteScalar)(ExcuteDataReader)方法执行命令二简答题1
15、. 简述 private、 protected、 public、 internal 修饰符的访问权限。答:private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal: 在同一命名空间内可以访问。2. C#中,string str = null 与 string str =,请尽量用文字说明区别。答:string str = 分配空间而string str = null不分配空间。3.用sealed修饰的类有什么特点?答:不可被继承?*4.请叙述const与read
16、only的区别。e) 每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。 为了不违背编码规则,通常把static数据成员声明为private,然后通过statci property提供读写访问。 const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。 const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。 const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。 readonly在运行期评估赋值,使我们得以
17、在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。 readonly 关键字与 const 关键字不同:const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。 readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。f)5.简述 private、 protected、 public、 internal 修饰符的访问权限。private : 私
18、有成员, 在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。?*6.请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。 session(viewstate) 简单,但易丢失 application 全局 cookie 简单,但可能不支持,可能被伪造 input ttype=hidden 简单,可能被伪造 url参数简单,显示于地址栏,长度有限 数据库稳定,安全,但性能相对弱7.概述反射和序列化答:反射:程序集包含模块,而模块包含类型,类型又包含
19、成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。8.什么是SOAP,有哪些应用。答:SOAP(Simple Object Access Protocol )简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SO
20、AP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序.9.ASP。NET中共有几种类型的控件?各有什么区别?答:Html 控件传统的html标记Web 控件可以回传数据,事件驱动自定义控件在原有控件的基础上增加功能复合控件多个子控件复合成一个新的控件10.什么情况用HTML控件,什么情况用WEB
21、控件,并比较两者差别答:客户端表现用html控件,如果想和server端交互,那么加上runat=server,它就成了服务器端控件,但它没有web控件的很多方法和属性,如果你需要用到,那么还是用webControls.11.用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?答:一般为3层数据访问层,业务层,表示层。数据访问层对数据库进行增删查改。业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。表示层为了与用户交互例如用户添加表单。优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。缺点: 增加成本。12.什么是XM
22、L?答:XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。13.什么是Web Service?UDDI?答:Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
23、UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准14.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端只有通过自动传回才能实现服务端事件的
24、机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件16.请简述DataReader与DataSet的异与同。17.PDB是什么东西? 在调试中它应该放在哪里? 答:PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。 18.简述ajax的原理。答:ajax简单的讲就是客户端通过javascript脚本获取服务器端的文本,通过解析返回值,更新部分的网页内容。19.描述线程与进程的区别? 答:线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同
25、的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。 20.什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 答:Windows服务是运行在windows后台指定用户下(默认Sys
26、tem)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:)自动方式 2)手动方式)禁用 。自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。 21.什么是强类型,什么是弱类型?哪种更好些?为什么? 答:强类型是在编译的时候就确定类型的数据,在执行时类型不能更改
27、,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。一般用于编译型编程语言,如c+,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等 .22.什么是GAC?它解决了什么问题? 答:Gloal Assembly Cache,全局应用程序集缓存。它解决了几个程序共享某一个程序集的问题。不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序目
28、录进行查找。23.阐述面向接口、面向对象、面向方面编程的区别 答:面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强调的是本末倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时候,稍微有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的分解。面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模
29、块化,而无法对和业务无关的代码模块化。而面向方面正是解决这一问题的方案,它的关键思想是将应用程序中的商业逻辑与对其提供支持的通用服务进行分离。 24.简述用repeater实现手工分页的思路。25.web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么?答:所传输的数据必须是可序列化的。因为需要转换为XML格式以可以穿越防火墙,做到真正的数据共享。因为DataSet处理DataTable的序列化以便进行封送处理,所以无法传递单个DataTable26.常用的调用WebService的方法有哪些?答:在同一个解决方案中调用WebServi
30、ce方法; 在不同的解决方案中调用WebService方法; 在Internet上调用WebService方法; 利用webservice.htc调用WebService方法。28.在C中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。答:string str = null 是不给他分配内存空间,而string str = 给它分配长度为空字符串的内存空间.30.请详述在dotnet中类(class)与结构(struct)的异同: 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的
31、栈上的.31. 如何理解委托?答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.msdn2005中是这样解释的:委托具有以下特点:委托类似于 C+ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。33 override与重载的区别override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不
32、同的需要Override 是进行基类中函数的重写。为了适应需要。34. abstract class和interface有什么区别?答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口
33、(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。35. Session有什么重大BUG,微
34、软提出了什么方法加以解决?答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。36. 成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。37.简述三层架构的利弊。38.简述AJAX控件timer的实现原理。39.简述ASP.NET中用户控件和自定义控件的区别.40.简述framework在.
35、NET中的作用.41.简述C#中引入泛型的好处。42.谈谈arraylist和list利弊.43.怎样实现用JS调用服务器端定义的方法。44.简述ADO.NET中几大对象的作用.45.相对与其它WEB开发平台,微软的.net平台有什么独特的优势和劣势。46.谈谈Schema和DTD相比,具有那些显著的优势。47. 什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释? 答: (1) 应用程序域(通常为 AppDomain)是一个用于隔离应用程序的虚拟进程。 (2) 受管制的代码:Managed Code,官方翻译是“托管代码”
36、,即在 .net中,由公共语言运行环境进行管理的代码,它主要负责内存管理。 (3)强类型系统:是对系统的类型进行细化定义,纯粹是概念问题,不做深入研究的话,看书理解一下就行。 (4)装箱和拆箱:值类型转化引用类型为装箱,引用类型转化为值类型为拆箱。 (5)CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。48.强类型与弱类型的区别? (1)答:完全的面向对象要求对象是强类型的。强类型是只在对象类型的定义尽量的细化。我们可以定义所有的对象都是object,然后允许后期绑定来对对象进行操作。事实上,有些语言是弱类型的,特别是一些教本语言,比如javascript.弱类型语言对简化
37、了语言本身,因而语言本事是可以轻量的,在一些特殊的场合还是很有用的。 (2)但弱类型与强类型语言相比,它们能完成的功能从本质上来说,是没有区别的。但弱类型的轻量化是以牺牲开发的方便性和效率为基础的。它将一部分机器能完成的事情移到程序员来完成。如果开发同样一个功能,如果用javascript 和强类型的来开发,两者对程序员的要求与开发所需要的时间是明显不同的。49.请详述在c#中类(class)与结构(struct)的异同?答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. Class可以被继承,struct不可以等等50. GC是什么
38、? 为什么要有GC? 答:GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc()51.String s = new String(xyz);创建了几个String Object? 答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。52.abstract class和interface有什么区别? 答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实
39、现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义
40、(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。53.启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。54.接口是否可继承接口? 抽象类是否可实现(implements)接口?
41、 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。55.构造器Constructor是否可被override? 答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。56.是否可以继承String类? 答:String类是final类故不可以继承。57. try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在return前还是后? 答:会
42、执行,在return前执行。58.两个对象值相同(x.equals(y) = true),但却可有不同的hash code,这句话对不对? 答:不对,有相同的hash code。59.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 答:可以60.当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 答:不能,一个对象的一个synchronized方法只能由一个线程访问。61.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 答:都不能。6
43、2.List, Set, Map是否继承自Collection接口? 答:List,Set是Map不是63. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用=还是equals()? 它们有何区别? 答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和=方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值64. 数组有没有length()这个方法? String有没有length()这个方法?答:没有这个方法但是有length这个属
44、性。65. sleep() 和 wait() 有什么区别? 答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。66. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 答:short s1
45、 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。67.谈谈final, finally, finalize的区别。答:final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此 一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中 不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为 final的方法也同样只能使用,不能重载finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会 执行,然后控制就会进入 finally 块(如果有的话)。finalize方法名。Java 技术允许使用 finalize() 方
限制150内