java笔试题.pdf

上传人:无*** 文档编号:90895217 上传时间:2023-05-18 格式:PDF 页数:52 大小:8.25MB
返回 下载 相关 举报
java笔试题.pdf_第1页
第1页 / 共52页
java笔试题.pdf_第2页
第2页 / 共52页
点击查看更多>>
资源描述

《java笔试题.pdf》由会员分享,可在线阅读,更多相关《java笔试题.pdf(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、J a v a 笔试题集锦I.MVC的各个部分都有那些技术来实现?如何实现?答:MVC是ModelViewController的简写。Model代表的是应用的业务逻辑(通 过 JavaBean,EJB组件实现),View”是应用的表示面(由JSP页面产生),Controller是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。2.J2EE是什么?答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模

2、型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。3.J2EE是技术还是平台还是框架?答:J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE也是一个框架,包括JDBC、JNDL RML JMS、EJB、JTA等技术。4.STRUTS的应用(如STRUTS架构)答:Struts是采用Java Servlet/JavaServer

3、 Pages技术,开发Web应用程序的开放源码的 frameworko 采用 Struts 能开发出基于 MVC(Model-View-Controller)设计模式的应用构架。Struts有如下的主要功能:一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。5.WEB SERVICE名词解释。JSWDL开发包

4、的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL 解释。答:Web Service Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。JAXP(Java API for XML Parsing)定义了在 Java 中使用 DOM,SAX,XSLT 的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。JAXM(Java API for XML Messaging)是为SOAP通信提供访问方法和传输机制的APEWSDL是一种XML

5、格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。6.C/

6、S与 B/S区别:答:有如下八个方面的不同:(1)硬件环境不同:C/S 一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务.B/S建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租用设备.信息自己管理.有比C/S更强的适应范围,一般只要有操作系统和浏览器就行(2)对安全要求不同C/S 一般面向相对固定的用户群,对信息安全的控制能力很强.一般高度机密的信息系统采用C/S结构适宜.可以通过B/S发布部分可公开信息.B/S建立在广域网之上,对安全的控制能力相对弱,可能面向不可知的用户。(3)对程序架构不同C/S程序可以更加注重流程,可以对权限多层

7、次校验,对系统运行速度可以较少考虑.B/S对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上.比C/S有更高的要求B/S结构的程序架构是发展的趋势,从MS的.Net系列的BizTalk 2000 Exchange 2000等,全面支持网络的构件搭建的系统.SUN和IBM推的JavaBean构件技术等,使B/S更加成熟.(4)软件重用不同C/S程序可以不可避免的整体性考虑,构件的重用性不如在B/S要求下的构件的重用性好.B/S对的多重结构,要求构件相对独立的功能.能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子(5)系统维护不同C/S程序由于整体性,必须整体考察,

8、处理出现的问题以及系统升级.升级难.可能是再做一个全新的系统B/S构件组成,方面构件个别的更换,实现系统的无缝升级.系统维护开销减到最小用户从网上自己下载安装就可以实现升级.(6)处理问题不同C/S程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关.应该都是相同的系统B/S建立在广域网上,面向不同的用户群,分散地域,这是C/S无法作到的.与操作系统平台关系最小.(7)用户接口不同C/S多是建立的Window平台上,表现方法有限,对程序员普遍要求较高B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流.并且大部分难度减低,减低开发成本.(8)信息流不同C/S程序一般是典

9、型的中央集权的机械式处理,交互性相对低B/S信息流向可变化,B-B B-C B-G等信息、流向的变化,更像交易中心。7.什么是JNDI答:(Java Naming&Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。8.什么是JMS答:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播9.什么是JTA答:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调

10、用其提供的接口即可。10.开发中都用到了那些设计模式?用在什么场合?答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了 MVC的设计模式。用来开发JSP/Servlet或 者J2EE的相关应用。简单工厂模式等。IL、j2ee常用的设计模式?说明工厂模式。答:Java中的23种设计模式:Factory(工厂模式),Builder(建造模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式

11、),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式),Chain Of Responsibleity(责任链模式)工厂模式:工厂模式是一种经常被使用到

12、的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。12.UML方面答:标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图13.RMIRMI指的是远程方法调用(Remote Method Invocation)。

13、它是一种机制,能够让在某 个Java虚拟机上的对象调用另一个Java虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。调用这样一个对象时,其参数为marshalled并将其从本地虚拟机发送到远程虚拟机(该远程虚拟机的参数为“unmarshalled)上。该方法终止时,将编组来自远程机的结果并将结果发送到调用方的虚拟机。如果方法调用导致抛出异常,则该异常将指示给调用方。JAVA基础1.如何获得数组的长度?数组名.length2.访问修饰符“public/private/protected/缺省的修饰符”的使用类?public:公共,均可访问private:私有的,同一个jav

14、a类中可以访问.子类不能访问.protected:同一个包中的类都可访问.子类可以访问.缺省,friendly:当前类,同一个包,都可以访问.作用域当前类同一 package子孙类 其 他packagepublicqqqprotectedqqqXfriendlyq7XXprivateqXXX3.Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以 implements(实现)interface(接 口)?匿名内部类是没有名字的内部类,不能继承其它类,但一个内部类可以作为一个接口,由另一个内部类实现.一、由于匿名内部类没有名字,所以它没有构造函数

15、。因为没有构造函数,所以它必须完全借用父类的构造函数来实例化,换言之:匿名内部类完全把创建对象的任务交给了父类去完成。二、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果,如上例所示。这是多态性的体现。三、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。new(类或接口 类的主体匿名类匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作 为 new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示:new(类或接口 类的主体这种形式的new语句声明一个新的匿名类,它

16、对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new 语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。从技术上说,匿名类可被视为非静态的内部类,所以它们具有和方法内部声明的非静态内部类一样的权限和限制。如果要执行的任务

17、需要一个对象,但却不值得创建全新的对象(原因可能是所需的类过于简单,或者是由于它只在一个方法内部使用),匿名类就显得非常有用。匿名类尤其适合在Swing应用程序中快速创建事件处理程序。exp:return new Contents()private int i=11;public int value()return i;这种奇怪的语法要表达的意思是:“创建从Contents衍生出来的匿名类的一个对象。由new表达式返回的句柄会自动上溯造型成一个Contents句柄。匿名内部类的语法其实要表达的是:class MyContents extends Contents private int i=1

18、1;public int value()return i;return new MyContents();若试图定义内部类,并想使用在匿名内部类外部定义的一个对象,则编译器要求外部对象必须是final属性.public class Parcel9 public Destinationdest(final String dest,final float price)return new Destination()private int cost;/Instance initialization for each object:(cost=Math.round(price);if(cost 100

19、)System.out.println(HOver budget!);)private String label=dest;public String readLabel()return label;);public static void main(String args)Parcel9 p=new Parcel9();Destination d 二 p.dest(nTanzania,r,101.395F);4.static nested class 和 inner class 的不同?nested class在C+中是嵌套类,inner class在java中是内部类.不同就是在于是否有指

20、向外部的引用上.静态内部类意味着创建一个static内部类的对象,不需要一个外部类对象;不能从一个static内部类的一个对象访问到一个外部类的对象.5.&和&的区别&是位运算符,表示按位与运算;&是逻辑运算符,表示逻辑与(and)6.Collection 和 Collections 的区另llcollection是集合类的上级接口,继承与它的接口主要是set和 list其中list必须以特定的顺序容纳元素;而一个set不能包含重复的元素.映射(Map)一系歹键-值 对.可以返回自己键的一个set,一个包含自己值的list,或者包含自己(键-值)对的一个list.均可构建自己的反复器.coll

21、ections类是针对集合类的一个帮助类.它提供一系列的静态方法对各种集合的搜索,排序,线程安全化等操作.public class SimpleCollection public static void main(String args)Collection c=new ArrayList();fbr(int i=0;i D=方法决定引用值是否指向同一对象equals。在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值14.给我一个你最常见到的runtime exception?答:常见的运行时异常有如下这些ArithmeticException(异常的运算条件),Array

22、S toreExcepti on(向一 1K对象数组存放一错误类型的对象时)BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateExcept

23、ion,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,Unmodifia

24、bleSetException,UnsupportedOperationException.15.error和exception有什么区别?答:error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况16.List,Set,Map 是否继承自 Collection 接口答:List,Set 是,Map 不是17.abstract class 和 interface 的区别答:声明方法的存在而不去实现它的类叫虚拟类(abstract class).它用于创

25、建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract class的实例.但是可以声明一个abstract class变量,将其指向其具体子类的一个实例.不能有抽象构造函数或抽象静态方法.Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法.接 口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实

26、现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口.接口是一个更纯的抽象类.18.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类

27、必须有明确的构造函数19.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized答:都不能.其中synchronized:(同步.避免在你和别人同时访问一个属性的时候,属性的值发生不同步的问题.)native:(声明本地方法的关键字,可以通过声明的方法调用本地的动态链接库或者有C、C+等开发的函数。)20.构造器Constructor是否可被override(构造函数)答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading1).构造器不能是 native,final,sta

28、tic,synchronized 的,可以是 public,private,或什么都没有。2).构造器函数里可以写return呢,但后面什么都不许有(包括null)3).构造器不能返回值.但如果有个“构造器 返值了,它就不是构造器喽,只是个普通方法4).super();this();这两个方法只能在构造方法里调用.5).成员变量声明时候赋值,比构造函数还早.21.是否可以继承String类答:String类是final类故不可以继承22.try 里有一个return语句,那么紧跟在这个try后的finally 里的code会不会被执行,什么时候被执行,在 return前还是后答:会执行,在 r

29、eturn前执行23.用最有效率的方法算出2 乘以8 等於几答:2 324.两个对象值相同(x.equals(y)=true),但却可有不同的hash code,这句话对不对答:不对,有相同的hash code在 C+中,每个类多有地址。java也一样,不过hash code不是地址,而是一个标识对象用的。(个人认为)每个对象的hash code是不一样的,Object的默认hash code记得是按引用地址的。对于String例外,是按String内容输出hash code的,这样可以用equals。来比较String 的内容是否相等了,而不是地址在 Java应用程序执行期间,在同一对象上多

30、次调用hashCode方法时,必须一致地返回相同的整数,前提是对象上equals比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。如果根据equals(Object)方法,两个对象是相等的,那么在两个对象中的每个对象上调用hashCode方法都必须生成相同的整数结果。以下情况不是必需的:如果根据equals(java.lang.Object)方法,两个对象不相等,那么在两个对象中的任一对象上调用hashCode方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。实际上,由Object类定义的h

31、ashCode方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM编程语言不需要这种实现技巧。)25.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递答:是值传递。Java编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.26.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上答:witch(ex p rl)中,ex

32、prl是一个整数表达式。因此传递给switch和case语句的参数应该是int、sh ortchar或者byte。long,string都不能作用于swtich27.ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别答:就 ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而 ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而 ArrayList却是原来的一半就 HashMap与HashTable主要从三方面来说。一.历史原因:Hashta

33、ble是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而 HashM冲是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或 value28.GC是什么?为什么要有GC答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作

34、方法。29.float 型 float f=3.4 是否正确?答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.430.介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?答:Collection FrameWork 如下:Collection卜 List|LinkedList|pArrayList|L-VectorLstackLSetMappHashtable-HashMapWeakHashMapCollection 是最基本的集合接口,一个 Collection 代表一组 O bject,即 Collection的元素

35、(Elements)Map提供key到value的映射.31.抽象类与接口?答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)JAVA类实现序例化的方法是实现java.io.Serializable接口Collection框架中实现比较要实现Comparable接口和Comparator接口32.STRING 与 STRINGBUFFER 的区另答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要Str

36、ing,那么使用StringBuffer的toString。方法33.谈谈 final,finally,finalize 的区别答:final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catc

37、h子句就会执行,然后控制就会进入finally块(如果有的话)finalize方法名。Java技术允许使用finalize。方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的34.面向对象的特征有哪些方面答:主要有以下四方面:1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了

38、解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个

39、受保护的接口访问其他对象。4.多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。3 5.String是最基本的数据类型吗答:基本数据类型包括 byte、int、char、long、float doubles boolean 和 short。java.lang.String类 是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类36.int和 Integer有什么区别答:Java提供两种不同的类型:引用类型和

40、原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubleDouble引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实

41、例变量的缺省值与它们的类型有关.37.运行时异常与一般异常有何异同答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。38.说出ArrayList,Vector,LinkedList的存储性能和特性答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了

42、 synchronized方 法(线程安全),通常性能上较ArrayList差,而 LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快39.HashMap 和 Hashtable 的区别答:HashM叩 是 Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于HashtableoHashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap 把

43、Hashtable 的 contains 方法去掉 了,改成 containsvalue 和 containsKey。因为contains方法容易让人引起误解。Hashtable 继承自 Dictionary 类,而 HashMap 是 Java 1.2 引进的 Map interface 的一个实现。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而 HashMap就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异

44、。4O.heap和 stack有什么区别*答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素41.Java中的异常处理机制的简单原理和应用答:当JAVA程序违反了 JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2 种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException0另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用thro

45、w关键字引发异常。所有的异常都是java.lang.Thowable的子类。4 2 .垃圾回收的优点和原理。并考虑2种回收机制答:Java语言中一个显著的特点就是引入了垃圾回收机制,使C+程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有 作用域 的概念,只有对象的引用才有 作用域。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所

46、有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。4 3 .你所知道的集合类都有哪些?主要方法?答:最常用的集合类是List和Map。List的具体实现包括ArrayList和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作”键 和 值),其中每个键映射到一个值。4 4 .描述一下J V M 加 载 class文件的原理机制?答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是

47、一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。4 5.排序都有哪几种方法?请列举答:排序的方法有:插 入 排 序(直接插入排序、希尔排序),交 换 排 序(冒泡排序、快速排序),选 择 排 序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)快速排序的伪代码。/使用快速排序方法对a 0:n-1 排序从a 0:n-1 中选择一个元素作为m id d le,该元素为支点把余下的元素分割为两段left和r i g h t,使 得1 e f t中的元素都小于等于支点,而right中的元素都大于等于支点递归地使用快速排序方法对left进行排序递归地使用快速排序方法对

48、right进行排序所得结果为 le ft+m id d le+rig h t46.JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,Anally分别代表什么意义?在 b y 块中可以抛出异常吗?答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在 Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5 个关键词来实现的:try、catch、throw、throws

49、和 finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。用 try来指定一块预防所有“异常”的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的异常的类型。throw语句用来明确地抛出一个异常。throws用来标明一个成员函数可能抛出的各种“异常”。Finally为确保一段代码不管发生什么“异常”都被执行一段代码。可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,“

50、异常”的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种“异常”进行处理,堆栈就会展开,直到遇到有处理这种“异常”的try语句。47.一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以。必须只有一个类名与文件名相同。48.java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?答:字节流,字符流。字节流继承于InputStream Outputstream,字符流继承于InputStreamReader OutputStreamWriter0 在 java.io 包中还有许多其他的流,主要是为

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁