收藏 分享(赏)

java面试题集合.doc

上传人:凯文文 文档编号:46629 上传时间:2018-07-31 格式:DOC 页数:22 大小:171.50KB
下载 相关 举报
java面试题集合.doc_第1页
第1页 / 共22页
java面试题集合.doc_第2页
第2页 / 共22页
java面试题集合.doc_第3页
第3页 / 共22页
java面试题集合.doc_第4页
第4页 / 共22页
java面试题集合.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、Java 面试题集1、面向对象的特征有哪些方面 (1).抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。(2).继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。(

2、3).封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。(4). 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。2、String 是最基本的数据类型吗?基本数据类型包括 byte、int、char、long、float、double、boolean 和 short。java.lang.String 类是 final 类型的,因此

3、不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer 类3、int 和 Integer 有什么区别Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int 是 java 的原始数据类型,Integer 是 java为 int 提供的封装类。Java 为每个原始类型提供了封装类。原始类型封装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同

4、的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。4、String 和 StringBuffer 的区别JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个 String 类提供了数值不可改变的字符串。而这个 StringBuffer 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用 StringBuffer。典型地,你可以使用 String

5、Buffers 来动态构造字符数据。5、运行时异常与一般异常有何异同?异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。6、说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其

6、 destroy 方法。与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。7、说出 ArrayList,Vector, LinkedList 的存储性能和特性ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synch

7、ronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。8、EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别,StatefulBean 和 StatelessBean 的区别。EJB 包括 Session Bean、Entity Bean、Message Driven Bean,基于 JNDI、RMI、JAT 等技术实现。SessionBean 在 J2EE 应用程序中被用来完成一些服务器

8、端的业务操作,例如访问数据库、调用其他 EJB 组件。EntityBean 被用来代表应用系统中用到的数据。对于客户机,SessionBean 是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method 之中执行,不同的是 Stateful Session

9、Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看,Sta

10、teful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。9、Collection 和 Collections 的区别。 Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。10、 s1 = s1 + 1;有什么错? short s1 =

11、 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1 运算结果是 int 型,需要强制转换类型)short s1 = 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、String s = new String(“xyz“);创建了几个 String Object? 两个28、设计 4 个线程,其中两个

12、线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序。以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题。public class ThreadTest1private int j;public static void main(String args)ThreadTest1 tt=new ThreadTest1();Inc inc=tt.new Inc();Dec dec=tt.new Dec();for(int i=0;iisErrorPage(是否能使用 Exception 对象),isELIgnored(是否忽略表达式)60、什么情况下调用 doGet()和

13、 doPost()?Jsp 页面中的 form 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。61、servlet 的生命周期web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始化。通过调用service()方法实现,根据请求的不同调用不同的 do*()方法。结束服务,web 容器调用 servlet 的 destroy()方法。62、如何现实 servlet 的单线程模式63、页面间对象传递的方法request,session,application,cookie

14、等64、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是“类servlet“。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet主要用于控制逻辑。65、四种会话跟踪技术会话作用域 ServletsJSP 页面描述page 否是代表与一个页面相关的对

15、象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面request 是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)session 是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求application 是是代表与整个 Web 应用程序相关的对象和属性。

16、这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域66、Request 对象的主要方法:setAttribute(String name,Object):设置名字为 name 的 request 的参数值getAttribute(String name):返回由 name 指定的属性值getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组getCharacterEncoding():返回请求中的字符编码方式getConte

17、ntLength():返回请求的 Body 的长度getHeader(String name):获得 HTTP 协议定义的文件头信息getHeaders(String name):返回指定名字的 request Header 的所有值,结果是一个枚举的实例getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例getInputStream():返回请求的输入流,用于获得请求中的数据getMethod():获得客户端向服务器端传送数据的方法getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数值getP

18、arameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例getParameterValues(String name):获得有 name 指定的参数的所有值getProtocol():获取客户端向服务器端传送数据所依据的协议名称getQueryString():获得查询字符串getRequestURI():获取发出请求字符串的客户端地址getRemoteAddr():获取客户端的 IP 地址getRemoteHost():获取客户端的名字getSession(Boolean create):返回和请求相关 SessiongetServerName():获取

19、服务器的名字getServletPath():获取客户端所请求的脚本文件的路径getServerPort():获取服务器的端口号removeAttribute(String name):删除请求中的一个属性67、J2EE 是技术还是平台还是框架?J2EE 本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE 也是一个框架,包括 JDBC、JNDI、RMI、JMS、EJB、JTA 等技术。68、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出一个某种编码的字符串?Public String translate (String str)

20、String tempStr = “;try tempStr = new String(str.getBytes(“ISO-8859-1“), “GBK“);tempStr = tempStr.trim();catch (Exception e) System.err.println(e.getMessage();return tempStr;69、简述逻辑操作(&,|,)与条件操作(&,|)的区别。区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型b.逻辑操作不会产生短路70、XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪

21、几种方式? a: 两种形式 dtd schema,b: 本质区别:schema 本身是 xml 的,可以被 XML 解析器解析(这也是从 DTD 上发展schema 的根本目的),c:有 DOM,SAX,STAX 等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的树结构所造成的,这种结构占用的内存较多,而且 DOM 必须在解析文件之前把整个文档装入内存,适合对 XML 的随机访问SAX:不现于 DOM,SAX 是事件驱动型的 XML 解析方式。它顺序读取 XML 文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户

22、通过在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问 STAX:Streaming API for XML (StAX)71、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同 ?主要相同点:Lock 能完成 synchronized 所实现的所有功能主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能。synchronized 会自动释放锁,而 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放。72、EJB 的角色和三个对象一个完整的基于 EJB 的分布式计

23、算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循 Sun 公司提供的 EJB 规范,以保证彼此之间的兼容性。这六个角色分别是 EJB 组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB 服务器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator)三个对象是 Remote(Local)接口、Home(LocalHome)接口,Bean 类7

24、3、EJB 容器提供的服务主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。74、EJB 规范规定 EJB 中禁止的操作有哪些? 1.不能操作线程和线程 API(线程 API 指非线程对象的方法如 notify,wait 等),2.不能操作 awt,3.不能实现服务器功能,4.不能对静态属生存取,5.不能使用 IO 操作直接存取文件系统,6.不能加载本地库.,7.不能将this 作为变量和返回,8.不能循环调用。75、remote 接口和 home 接口主要作用remote 接口定义了业务方法,用于 EJB 客户端调用业务方法。home 接口是 EJB 工厂用于

25、创建和移除查找 EJB 实例76、bean 实例的生命周期对于 Stateless Session Bean、Entity Bean、Message Driven Bean 一般存在缓冲池管理,而对于 Entity Bean和 Statefull Session Bean 存在 Cache 管理,通常包含创建实例,设置上下文、创建 EJB Object(create)、业务方法调用、remove 等过程,对于存在缓冲池管理的 Bean,在 create 之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在 Cache 管理的 Bean 则通过激活和去激活机制保持 Bean 的

26、状态并限制内存中实例数量。77、EJB 的激活机制以 Stateful Session Bean 为例:其 Cache 大小决定了内存中可以同时存在的 Bean 实例的数量,根据 MRU 或 NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个 EJB 实例业务方法时,如果对应 EJB Object 发现自己没有绑定对应的 Bean 实例则从其去激活 Bean 存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的 ejbActive 和 ejbPassivate 方法。78、EJB 的几种类型会话(Session)Bean ,实体(Entity)Bean

27、 消息驱动的(Message Driven)Bean会话 Bean 又可分为有状态(Stateful)和无状态(Stateless)两种实体 Bean 可分为 Bean 管理的持续性(BMP)和容器管理的持续性(CMP)两种79、客服端调用 EJB 对象的几个基本步骤设置 JNDI 服务工厂以及 JNDI 服务地址系统属性,查找 Home 接口,从 Home 接口调用 Create 方法创建 Remote 接口,通过 Remote 接口调用其业务方法。80、如何给 weblogic 指定大小的内存? 在启动 Weblogic 的脚本中(位于所在 Domian 对应服务器目录下的 startSe

28、rverName),增加 set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为 32M,最大 200M81、如何设定的 weblogic 的热启动模式(开发模式)与产品发布模式?可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者 commenv文件,增加 set PRODUCTION_MODE=true。82、如何启动时不需输入用户名与密码?修改服务启动文件,增加 WLS_USER 和 WLS_PW 项。也可以在 boot.properties 文件中增加加密过的用户名和密码.83、在 weblogic 管理制台中对一个应用域(或者说是一个网站,Domain)进行 jms 及 ejb 或连接池等相关信息进行

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

当前位置:首页 > 网络技术 > 热门技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报