JAVA程序员面试之葵花宝典.docx

上传人:b****8 文档编号:28838076 上传时间:2023-07-20 格式:DOCX 页数:80 大小:81.31KB
下载 相关 举报
JAVA程序员面试之葵花宝典.docx_第1页
第1页 / 共80页
JAVA程序员面试之葵花宝典.docx_第2页
第2页 / 共80页
JAVA程序员面试之葵花宝典.docx_第3页
第3页 / 共80页
JAVA程序员面试之葵花宝典.docx_第4页
第4页 / 共80页
JAVA程序员面试之葵花宝典.docx_第5页
第5页 / 共80页
点击查看更多>>
下载资源
资源描述

JAVA程序员面试之葵花宝典.docx

《JAVA程序员面试之葵花宝典.docx》由会员分享,可在线阅读,更多相关《JAVA程序员面试之葵花宝典.docx(80页珍藏版)》请在冰豆网上搜索。

JAVA程序员面试之葵花宝典.docx

JAVA程序员面试之葵花宝典

程序员面试之葵花宝典

 

1、面向对象特性有哪些方面

1.抽象:

抽象就是忽视一种主题中与当前目的无关那些方面,以便更充分地注意与当前目的关于方面。

抽象并不打算理解所有问题,而只是选取其中一某些,暂时不用某些细节。

抽象涉及两个方面,一是过程抽象,二是数据抽象。

2.继承:

继承是一种联结类层次模型,并且容许和勉励类重用,它提供了一种明确表述共性办法。

对象一种新类可以从既有类中派生,这个过程称为类继承。

新类继承了原始类特性,新类称为原始类派生类(子类),而原始类称为新类基类(父类)。

派生类可以从它基类那里继承办法和实例变量,并且类可以修改或增长新办法使之更适合特殊需要。

3.封装:

封装是把过程和数据包围起来,对数据访问只能通过已定义界面。

面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装对象,这些对象通过一种受保护接口访问其她对象。

4.多态性:

多态性是指容许不同类对象对同一消息作出响应。

多态性涉及参数化多态性和包括多态性。

多态性语言具备灵活、抽象、行为共享、代码共享优势,较好解决了应用程序函数同名问题。

2、String是最基本数据类型吗?

基本数据类型涉及byte、int、char、long、float、double、boolean和short。

java.lang.String类是final类型,因而不可以继承这个类、不能修改这个类。

为了提高效率节约空间,咱们应当用StringBuffer类

3、int和Integer有什么区别

Java提供两种不同类型:

引用类型和原始类型(或内置类型)。

Int是java原始数据类型,Integer是java为int提供封装类。

Java为每个原始类型提供了封装类。

原始类型封装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble

引用类型和原始类型行为完全不同,并且它们具备不同语义。

引用类型和原始类型具备不同特性和用法,它们涉及:

大小和速度问题,这种类型以哪种类型数据构造存储,当引用类型和原始类型用作某个类实例数据时所指定缺省值。

对象引用实例变量缺省值为null,而原始类型实例变量缺省值与它们类型关于。

4、String和StringBuffer区别

JAVA平台提供了两个类:

String和StringBuffer,它们可以储存和操作字符串,即包括各种字符字符数据。

这个String类提供了数值不可变化字符串。

而这个StringBuffer类提供字符串可以进行修改。

当你懂得字符数据要变化时候你就可以使用StringBuffer。

典型地,你可以使用StringBuffers来动态构造字符数据。

5、运营时异常与普通异常有何异同?

异常表达程序运营过程中也许浮现非正常状态,运营时异常表达虚拟机普通操作中也许遇到异常,是一种常用运营错误。

java编译器规定办法必要声明抛出也许发生非运营时异常,但是并不规定必要声明抛出未被捕获运营时异常。

6、说出Servlet生命周期,并说出Servlet和CGI区别。

Servlet被服务器实例化后,容器运营其init办法,祈求到达时运营其service办法,service办法自动派遣运营与祈求相应doXXX办法(doGet,doPost)等,当服务器决定将实例销毁时候调用其destroy办法。

与cgi区别在于servlet处在服务器进程中,它通过多线程方式运营其service办法,一种实例可以服务于各种祈求,并且其实例普通不会销毁,而CGI对每个祈求都产生新进程,服务完毕后就销毁,因此效率上低于servlet。

7、说出ArrayList,Vector,LinkedList存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,此数组元素数不不大于实际存储数据以便增长和插入元素,它们都容许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,因此索引数据快而插入数据慢,Vector由于使用了synchronized办法(线程安全),普通性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项先后项即可,因此插入速度较快。

8、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。

换言之,很也许数个使用者在执行某个StatelessSessionBeanmethods时,会是同一种BeanInstance在执行。

从内存方面来看,StatefulSessionBean与StatelessSessionBean比较,StatefulSessionBean会消耗J2EEServer较多内存,然而StatefulSessionBean优势却在于她可以维持使用者状态。

9、Collection和Collections区别。

Collection是集合类上级接口,继承与她接口重要有Set和List.

Collections是针对集合类一种协助类,她提供一系列静态办法实现对各种集合搜索、排序、线程安全化等操作。

10、&和&&区别。

&是位运算符,表达按位与运算,&&是逻辑运算符,表达逻辑与(and)。

11、HashMap和Hashtable区别。

HashMap是Hashtable轻量级实现(非线程安全实现),她们都完毕了Map接口,重要区别在于HashMap容许空(null)键值(key),由于非线程安全,效率上也许高于Hashtable。

HashMap容许将null作为一种entrykey或者value,而Hashtable不容许。

HashMap把Hashtablecontains办法去掉了,改成containsvalue和containsKey。

由于contains办法容易让人引起误解。

Hashtable继承自Dictionary类,而HashMap是Java1.2引进Mapinterface一种实现。

最大不同是,Hashtable办法是Synchronize,而HashMap不是,在各种线程访问Hashtable时,不需要自己为它办法实现同步,而HashMap就必要为之提供外同步。

Hashtable和HashMap采用hash/rehash算法都大概同样,因此性能不会有很大差别。

12、final,finally,finalize区别。

final用于声明属性,办法和类,分别表达属性不可变,办法不可覆盖,类不可继承。

finally是异常解决语句构造一某些,表达总是执行。

finalize是Object类一种办法,在垃圾收集器执行时候会调用被回收对象此办法,可以覆盖此办法提供垃圾收集时其她资源回收,例如关闭文献等。

13、sleep()和wait()有什么区别?

sleep是线程类(Thread)办法,导致此线程暂停执行指定期间,把执行机会给其她线程,但是监控状态依然保持,届时后会自动恢复。

调用sleep不会释放对象锁。

wait是Object类办法,对此对象调用wait办法导致本线程放弃对象锁,进入等待此对象等待锁定池,只有针对此对象发出notify办法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运营状态。

14、Overload和Override区别。

Overloaded办法与否可以变化返回值类型?

办法重写Overriding和重载Overloading是Java多态性不同体现。

重写Overriding是父类与子类之间多态性一种体现,重载Overloading是一种类中多态性一种体现。

如果在子类中定义某办法与其父类有相似名称和参数,咱们说该办法被重写(Overriding)。

子类对象使用这个办法时,将调用子类中定义,对它而言,父类中定义犹如被“屏蔽”了。

如果在一种类中定义了各种同名办法,它们或有不同参数个数或有不同参数类型,则称为办法重载(Overloading)。

Overloaded办法是可以变化返回值类型。

15、error和exception有什么区别?

error表达恢复不是不也许但很困难状况下一种严重问题。

例如说内存溢出。

不也许指望程序能解决这样状况。

exception表达一种设计或实现问题。

也就是说,它表达如果程序运营正常,从不会发生状况。

16、同步和异步有何异同,在什么状况下分别使用她们?

举例阐明。

如果数据将在线程间共享。

例如正在写数据后来也许被另一种线程读到,或者正在读数据也许已经被另一种线程写过了,那么这些数据就是共享数据,必要进行同步存取。

当应用程序在对象上调用了一种需要耗费很长时间来执行办法,并且不但愿让程序等待办法返回时,就应当使用异步编程,在诸多状况下采用异步途径往往更有效率。

17、abstractclass和interface有什么区别?

声明办法存在而不去实现它类被叫做抽象类(abstractclass),它用于要创立一种体现某些基本行为类,并为该类声明办法,但不能在该类中实现该类状况。

不能创立abstract类实例。

然而可以创立一种变量,其类型是一种抽象类,并让它指向详细子类一种实例。

不能有抽象构造函数或抽象静态办法。

Abstract类子类为它们父类中所有抽象办法提供实现,否则它们也是抽象类为。

取而代之,在子类中实现该办法。

懂得其行为其他类可以在类中实现这些办法。

接口(interface)是抽象类变体。

在接口中,所有办法都是抽象。

多继承性可通过实现这样接口而获得。

接口中所有办法都是抽象,没有一种有程序体。

接口只可以定义staticfinal成员变量。

接口实现与子类相似,除了该实现类不能从接口定义中继承行为。

当类实现特殊接口时,它定义(即将程序体予以)所有这种接口办法。

然后,它可以在实现了该接口类任何对象上调用接口办法。

由于有抽象类,它容许使用接口名作为引用变量类型。

普通动态联编将生效。

引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象类与否实现了接口。

18、heap和stack有什么区别。

栈是一种线形集合,其添加和删除元素操作应在同一段完毕。

栈按照后进先出方式进行解决。

堆是栈一种构成元素

19、forward和redirect区别forward是服务器祈求资源,服务器直接访问目的地址URL,把那个URL响应内容读取过来,然后把这些内容再发给浏览器,浏览器主线不懂得服务器发送内容是从哪儿来,因此它地址栏中还是本来地址。

redirect就是服务端依照逻辑,发送一种状态码,告诉浏览器重新去祈求那个地址,普通来说浏览器会用刚才祈求所有参数重新祈求,因此session,request参数都可以获取。

20、EJB与JAVABEAN区别?

JavaBean是可复用组件,对JavaBean并没有严格规范,理论上讲,任何一种Java类都可以是一种Bean。

但普通状况下,由于JavaBean是被容器所创立(如Tomcat),因此JavaBean应具备一种无参构造器,此外,普通JavaBean还要实现Serializable接口用于实现Bean持久性。

JavaBean事实上相称于微软COM模型中本地进程内COM组件,它是不能被跨进程访问。

EnterpriseJavaBean相称于DCOM,即分布式组件。

它是基于Java远程办法调用(RMI)技术,因此EJB可以被远程访问(跨进程、跨计算机)。

但EJB必要被布置在诸如Webspere、WebLogic这样容器中,EJB客户从不直接访问真正EJB组件,而是通过其容器访问。

EJB容器是EJB组件代理,EJB组件由容器所创立和管理。

客户通过容器来访问真正EJB组件。

21、StaticNestedClass和InnerClass不同。

StaticNestedClass是被声明为静态(static)内部类,它可以不依赖于外部类实例被实例化。

而普通内部类需要在外部类实例化后才干实例化。

22、JSP中动态INCLUDE与静态INCLUDE区别?

动态INCLUDE用jsp:

include动作实现

includepage="included.jsp"flush="true"/>它总是会检查所含文献中变化,合用于包括动态页面,并且可以带参数。

静态INCLUDE用include伪码实现,定不会检查所含文献变化,合用于包括静态页面<%@includefile="included.htm"%>

23、什么时候用assert。

assertion(断言)在软件开发中是一种惯用调试方式,诸多开发语言中都支持这种机制。

在实现中,assertion就是在程序中一条语句,它对一种boolean表达式进行检查,一种对的程序必要保证这个boolean表达式值为true;如果该值为false,阐明程序已经处在不对的状态下,系统将给出警告或退出。

普通来说,assertion用于保证程序最基本、核心对的性。

assertion检查普通在开发和测试时启动。

为了提高性能,在软件发布后,assertion检查普通是关闭。

24、GC是什么?

为什么要有GC?

GC是垃圾收集意思(GabageCollection),内存解决是编程人员容易浮现问题地方,忘掉或者错误内存回收会导致程序或系统不稳定甚至崩溃,Java提供GC功能可以自动监测对象与否超过作用域从而达到自动回收内存目,Java语言没有提供释放已分派内存显示操作办法。

25、shorts1=1;s1=s1+1;有什么错?

shorts1=1;s1+=1;有什么错?

shorts1=1;s1=s1+1;(s1+1运算成果是int型,需要强制转换类型)shorts1=1;s1+=1;(可以对的编译)

26、Math.round(11.5)等於多少?

Math.round(-11.5)等於多少?

Math.round(11.5)==12Math.round(-11.5)==-11round办法返回与参数最接近长整数,参数加1/2后求其floor.

27、Strings=newString("xyz");创立了几种StringObject?

两个

28、设计4个线程,其中两个线程每次对j增长1,此外两个线程对j每次减少1。

写出程序。

如下程序使用内部类实现线程,对j增减时候没有考虑顺序问题。

publicclassThreadTest1{privateintj;publicstaticvoidmain(Stringargs[]){ThreadTest1tt=newThreadTest1();Incinc=tt.newInc();Decdec=tt.newDec();for(inti=0;i<2;i++){Threadt=newThread(inc);t.start();t=newThread(dec);t.start();}}privatesynchronizedvoidinc(){j++;System.out.println(Thread.currentThread().getName()+"-inc:

"+j);}

privatesynchronizedvoiddec(){j--;System.out.println(Thread.currentThread().getName()+"-dec:

"+j);}

classIncimplementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){inc();}}}classDecimplementsRunnable{publicvoidrun(){for(inti=0;i<100;i++){dec();}}}}

29、Java有无goto?

java中保存字,当前没有在java中使用。

30、启动一种线程是用run()还是start()?

启动一种线程是调用start()办法,使线程所代表虚拟解决机处在可运营状态,这意味着它可以由JVM调度并执行。

这并不意味着线程就会及时运营。

run()办法可以产生必要退出标志来停止一种线程。

31、EJB涉及(SessionBean,EntityBean)说出她们生命周期,及如何管理事务?

SessionBean:

StatelessSessionBean生命周期是由容器决定,当客户机发出祈求要建立一种Bean实例时,EJB容器不一定要创立一种新Bean实例供客户机调用,而是随便找一种既有实例提供应客户机。

当客户机第一次调用一种StatefulSessionBean时,容器必要及时在服务器中创立一种新Bean实例,并关联到客户机上,后来此客户机调用StatefulSessionBean办法时容器会把调用分派到与此客户机有关联Bean实例。

EntityBean:

EntityBeans能存活相对较长时间,并且状态是持续。

只要数据库中数据存在,Entitybeans就始终存活。

而不是按照应用程序或者服务进程来说。

虽然EJB容器崩溃了,Entitybeans也是存活。

EntityBeans生命周期可以被容器或者Beans自己管理。

EJB通过如下技术管理实务:

对象管理组织(OMG)对象实务服务(OTS),SunMicrosystemsTransactionService(JTS)、JavaTransactionAPI(JTA),开发组(X/Open)XA接口。

32、应用服务器有那些?

BEAWebLogicServer,IBMWebSphereApplicationServer,Oracle9iApplicationServer,jBoss,Tomcat

33、给我一种你最常用到runtimeexception。

ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException

34、接口与否可继承办口?

抽象类与否可实现(implements)接口?

抽象类与否可继承实体类(concreteclass)?

接口可以继承办口。

抽象类可以实现(implements)接口,抽象类与否可继承实体类,但前提是实体类必要有明确构造函数。

35、List,Set,Map与否继承自Collection接口?

List,Set是,Map不是

36、说出数据连接池工作机制是什么?

J2EE服务器启动时会建立一定数量池连接,并始终维持不少于此数目池连接。

客户端程序需要连接时,池驱动程序会返回一种未使用池连接并将其表记为忙。

如果当前没有空闲连接,池驱动程序就新建一定数量连接,新建连接数量有配备参数决定。

当使用池连接调用完毕后,池驱动程序将此连接表记为空闲,其她调用就可以使用这个连接。

37、abstractmethod与否可同步是static,与否可同步是native,与否可同步是synchronized?

都不能

38、数组有无length()这个办法?

String有无length()这个办法?

数组没有length()这个办法,有length属性。

String有有length()这个办法。

39、Set里元素是不能重复,那么用什么办法来区别重复与否呢?

是用==还是equals()?

它们有何区别?

Set里元素是不能重复,那么用iterator()办法来区别重复与否。

equals()是判读两个Set与否相等。

equals()和==办法决定引用值与否指向同一对象equals()在类中被覆盖,为是当两个分离对象内容和类型相配话,返回真值。

40、构造器Constructor与否可被override?

构造器Constructor不能被继承,因而不能重写Overriding,但可以被重载Overloading。

41、与否可以继承String类?

String类是final类故不可以继承。

42、swtich与否能作用在byte上,与否能作用在long上,与否能作用在String上?

switch(expr1)中,expr1是一种整数表达式。

因而传递给switch和case语句参数应当是int、short、char或者byte。

long,string都不能作用于swtich。

43、try{}里有一种return语句,那么紧跟在这个try后finally{}里code会不会被执行,什么时候被执行,在return前还是后?

会执行,在return前执行。

44、编程题:

用最有效率办法算出2乘以8等於

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1