Java面试题大汇总

这些java的面试题是从网上收集来的,为了加深印象,所以我全部手敲来加深印象,毕竟java语言的东西比较多,知识点比较多,没有很长的时间来学习和思考,是不会理解和运用在自己的实际开发中的,我在许多公司面试的时候都有很多面试题和这里的一样,这些面试题的一些答案不全面,往往被面试的人的答案不是不对,但是去得到面试官的一阵阵的疑问,也许这些面试官不是搞技术的,或者不是什么技术行业的精英,我们就无奈的人倒霉吧.

下面开始写java面试题及答案:

j2EE基础问答:

1.       下面那些类是可以被继承的?

java.lang.Thread (true)

java.lang.Number (true)

java.lang.Double (false)

java.lang.Math (false)

java.lang.Void (false)

java.lang.Class (false)

java.lang.ClassLoader (true)

2.       接口和抽象类的区别?

1)      接口可以被多重实现(implements),实现而抽象类只能被单一继承(extends)..

(若要同时实现多个接口,就用逗号分隔,只要那个类不是被声明为final或者那个类定义为abstract的都能被继承.同时实现继承和实现的代码如:class A extends B implements C,D,E )

2)      接口只有定义,而抽象类可以有定义和实现.

3)      接口的字段定义默认为public static final ,抽象类的默认字段是friendly (本包可见).

3.       Hashtable的原理, HashtableHashMap的区别?

1)      Hashtable的原理:通过接点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址.

2)      HashtableHashMap的区别:

A)     HashtableDictionary的子类,HashMapMap接口的一个实现类.

B)      Hashtable中的方法是同步的,HashMap中的方法在默认情况下是非同步的,(即是说,在多线程应用程序中,不用专门的操作就安全地使用Hashtable,而对于HashMap,则需要额外的同步机制,HashMap的同步问题可通过Collections的一个静态方法得到,解决:

Map Collections synchronizedMap(Map m),这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的).

C) HashMap,null可以作为键值,这样的键值只有一个,可以有一个或多个键所对应的值为null,get()方法返回的值为null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null.因此,HashMap中不能由get()方法来判断HashMap中是否存在某个值,而应该用containsKey()方法来判断.

4.       CollectionCollections的区别?

Collectionjava.util包下的一个接口,它是各种集合结构的父接口.

Collectionsjava.util包下的一个类,它包含有各种有关集合操作的静态方法.

5.. frowardredirect的区别?

  forwardservlet的一个内部调用,是在服务器端直接转到新的URL,对于浏览器是透明的。

  redirect是重定向,2 request,2request将丢失第一次的attributes/parameters. , sendRedirect()是向浏览器发送一个redirect通知,浏览器重定向到新的URL
前者浏览器的地址栏显示的是Servlet的URL,后者浏览器的地址栏显示的是新的URL.
因而当目标URL会自动刷新时,两者会造成一些差别。

6.     什么是web容器?

实现J2RR规范中web协议的应用,该协议定义了web程序的运行时的环境,包括:并发性,安全性,生命周期管理等.

7.     解释下面关于J2EE的名词:

1) JNDI:Java Naming & Directory Interface,Java命名目录服务,主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.

2) JMS::Java Message Service,Java消息服务,主要实现各个应用程序之间的通讯,包括点对点和广播.

3) JTA:Java Transaction API,Java事务服务,提供各种分布式事务服务,应用程序只需要调用其提供的接口即可.

4) JAF:Java Action FrameWork,Java安全认框架,提供一些安全控制方面的框架,让开发者通过各种部署和自定义实现自己的个性安全控制策略.

5) RMI:Remote Method Interface,运程方法调用.

8) EJB是基于哪些技术实现的?并说出SessionBeanEntityBean的区别,StatefulBeanStatelessBean的区别?

1)      EIB包括Session Bean,Entity Bean,Message Driven Bean,基于JNDI,RMI,JTA等技术实现

2)      SessionBeanJ2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库,调用其他EIB组件.EntityBean 被用来代表应用系统中用到的数据,.对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体.

SessionBean可以再细分为Stateful Session BeanStateless Session Bean,可以记录呼叫者的状态,.因此,通常来说,,一个使用者会有一个相对应的Stateful Session Bean的实体,Stateless Session Bean虽然也是逻辑组件,但它却不负责记录使用者状态,也就是说当使用者呼叫Stateless Session Bean的时候,EJB Container并不会找寻特定的Stateless Session Bean的实体来执行这个method,换言之,很可能数个使用者在执行某个Stateless Session Beanmethods,会是同一个BeanInstance在执行,从内存方面来看,Stateful Session BeanStateless Session Bean比较,Stateful Session Bean会消耗J2EE Server较多的内存,然而Stateful Session Bean的优势在于它可以维持使用者的状态.

9) XML的解析方法?

       SAX,DOM,JDOM

    (引申文章: 来源于

http://blog.csdn.net/lphpc/archive/2004/11/10/176140.aspx

JavaXML编程接口比较:DOM SAX JDOM JAXP 

一、DOM (文档对象模型)
      
XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。
       
优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;
       
缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
      
使用场合:一旦解析了文档还需多次访问这些数据;
                      
硬件资源充足(内存、CPU
二、SAX
      
为解决DOM的问题,出现了SAX
       SAX
,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。
      
优点:不用事先调入整个文档,占用资源少;
                SAX
解析器代码比DOM解析器代码小,适于Applet,下载
      
缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;
                
无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;
      
使用场合:Applet;
                     
只需XML文档的少量内容,很少回头访问;
                      
机器内存少;
三、JDOM 

为减少DOMSAX的编码量,出现了JDOM
       
优点:20-80原则,极大减少了代码量
      
使用场合:要实现的功能简单,如解析、创建等
                      Java
程序
                    
但在底层,JDOM还是使用SAX(最常用)、DOMXanan
四、JAPX
       
为多个XML解析器提供了统一编程接口
       
更换解析器,不用更改代码
       
使用场合:若不用Jdom,一般建议使用JAPX

10. 什么是WebService?

       WebService就是为了使原来各孤立站点之间的信息能够相互通信,共享而提出的一种接口,WebService使用的是Internet上统一,开放的标准,HTTP,XML,SOAP(简单对象访问协议)WSDL,所以WebService可以在任何支持这些标准的环境(Windows,Linux)中使用.

       :SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通信协议.在此协议下,软件的组件或应用程序能够通过标准的HTTP协议进行通讯,它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够广泛的被用户访问.

       优势:

1)      跨平台

2)      SOAP是基于HTTPXML这些业界标准的,得到了所有的重要公司的支持.

3)      由于使用了SOAP,数据是以ASCII文本的方式,而非二进制传输,调试很方便,并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个漏洞”.

4)      此外,WebService实现的技术难度要比CORBADCOM小的多.

5)      要实现B2B集成,EDI比较完善和比较复杂,而用WebService则可以低成本的实现,小公司也可以用上.

6)      C/S的程序中,WebService可以实现网页无整体刷新与服务器打交道并取数.

缺点:

1)      WebService使用了XML对数据进行封装,会造成大量的数据要在网络上传输

2)      WebService规范没有规定任何与实现相关的细节,包括对象模型,编程语言,这一点,它不如CORBA,.

11. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

1)      多线程有两种实现方法,分别是继承Thread类和实现Runnable接口.

2)      同步也有两种实现方法,分别为sychronized,waitnotify.

12. Jsp中动态include与静态include的区别?

       1) 动态include是用jsp:include动作来实现

              <jsp:include page=”include.jsp” flush=”true”/>

              它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数.

3)      静态includeinclude代码来实现,不会检查所含文件的变化,适用于包含静态页面

<%@ include file=”include.htm”%>

. Java编程与程序的运行结果.

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值