《Java常考面试题附复习资料.docx》由会员分享,可在线阅读,更多相关《Java常考面试题附复习资料.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java常考面试题什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?参考答案Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚 拟机执行的字节码文件。Java被设计成允许应用程序可以运行在随意的平台,而不须要程序员为每一个平台单独重 写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和 其他特性。JDK和JRE的区分是什么?参考答案Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet 须要的阅读器插件。Java开发工具包(JDK)是完整的Java软件开发包,包
2、含了 JRE,编译 器和其他的工具(比如:JavaDoc, Java调试器),可以让开发者开发、编译、执行Java应 用程序。“static”关键字是什么意思? Java中是否可以覆盖(override)一个private或者是 static的方法?参考答案“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的状况下 被访问。Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编 译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。是否可以在static环境中访问非static变量?参考答案static
3、变量在Java中是属于类的,它在全部的实例中的值是一样的。当类被Java虚拟机载 入的时候,会对static变量进行初始化。假如你的代码尝试不用实例来访问非static的变量, 编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。Java支持的数据类型有哪些?什么是自动拆装箱?参考答案Java语言支持的8种基本数据类型是: byte short int long float double boolean charthrow关键字用来在程序中明确的抛出异样,相反,throws语句用来表明方法不能处理的异 样。每一个方法都必需要指定哪些异样不能处理,所以方法的调用者才能够确保处理可
4、能发 生的异样,多个异样是用逗号分隔的。异样处理完成以后,Exception对象会发生什么变更?参考答案Exception对象会在下一个垃圾回收过程中被回收掉。finally代码块和finalize。方法有什么IX分?参考答案无论是否抛出异样,finally代码块都会执行,它主要是用来释放应用占用的资源。finalize() 方法是Object类的一个protected方法,它是在对象被垃圾回收之前由Java虚拟机来调用 的。Java小应用程序(Applet)什么是Applet?参考答案java applet是能够被包含在HTML页面中并且能被启用了 java的客户端阅读器执行的程序。 App
5、let主要用来创建动态交互的web应用程序。说明一下Applet的生命周期参考答案applet可以阅历下面的状态:Init:每次被载入的时候都会被初始化。Start:起先执行 appletoStop:结束执行applet。Destroy:卸载applet之前,做最终的清理工作。当applet被载入的时候会发生什么?参考答案首先,创建applet限制类的实例,然后初始化applet,最终起先运行。Applet和一般的Java应用程序有什么区分?参考答案applet是运行在启用了 java的阅读器中,Java应用程序是可以在阅读器之外运行的独立的 Java程序。但是,它们都须要有Java虚拟机。进
6、一步来说,Java应用程序须要一个有特定方法签名的main函数来起先执行。Java applet 不须要这样的函数来起先执行。最终,Java applet一般会运用很严格的平安策略,Java应用一般运用比较宽松的平安策略。Java applet有哪些限制条件?参考答案主要是由于平安的缘由,给applet施加了以下的限制:applet不能够载入类库或者定义本地方法。applet不能在宿主机上读写文件。applet不能读取特定的系统属性。applet不能发起网络连接,除非是跟宿主机。applet不能够开启宿主机上其他任何的程序。什么是不受信任的applet?参考答案不受信任的applet是不能访问
7、或是执行本地系统文件的Java applet,默认状况下,全部下 载的applet都是不受信任的。从网络上加载的applet和从本地文件系统加载的applet有什么区分?参考答案当applet是从网络上加载的时候,applet是由applet类加载器载入的,它受applet平安管 理器的限制。当applet是从客户端的本地磁盘载入的时候,applet是由文件系统加载器载入的。从文件系统载入的applet允许在客户端读文件,写文件,加载类库,并且也允许执行其他 程序,但是,却通不过字节码校验。applet类加载器是什么?它会做哪些工作?参考答案当applet是从网络上加载的时候,它是由apple
8、t类加载器载入的。类加载器有自己的java 名称空间等级结构。类加载器会保证来自文件系统的类有唯一的名称空间,来自网络资源的 类有唯一的名称空间。当阅读器通过网络载入applet的时候,applet的类被放置于和applet的源相关联的私有的 名称空间中。然后,那些被类加载器载入进来的类都是通过了验证器验证的。验证器会检查 类文件格式是否遵守Java语言规范,确保不会出现堆栈溢出(stack overflow)或者下溢 (underflow),传递给字节码指令的参数是正确的。applet平安管理器是什么?它会做哪些工作?参考答案applet平安管理器是给applet施加限制条件的一种机制。阅读
9、器可以只有一个平安管理器。 平安管理器在启动的时候被创建,之后不能被替换覆盖或者是扩展。弹出式选择菜单(Choice)和列表(List)有什么区分参考答案Choice是以一种紧凑的形式展示的,须要下拉才能看到全部的选项。Choice中一次只能选 中一个选项。List同时可以有多个元素可见,支持选中一个或者多个元素。什么是布局管理器?参考答案布局管理器用来在容器中组织组件。滚动条(Scrollbar)和滚动面板(JScrollPane)有什么区分?参考答案Scrollbar是一个组件,不是容器。而ScrollPane是容器。ScrollPane自己处理滚动事务。哪些Swing的方法是线程平安的?
10、参考答案只有 3 个线程平安的方法:repaint(), revalidate(), and invalidate。说出三种支持重绘(painting)的组件。参考答案Canvas, Frame, Panel,和 Applet 支持重绘。什么是裁剪(clipping)?参考答案限制在一个给定的区域或者形态的绘图操作就做裁剪。Menuitem 和 CheckboxMenultem 的区分是什么?参考答案CheckboxMenultem类继承自Menuitem类,支持菜单选项可以选中或者不选中。边缘布局(BorderLayout)里面的元素是如何布局的?参考答案BorderLayout里面的元素是
11、依据容器的东西南北中进行布局的。网格包布局(GridBagLayout)里面的元素是如何布局的?参考答案GridBagLayout里面的元素是依据网格进行布局的。不同大小的元素可能会占据网格的多于 1行或一列。因此,行数和列数可以有不同的大小。Window和Frame有什么区分?参考答案Frame类继承了 Window类,它定义了一个可以有菜单栏的主应用窗口。裁剪(clipping)和重绘(repainting)有什么联系?参考答案当窗口被AWT重绘线程进行重绘的时候,它会把裁剪区域设置成须要重绘的窗口的区域。事务监听器接口(event-listener interface)和事务适配器(ev
12、ent-adapter)有什么关 系?参考答案事务监听器接口定义了对特定的事务,事务处理器必需要实现的方法。事务适配器给事务监 听器接口供应了默认的实现。GUI组件如何来处理它自己的事务?参考答案GUI组件可以处理它自己的事务,只要它实现相对应的事务监听器接口,并且把自己作为事 务监听器。Java的布局管理器比传统的窗口系统有哪些优势?参考答案Java运用布局管理器以一种一样的方式在全部的窗口平台上摆放组件。因为布局管理器不 会和组件的确定大小和位置相绑定,所以他们能够适应跨窗口系统的特定平台的不同。Java的Swing组件运用了哪种设计模式?参考答案Java中的Swing组件运用了 MVC(
13、视图模型-限制器)设计模式。什么是JDBC?参考答案JDBC是允许用户在不同数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数 据库应用程序,而不须要关切底层特定数据库的微小环节。说明下驱动(Driver)在JDBC中的角色。参考答案JDBC驱动供应了特定厂商对JDBC API接口类的实现,驱动必需要供应java.sql包下面这 些类的实现:Connection, Statement, PreparedStatement,CallableStatement, ResultSet 和 Driver。Class.forName。方法有什么作用?参考答案初始化参数指定的类,并且返回此类对
14、应的Class对象PreparedStatement 比 Statement 有什么优势? 参考答案PreparedStatements是预编译的,因此,性能会更好。同时,不同的查询参数值, PreparedStatement 可 以重用。什么时候运用CallableStatement?用来准备CallableStatement的方法是什么?参考答案CallableStatement用来执行存储过程。存储过程是由数据库存储和供应的。存储过程可以 接受输入参数,也可以有返回结果。特殊激励运用存储过程,因为它供应了平安性和模块化。 准备一个CallableStatement的方法是:Callabl
15、eStament.prepareCall();数据库连接池是什么意思?参考答案像打开关闭数据库连接这种和数据库的交互可能是很费时的,尤其是当客户端数量增加的时 候,会消耗大量的资源,成本是特殊高的。可以在应用服务器启动的时候建立很多个数据库 连接并维护在一个池中。连接请求由池中的连接供应。在连接运用完毕以后,把连接归还到 池中,以用于满足将来更多的请求。什么是RMI?参考答案Java远程方法调用(Java RMI)是Java API对远程过程调用(RPC)供应的面对对象的等价形 式,支持干脆传输序列化的Java对象和分布式垃圾回收。远程方法调用可以看做是激活远 程正在运行的对象上的方法的步骤。
16、RMI对调用者是位置透亮的,因为调用者感觉方法是 执行在本地运行的对象上的。看下RMI的一些留意事项。RMI体系结构的基本原则是什么?参考答案RMI体系结构是基于一个特殊重要的行为定义和行为实现相分别的原则。RMI允许定义行 为的代码和实现行为的代码相分别,并且运行在不同的JVM上。RMI体系结构分哪几层?参考答案RMI体系结构分以下几层:存根和骨架层(Stub and Skeleton layer):这一层对程序员是透亮的,它主要负责拦截客户 端发出的方法调用请求,然后把请求重定向给远程的RMI服务。远程引用层(Remote Reference Layer): RMI体系结构的其次层用来解析
17、客户端对服务端远 程对象的引用。这一层解析并管理客户端对服务端远程对象的引用。连接是点到点的。传输层(Transport layer):这一层负责连接参与服务的两个JVM。这一层是建立在网络上机 器间的TCP/IP连接之上的。它供应了基本的连接服务,还有一些防火墙穿透策略。RMI中的远程接口(1171016 Interface)扮演了什么样的角色? 参考答案远程接口用来标识哪些方法是可以被非本地虚拟机调用的接口 O远程对象必需要干脆或者是 间接实现远程接口。实现了远程接口的类应当声明被实现的远程接口,给每一个远程对象定 义构造函数,给全部远程接口的方法供应实现。类扮演了什么样的角色?参考答案类
18、用来存储和获得在远程对象注册表里面的远程对象的引用。Naming类 的每一个方法接收一个URL格式的String对象作为它的参数。RMI的绑定(Binding)是什么意思?参考答案绑定是为了查询找远程对象而给远程对象关联或者是注册以后会用到的名称的过程。远程对 象可以运用Naming类的bind。或者rebind。方法跟名称相关联。Naming类的bind。和rebind。方法有什么区分?参考答案bind。方法负责把指定名称绑定给远程对象,rebind。方法负责把指定名称重新绑定到一个新 的远程对象。假如那个名称已经绑定过了,从前的绑定会被替换掉。让RMI程序能正确运行有哪些步骤?参考答案为了
19、让RMI程序能正确运行必需要包含以下几个步骤:编译全部的源文件。运用rmic生成stubo启动 rmiregistryo启动RMI服务器。运行客户端程序。RMI的stub扮演了什么样的角色?参考答案远程对象的stub扮演了远程对象的代表或者代理的角色。调用者在本地stub上调用方法, 它负责在远程对象上执行方法。当stub的方法被调用的时候,会阅历以下几个步骤: 初始化到包含了远程对象的JVM的连接。序列化参数到远程的JVM。等待方法调用和执行的结果。反序列化返回的值或者是方法没有执行成功状况下的异样。把值返回给调用者。什么是分布式垃圾回收(DGC)?它是如何工作的?参考答案DGC叫做分布式垃
20、圾回收。RMI运用DGC来做自动垃圾回收。因为RMI包含了跨虚拟机 的远程对象的引用,垃圾回收是很困难的。DGC运用引用计数算法来给远程对象供应自动 内存管理。什么是分布式垃圾回收(DGC)?它是如何工作的?参考答案DGC叫做分布式垃圾回收。RMI运用DGC来做自动垃圾回收。因为RMI包含了跨虚拟机 的远程对象的引用,垃圾回收是很困难的。DGC运用引用计数算法来给远程对象供应自动 内存管理。RMI中运用RMI平安管理器(RMISecurityManager)的目的是什么? 参考答案RMISecMtyManager运用下载好的代码供应可被RMI应用程序运用的平安管理器。假如没 有设置平安管理器,
21、RMI的类加载器就不会从远程下载任何的类。说明下 Marshalling 和 demarshallingo参考答案当应用程序希望把内存对象跨网络传递到另一台主机或者是许久化到存储的时候,就必需要 把对象在内存里面的表示转化成合适的格式。这个过程就叫做Marshalling,反之就是 demarshallingo说明下 Serialization 和 Deserialization0参考答案Java供应了一种叫做对象序列化的机制,他把对象表示成一连串的字节,里面包含了对象 的数据,对象的类型信息,对象内部的数据的类型信息等等。因此,序列化可以看成是为了 把对象存储在磁盘上或者是从磁盘上读出来并重
22、建对象而把对象扁平化的一种方式。反序列 化是把对象从扁平状态转化成活动对象的相反的步骤。Servlet什么是Servlet?参考答案Servlet是用来处理客户端请求并产生动态网页内容的Java类。Servlet主要是用来处理或 者是存储HTML表单提交的数据,产生动态内容,在无状态的协议下管理状态信息。说一下Servlet的体系结构。参考答案全部的Servlet都必需要实现的核心的接口是。每一个Servlet都必需 要干脆或者是间接实现这个接口,或者是继承或者 javax.servlet. Servlet0最终,Servlet运用多线程可以并行的为多个请求服务。Applet和Servlet有
23、什么区分?参考答案Applet是运行在客户端主机的阅读器上的客户端Java程序。而Servlet是运行在web服务 器上的服务端的组件。applet可以运用用户界面类,而Servlet没有用户界面,相反,Servlet 是等待客户端的 请求,然后为请求产生响应。GenericServlet 和 Servlet 有什么区分?参考答案GenericServlet 是一个通用的协议无关的 Servlet,它实现了 Servlet 和 ServletConfig 接口。 继承自GenericServlet的Servlet应当要覆盖service。方法。最终,为了开发一个能用在网 页上服务于运用协议请求
24、的Servlet,你的Servlet必需要继承自Servlet。这里有Servlet的例子。说明下Servlet的生命周期。参考答案对每一个客户端的请求,Servlet引擎载入Servlet,调用它的init()方法,完成Servlet的初 始化。然后,Servlet对象通过为每一个请求单独调用service。方法来处理全部随后来自客 户端的请求,最终,调用Servlet(译者注:这里应当是Servlet而不是server)的destroy。 方法把Servlet删除掉。doGet()方法和doPost。方法有什么区分?参考答案doGet: GET方法会把名值对追加在请求的URL后面。因为UR
25、L对字符数目有限制,进而 限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不 能用这种方式传递。doPOST: POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可 以发送的参数的数目是没有限制的。最终,通过POST请求传递的敏感信息对外部客户端 是不行见的。什么是Web应用程序?参考答案Web应用程序是对Web或者是应用服务器的动态扩展。有两种类型的Web应用:面对表 现的和面对服务的。面对表现的Web应用程序会产生包含了很多种标记语言和动态内容的 交互的web页面作为对请求的响应。而面对服务的Web应用实现了 Web服务的端点 (endpo
26、int)o 一般来说,一个Web应用可以看成是一组安装在服务器URL名称空间的特定 子集下面的Servlet的集合。什么是服务端包含(Server Side Include)?参考答案服务端包含(SSI)是一种简洁的说明型服务端脚本语言,大多数时候仅用在Web上,用 servlet标签嵌入进来。SSI最常用的场景把一个或多个文件包含到Web服务器的一个Web 页面中。当阅读器访问Web页面的时候,Web服务器会用对应的servlet产生的文原来替 换Web页面中的servlet标签。什么是 Servlet 链(Servlet Chaining)?参考答案Servlet链是把一个Servlet的
27、输动身送给另一个Servlet的方法。其次个Servlet的输出可 以发送给第三个Servlet,依次类推。链条上最终一个Servlet负责把响应发送给客户端。如何知道是哪一个客户端的机器正在请求你的Servlet?参考答案ServletRequest类可以找出客户端机器的IP地址或者是主机名。getRemoteAddr。方法获得客户端主机的IP地址,getRemoteHost()可以获得主机名。看下这里的例子。响应的结构是怎么样的?参考答案响应由三个部分组成:状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失 败的状况下,状态码可用来找出失败的缘由。
28、假如Servlet没有返回状态码,默认会返回成 功的状态码 ServletResponse.SC_OKo头部(Header):它们包含了更多关于响应的信息。比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户平安的传输实体内容的编码格式。如何在Serlet 中检索 的头部看这里。主体(Body):它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输 在消息中紧跟在头部后面的数据字节组成的。什么是cookie? session和cookie有什么区分?参考答案cookie是Web服务器发送给阅读器的一块信息。阅读器会在本地文件中给每一个Web服 务器存储cookie。以
29、后阅读器在给特定的Web服务器发请求的时候,同时会发送全部为该 服务器存储的cookieo下面列出了 session和cookie的区分:无论客户端阅读器做怎么样的设置,session都应当能正常工作。客户端可以选择禁用cookie, 但是,session照旧是能够工作的,因为客户端无法禁用服务端的session。在存储的数据量方面session和cookies也是不一样的。session能够存储随意的Java对象, cookie只能存储String类型的对象。阅读器和Servlet通信运用的是什么协议?参考答案阅读器和Servlet通信运用的是协议。什么是 隧道?参考答案隧道是一种利用 或者
30、是S把多种网络协议封装起来进行通信的技术。因此,协议扮演了一个打通用于通信的网络协议的管道的包装器的角色。把其他协议的请求掩盖成 的请求就是 隧道。sendRedirect()和forward。方法有什么区分?参考答案sendRedirect。方法会创建一个新的请求,而forward。方法只是把请求转发到一个新的目标 上。重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的 请求,而转发(forwarding)以后,之前请求作用域范围以内的对象还是能访问的。一般认为 sendRedirect() tk forward。要慢。什么是URL编码和URL内牵码?参
31、考答案URL编码是负责把URL里面的空格和其他的特殊字符替换成对应的十六进制表示,反之就 是解码。什么是JSP页面?参考答案JSP页面是一种包含了静态数据和JSP元素两种类型的文本的文本文档。静态数据可以用 任何基于文本的格式来表示,比如:HTML或者XML。JSP是一种混合了静态内容和动态 产生的内容的技术。这里看下JSP的例子。JSP请求是如何被处理的?参考答案阅读器首先要请求一个以.jsp扩展名结尾的页面,发起JSP请求,然后,Web服务器读取 这个请求,运用JSP编译器把JSP页面转化成一个Servlet类。须要留意的是,只有当第 一次请求页面或者是JSP文件发生变更的时候JSP文件才
32、会被编译,然后服务器调用 servlet类,处理阅读器的请求。一旦请求执行结束,servlet会把响应发送给客户端。这里 看下如何在JSP中获得请求参数。JSP有什么优点?参考答案下面列出了运用JSP的优点:JSP页面是被动态编译成Servlet的,因此,开发者可以很简洁的更新呈现代码。JSP页面可以被预编译。JSP页面可以很简洁的和静态模板结合,包括:HTML或者XML,也可以很简洁的和产生 动态内容的代码结合起来。开发者可以供应让页面设计者以类XML格式来访问的自定义的JSP标签库。开发者可以在组件层做逻辑上的变更,而不须要编辑单独运用了应用层逻辑的页面。什么是JSP指令(Directiv
33、e)? JSP中有哪些不同类型的指令? 参考答案自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如: 把int转化成Integer, double转化成Double,等等。反之就是自动拆箱。Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思? 参考答案Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的 状况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必需有相同的方法名, 参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。Java中,什么是构造函数?什么是构造函数重载?什
34、么是复制构造函数? 参考答案当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类供 应构造函数的状况下,Java编译器会为这个类创建一个默认的构造函数。Java中构造函数重载和方法重载很相像。可以为一个类创建多个构造函数。每一个构造函 数必需有它自己唯一的参数列表。Java不支持像C+中那样的复制构造函数,这个不同点是因为假如你不自己写构造函数的 状况下,Java不会创建默认的复制构造函数。Java支持多继承么?参考答案Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。但是java中的接口 支持多继承,即一个子接口可以有多个父接口。(接口的作用是用来扩展
35、对象的功能,一 个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应 的功能)。接口和抽象类的区分是什么?参考答案Java供应和支持创建抽象类和接口。它们的实现有共同点,不同点在于:接口中全部的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类类可以不实现抽象类和接口声明的全部方法,当然,在这种状况下,类也必需得声明成是抽 象的。抽象类可以在不供应接口方法实现的状况下实现接口。Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。Java接口中的成员函数默认是public的。抽象类的
36、成员函数可以是private, protected或 者是 publico接口是确定抽象的,不行以被实例化。抽象类也不行以被实例化,但是,假如它包含main 方法的话是可以被调用的。也可以参考JDK8中抽象类和接口的区分什么是值传递和引用传递? 参考答案Directive是当JSP页面被编译成Servlet的时候,JSP引擎要处理的指令。Directive用来 设置页面级别的指令,从外部文件插入数据,指定自定义的标签库。Directive是定义在v% 和%之间的。下面列出了不同类型的Directive:包含指令(Include directive):用来包含文件和合并文件内容到当前的页面。页面
37、指令(Page directive):用来定义JSP页面中特定的属性,比如错误页面和缓冲区。 Taglib指令:用来声明页面中运用的自定义的标签库。什么是JSP动作(JSP action)?参考答案JSP动作以XML语法的结构来限制Servlet引擎的行为。当JSP页面被请求的时候,JSP 动作会被执行。它们可以被动态的插入到文件中,重用JavaBean组件,转发用户到其他的 页面,或者是给Java插件产生HTML代码。下面列出了可用的动作: jsp:include当JSP页面被请求的时候包含一个文件。jsp:useBean-找出或者是初始化Javabean o jsp:setProperty
38、-设置 JavaBean 的属性。 jsp:getProperty-获得 JavaBean 的属性。 jsp:forward-把请求转发到新的页面。jsp:plugin-产生特定阅读器的代码。什么是 Scriptlets?参考答案JSP技术中,scriptlet是嵌入在JSP页面中的一段Java代码。scriptlet是位于标签内部的 全部的东西,在标签与标签之间,用户可以添加随意有效的scriplet。声明(Decalaration)在哪里? 参考答案声明跟Java中的变量声明很相像,它用来声明随后要被表达式或者scriptlet运用的变量。 添加的声明必需要用起先和结束标签包起来。什么是表
39、达式(Expression)?参考答案【列表很长,可以分上、中、下发布】JSP表达式是Web服务器把脚本语言表达式的值转化成一个String对象,插入到返回给客 户端的数据流中。表达式是在%=和这两个标签之间定义的。隐含对象是什么意思?有哪些隐含对象? 参考答案JSP隐含对象是页面中的一些Java对象,JSP容器让这些Java对象可以为开发者所运用。 开发者不用明确的声明就可以干脆运用他们。JSP隐含对象也叫做预定义变量。下面列出 了 JSP页面中的隐含对象: application pagerequest response session exception out config pageC
40、ontext面对对象软件开发的优点有哪些?参考答案代码开发模块化,更易维护和修改。代码复用。增加代码的牢靠性和灵敏性。增加代码的可理解性。面对对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个 分析这些特性。封装的定义和好处有哪些?参考答案封装给对象供应了隐藏内部特性和行为的实力。对象供应一些能被其他对象访问的方法来变 更它内部的数据。在Java当中,有3种修饰符:public, private和protected。每一种修饰 符给其他的位于同一个包或者不同包下面对象赐予了不同的访问权限。下面列出了运用封装的一些好处:通过隐藏对象的属性来爱惜对象内部的状态。提高了代码
41、的可用性和可维护性,因为对象的行为可以被单独的变更或者是扩展。禁止对象之间的不良交互提高模块化。参考这个文档获得更多关于封装的微小环节和示例。多态的定义?参考答案多态是编程语言给不同的底层数据类型做相同的接口展示的一种实力。一个多态类型上的操 作可以应用到其他类型的值上面。继承的定义?参考答案继承给对象供应了从基类获得字段和方法的实力。继承供应了代码的重用行,也可以在不修 改类的状况下给现存的类添加新特性抽象的定义?抽象和封装的不同点?参考答案抽象是把想法从具体的实例中分别出来的步骤,因此,要依据他们的功能而不是实现微小环 节来创建类。Java支持创建只暴漏接口而不包含方法实现的抽象的类。这种
42、抽象技术的主 要目的是把类的行为和实现微小环节分别开。抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的 微小环节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来供应抽 象的一种策略。值传递是对基本型变量而言的,传递的是该变量的一个副本,变更副本不影响原变量.引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本 身。所以对引用对象进行操作会同时变更原对象.一般认为Java内的传递都是值传递.进程和线程的区分是什么?参考答案进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。 线程又叫做轻量级
43、进程。创建线程有几种不同的方式?你宠爱哪一种?为什么?参考答案有三种方式可以用来创建线程:继承Thread类实现Runnable接口应用程序可以运用Executor框架来创建线程池实现Runnable接口这种方式更受欢迎,因为这不须要继承Thread类。在应用设计中已经 继承了别的对象的状况下,这须要多继承(而Java不支持多继承),只能实现接口。同时, 线程池也是特殊高效的,很简洁实现和运用。概括的说明下线程的几种可用状态。参考答案1 .新建(new):新创建了一个线程对象。2 .可运行(runnable ):线程对象创建后,其他线程(比如main线程)调用了该对象 的start () 方法
44、。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取cpu的运用权o3 .运行(running ):可运行状态(runnable )的线程获得了 cpu时间片(timeslice),执行 程序代码。4 .堵塞(block ):堵塞状态是指线程因为某种缘由放弃了 cpu运用权,也即让出了 cpu timeslice ,短暂停止运行。直到线程进入可运行(runnable )状态,才有 机会再次获得cpu timeslice转到运行(running )状态。堵塞的状况分三种:(一) .等待堵塞:运行(running )的线程执行o . wait ()方法,JVM会把该线程放 入等待队 列(w
45、aitting queue )中。(二) .同步堵塞:运行(running)的线程在获得对象的同步锁时,若该同步锁 被别的线程占 用,则JVM会把该线程放入锁池(lock pool)中。(三) .其他堵塞:运行(running )的线程执行Thread.sleep (long ms )或t. join ()方法,或 者发出了 I/O请求时,JVM会把该线程置为堵塞状态。当sleep。状态超时、join ()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。5. i:( dead ):线程run()、main ()方法执行结束,或者因异样退出了 run ()
46、方法,则该 线程结束生命周期。死亡的线程不行再次复生。锁池lock pool被其他线程唤醛: o. notify。或者 o.notifyAll。等待队列release lockor monitor会释放锁堂到锁标识synchronized(o)o.wait()新建Thread t = newThread(.)start()可运行状态Runnable获取时间片obtain my timeslice运行状态running1、run(),main。方法结束2、异常退出死匚dead束1、用户检入案成2、sleep。时3、t2线程结束1、时间片用完2、 Thread.yield()阻塞状态doesnt
47、releaseany lock ormonitort2.join()待用户检入、/Thread, sleep。不会释放锁同步方法和同步代码块的区分是什么?参考答案区分:同步方法默认用this或者当前类class对象作为锁;同步代码块可以选择以什么来加锁,比同步方法要更细颗粒度,我们可以选择只同步会发生 同步问题的部分代码而不是整个方法;在监视器(Monitor)内部,是如何做线程同步的?程序应当做哪种级别的同步? 参考答案监视器和锁在Java虚拟机中是一块运用的。监视器监视一块同步代码块,确保一次只有一 个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获得锁之前不允许 执行同步代码。什么是死锁(deadlock) ?参考答案两个线程或两个以上线程都在等待对方执行完毕才能接着往下执行的时候就发生了死锁。结 果就是这些线程都陷入