您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > java面试题汇总最新
1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地留心与当前目标有关的方面。抽象并不打算明白所有疑问,而只是挑选其中的一部分,暂时不用部分细节。抽象包含两个方面,一是流程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且准许和鼓励类的重用,它提供了一种明确表述共性的要领。对象的一个新类能够从现有的类中派生,这个流程称为类继承。新类继承了原始类的特征,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类能够从它的基类那里继承要领和实例变量,并且类能够修改或添加新的要领使之更适合特殊的须要。3.封装:封装是把流程和数据包围起来,对数据的访问只好议决已解释的界面。面向对象计算始于这个基本观点,即现实全球能够被描绘成一系列完全自治、封装的对象,这些对象议决一个受保卫的接口访问其他对象。4.多态性:多态性是指准许不一样类的对象对同一消息作出响应。多态性包含参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的处理了使用程序函数同名疑问。5、String是最基本的数据类型吗?基本数据类型包含byte、int、char、long、float、double、boolean和short。java.lang.String类是final类型的,因此不能够继承这个类、无法修改这个类。为了提高效率节省空间,咱们应该用StringBuffer类6、int和Integer有什么区别Java提供两种不一样的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble引用类型和原始类型的行为完全不一样,并且它们具有不一样的语义。引用类型和原始类型具有不一样的特征和用法,它们包含:大小和速度疑问,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null,而原始类型实例变量的缺省值与它们的类型有关。7、String和StringBuffer的区别JAVA平台提供了两个类:String和StringBuffer,它们能够储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改动的字符串。而这个StringBuffer类提供的字符串实行修改。当你知晓字符数据要改动的时刻你就能够运用StringBuffer。典型地,你能够运用StringBuffers来动态构造字符数据。8、运行时异常与通常异常有何异同?异常示意程序运行流程中可能出现的非正常状态,运行时异常示意虚拟机的通常操作中可能遇到的异常,是一种多见运行不正确。java编译器要求要领必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。9、说出Servlet的生命周期,并说出Servlet和CGI的区别。Servlet被服务器实例化后,容器运行其init要领,请求到达时运行其service要领,service要领自动派遣运行与请求对应的doXXX要领(doGet,doPost)等,当服务器决定将实例销毁的时刻调用其destroy要领。与cgi的区别在于servlet处于服务器进程中,它议决多线程形式运行其service要领,一个实例能够服务于多个请求,并且本来例通常不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。10、说出ArrayList,Vector,LinkedList的存储性能和特征ArrayList和Vector都是运用数组形式存储数据,此数组元素数大于实际存储的数据以便添加和插入元素,它们都准许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于运用了synchronized要领(线程安全),通常性能上较ArrayList差,而LinkedList运用双向链表实现存储,按序号索引数据须要实行前向或后向遍历,但是插入数据时只须要记载本项的前后项即可,所以插入速度较快。11、EJB是基于哪些技能实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。EJB包含SessionBean、EntityBean、MessageDrivenBean,基于JNDI、RMI、JAT等技能实现。SessionBean在J2EE使用程序中被用来完成一些服务器端的业务操作,比方访问数据库、调用其他EJB组件。EntityBean被用来代表使用系统中用到的数据。对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业使用程序实现的实体。SessionBean还能够再细分为StatefulSessionBean与StatelessSessionBean,这两种的SessionBean都能够将系统逻辑放在method之中执行,不一样的是StatefulSessionBean能够记载呼叫者的状态,因此通常来说,一个运用者会有一个相对应的StatefulSessionBean的实体。StatelessSessionBean虽然也是逻辑组件,但是他却不负责记载运用者状态,也就是说当运用者呼叫StatelessSessionBean的时刻,EJBContainer并不会找寻特定的StatelessSessionBean的实体来执行这个method。换言之,很可能数个运用者在执行某个StatelessSessionBean的methods时,会是同一个Bean的Instance在执行。从内存方面来看,StatefulSessionBean与StatelessSessionBean比较,StatefulSessionBean会消耗J2EEServer较多的内存,然而StatefulSessionBean的优势却在于他能够维持运用者的状态。12、Collection和Collections的区别。Collection是集合类的上级接口,继承与他的接口首要有Set和List.Collections是针对集合类的一个帮助类,他提供一系列静态要领实现对各种集合的搜索、排序、线程安全化等操作。13、&和&&的区别。&是位运算符,示意按位与运算,&&是逻辑运算符,示意逻辑与(and)。14、HashMap和Hashtable的区别。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,首要区别在于HashMap准许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap准许将null作为一个entry的key或者value,而Hashtable不准许。HashMap把Hashtable的contains要领去掉了,改成containsvalue和containsKey。因为contains要领简单让人惹起误解。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现。最大的不一样是,Hashtable的要领是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不须要自身为它的要领实现同步,而HashMap就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差别。15、final,finally,finalize的区别。final用于声明属性,要领和类,分别示意属性不可变,要领不可覆盖,类不可继承。finally是异常处理语句结构的一部分,示意总是执行。finalize是Object类的一个要领,在垃圾收集器执行的时刻会调用被回收对象的此要领,能够覆盖此要领提供垃圾收集时的其他资源回收,比方关上文件等。16、sleep()和wait()有什么区别?sleep是线程类(Thread)的要领,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动还原。调用sleep不会释放对象锁。wait是Object类的要领,对此对象调用wait要领导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify要领(或notifyAll)后本线程才进入对象锁定池准备取得对象锁进入运行状态。17、Overload和Override的区别。Overloaded的要领能无法能够改动返回值的类型?要领的重写Overriding和重载Overloading是Java多态性的不一样表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。假如在子类中解释某要领与其父类有相似的名称和参数,咱们说该要领被重写(Overriding)。子类的对象运用这个要领时,将调用子类中的解释,对它而言,父类中的解释如同被屏蔽了。假如在一个类中解释了多个同名的要领,它们或有不一样的参数个数或有不一样的参数类型,则称为要领的重载(Overloading)。Overloaded的要领是能够改动返回值的类型。18、error和exception有什么区别?error示意还原不是不可能但很难处的情况下的一种严重疑问。比如说内存溢出。不可能指望程序能处理这样的情况。exception示意一种设计或实现疑问。也就是说,它示意假如程序运行正常,从不会发生的情况。19、同步和异步有何异同,在什么情况下分别运用他们?举例表明。假如数据将在线程间共享。比方正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须实行同步存取。当使用程序在对象上调用了一个须要花费很长时间来执行的要领,并且不期盼让程序等待要领的返回时,就应该运用异步编程,在许多情况下采用异步途径往往更有效率。20、abstractclass和interface有什么区别?声明要领的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要建立一个体现某些基本行为的类,并为该类声明要领,但无法在该类中实现该类的情况。无法建立abstract类的实例。然而能够建立一个变量,其类型是一个抽象类,并让它指向详细子类的一个实例。无法有抽象构造函数或抽象静态要领。Abstract类的子类为它们父类中的所有抽象要领提供实现,否则它们也是抽象类为。取而代之,在子类中实现该要领。知晓其行为的其它类能够在类中实现这些要领。接口(interface)是抽象类的变体。在接口中,所有要领都是抽象的。多继承性可议决实现这样的接口而取得。接口中的所有要领都是抽象的,没有一个有程序体。接口只好够解释staticfinal成员变量。接口的实现与子类相似,除了该实现类无法从接口解释中继承行为。当类实现特殊接口时,它解释(即将程序体给予)所有这种接口的要领。然后,它能够在实现了该接口的类的任何对象上调用接口的要领。由于有抽象类,它准许运用接口名作为引用变量的类型。通常的动态联编将生效。引用能够转换到接口类型或从接口类型转换,instanceof运算符能够用来决定某对象的类能无法实现了接口。21、heap和stack有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的形式实行处理。堆是栈的一个组成元素22、forward和redirect的区别forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给阅读器
本文标题:java面试题汇总最新
链接地址:https://www.777doc.com/doc-5352393 .html