面试java程序员面试经常被问的问题答案.docx
- 文档编号:11937718
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:14
- 大小:23.89KB
面试java程序员面试经常被问的问题答案.docx
《面试java程序员面试经常被问的问题答案.docx》由会员分享,可在线阅读,更多相关《面试java程序员面试经常被问的问题答案.docx(14页珍藏版)》请在冰豆网上搜索。
面试java程序员面试经常被问的问题答案
第二部分,简答题
1.描述一下private,final关键字在java中的用法,(类似的经典题是final,finally,finalize的区别和用法)
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供finally块来执行任何清除操作。
如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
finalize—方法名。
Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在Object类中定义的,因此所有的类都继承了它。
子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。
finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
2.abstractclass和interface有什么区别?
你在使用中如何选择?
(经典题,技术面试的时候也常问)
interface是接口,所有的方法都是抽象方法,成员变量是默认的publicstaticfinal类型。
接口不能实例化自己。
abstractclass是抽象类,至少包含一个抽象方法的累叫抽象类,抽象类不能被自身实例化,并用abstract关键字来修饰
3.说明runtimeexception和exception的区别,列举几个你知道的runtimeexception类.RuntimeException不需要在程序里面写catch,Exception如果要抛出必须显式定义抛给上级方法或者catch住
常用的RuntimeException:
NullPointerExceptionNumberFormatException
IllegalArgumentException之类的
RuntimeException是java中所有运行时异常的父类,实际运行时出现的都是它的子类,看看RuntimeException的Javadoc就可以随便列出几个:
1),
Objectx=newInteger(0);
System.out.println((String)x);当试图将对象强制转换为不是实例的子类时,抛出该异常(ClassCastException)
2),
inta=5/0;
一个整数“除以零”时,抛出ArithmeticException异常。
3),
Strings=null;
intsize=s.size();
当应用程序试图在需要对象的地方使用null时,抛出NullPointerException异常
4),
"hello".indexOf(-1);
指示索引或者为负,或者超出字符串的大小,抛出StringIndexOutOfBoundsException异常
5),
String[]ss=newString[-1];
如果应用程序试图创建大小为负的数组,则抛出NegativeArraySizeException异常。
4.mvc的各个部分都有哪些技术来实现?
如何实现?
(这个是struts的核心,开发b/s肯定问)
MVC是三个单词的缩写,分别为:
模型(Model),视图(View)和控制Controller)。
MVC模式的目的就是实现Web系统的职能分工。
Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。
View层用于与用户的交互,通常用JSP来实现。
Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
5.列出你所知道的jsp的内置对象(5个以上)
定义:
可以不加声明就在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
内置对象代表内容范围
request触发服务调用的请求request
response对请求的应答page
session为请求的客户创建的session对象session
application从servlet配置对象获得的servlet上下文(如在getServletConfig(),getContext()的调用中)application
out向输出流写入内容的对象page
pageContext本JSP的页面上下文page
page实现处理本页当前请求的类的实例page
config本JSP的ServletConfigpage
exception表示JSP页面运行时产生的异常Page
6.jsp中的两种跳转方式分别是什么?
有什么区别?
在JSP中,跳转页面有两种方式:
1.forward跳转:
forwardpage="跳转页面地址"/>2.response跳转: response.sendRedirect("跳转页面地址");两种跳转的区别如下: 1.forward跳转: a.服务器端跳转,地址栏不改变;b.执行到跳转语句后马上无条件跳转,之后的代码不再执行(跳转之前一定要释放全部资源);c.request设置的属性在跳转后的页面仍可以使用;d.使用 paramname="参数名"value="参数值"/>传递参数。 2.response跳转: a.客户端跳转,地址栏改变;b.所有代码执行完毕后跳转;c.跳转后的页面不能使用上一个页面的request属性;d.使用地址重写传递参数(response.sendRedirect("URL? 参数名,参数值"))。 7.arraylist和vector、hashmap和hashtable,那些是线程安全的,分别有什么区别。 就ArrayList与Vector主要从二方面来说. 一).同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二).数据增长: 当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一).历史原因: Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现 二).同步性: Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三).值: 只有HashMap可以让你将空值作为一个表的条目的key或value 8.目前应用比较多的应用服务器有哪些, Tomcat,JBoss,Resin,WebSphere,WebLogic,SunAppServer,OracleAS都是(java)应用服务器 应用服务器应该是一个小范围的,想web服务器就是比较大的范围了,象apache 就我个人而言,(java)应用服务器就是能够发布java的web应用程序的容器就是(java) 应用服务器 而只要能发布web应用程序的容器总称为web服务器 9.一个sessionbean包含那几个组件,各个组件的作用是什么, SessionBean包含: StatefulSessionBean与StatelessSessionBean StatefulSessionBean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的StatefulSessionBean的实体。 StatelessSessionBean不负责记录使用者状态,也就是说当使用者呼叫StatelessSessionBean的时候,EJBContainer并不会找寻特定的StatelessSessionBean的实体来执行这个method。 换言之,很可能数个使用者在执行某个StatelessSessionBean的methods时,会是同一个Bean的Instance在执行。 , 7描述一下Struts的工作方法 答: 1.包含一个controllerservlet,能将用户的请求发送到相应的Action对象。 2.JSP自由tag库,并且在controllerservlet中提供关联支持,帮助开发员创建交互式表单应用。 3.提供了一系列实用对象: XML处理、通过JavareflectionAPIs自动处理JavaBeans属性、国际化的提示和消息。 Struts项目的目标是为创建Javaweb应用提供一个开放源代码的framework。 Strutsframework的内核是基于例如JavaServlets,JavaBeans,ResourceBundles,和XML,以及各种JakartaCommons包的标准技术的灵活的控制层。 8jsp有哪些内置对象? 作用分别是什么? 答: JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): request用户端请求,此请求会包含来自GET/POST请求的参数 response网页传回用户端的回应 pageContext网页的属性是在这里管理 session与请求有关的会话期 applicationservlet正在执行的内容 out用来传送回应的输出 configservlet的构架部件 pageJSP网页本身 exception针对错误网页,未捕捉的例外 9两种跳转方式分别是什么? 有什么区别? 答: 有两种,分别为: includepage="included.jsp"flush="true"> forwardpage="nextpage.jsp"/> I0前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。 执行完后还会回来,相当于函数调用。 并且可以带参数.后者完全转向新页面,不会 再回来。 相当于goto语句。 10描述一下Jsp中Taglib的用法 答: 一、第一种方法: 仅声明TLD位置 在jsp文件头部,声明: <%@tagliburi=”/WEB-INF/tlds/orataglib_1_0.tld”prefix=”ora”%> 二、第二种方法: 定义库名称 在jsp文件头部,声明: <%@tagliburi=”/orataglib”prefix=”ora”%> 在WEB.XML添加如下声明: taglib> 在tld里加上: 11Javascript中如何校对数字型, 答: 12EJB2.0中包括那些内容,作用分别是什么, 答: 规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。 这里面,EJB容器是EJB之所以能够运行的核心。 EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。 JSP,Servlet,EJB,JNDI,JDBC,JMS..... 13一个SessionBean包含哪几个组件,各个组件作用是什么, 答: SessionBean包含: StatefulSessionBean与StatelessSessionBean StatefulSessionBean可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的StatefulSessionBean的实体。 StatelessSessionBean不负责记录使用者状态,也就是说当使用者呼叫StatelessSessionBean的时候,EJBContainer并不会找寻特定的StatelessSessionBean的实体来执行这个method。 换言之,很可能数个使用者在执行某个StatelessSessionBean的methods时,会是同一个Bean的Instance在执行。 , 14列举一下你所知道的设计模式(包括EJB,J2EE的设计模式),以及它们应用的场合, 答: Factory(工厂模式),FactoryMethod(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Adapter(适配器模式),Decorator(装饰模式), Flyweight(享元模式),Proxy(代理模式), Command(命令模式),Interpreter(解释器模式), Visitor(访问者模式),Iterator(迭代子模式), Observer(观察者模式),State(状态模式), 主要用到了MVC的设计模式。 用来开发JSP/Servlet或者J2EE的相关应用。 15解析XML主要方法有哪些? 各有什么区别, 答: 有DOM,SAX,STAX等 DOM: 处理大型文件时其性能下降的非常厉害。 这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX: 不现于DOM,SAX是事件驱动型的XML解析方式。 它顺序读取XML文件,不需要一次全部装载整个文件。 当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 STAX: StreamingAPIforXML(StAX) 16Hashtable的原理,并说出HashMap与Hashtable的区别Vector和ArrayList有什么区别? 答: HashTable的原理: 通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址. 就ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长: 当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一.历史原因: Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现 二.同步性: Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值: 只有HashMap可以让你将空值作为一个表的条目的key或value 17JAVASERVLETAPI中forward()与redirect()的区别, 答: 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。 这样,从浏览器的地址栏中可以看到跳转后的链接地址。 所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。 在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。 18什么是Web容器? 答: 实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括: 并发性,安全性,生命周期管理等等. 19EJB是基于哪些技术实现的,并说出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的优势却在于他可以维持使用者的状态. 20什么是WebService? 答: WebService就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 WebService所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以WebService可以在任何支持这些标准的环境(Windows,Linux)中使用。 注: SOAP协议(SimpleObjectAccessProtocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。 在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。 它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。 优势: (1).跨平台。 (2).SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。 (3).由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。 (4).此外,WebService实现的技术难度要比CORBA和DCOM小得多。 (5).要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实 现,小公司也可以用上。 (6).在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。 缺点: (1).WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。 (2).WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA。 21多线程有几种实现方法,都是什么? 同步有几种实现方法,都是什么? 答: 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 22Java编程,打印昨天的当前时刻(机试) 23struts的工作流程, 答: 在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。 每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。 24MVC的工作原理, 答: 控制: 有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。 ActionServlet是一个通用的控制组件。 这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。 它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。 另外控制组件也负责用相应的请求参数填充ActionFrom(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。 动作类实现核心商业逻辑,它可以访问javabean或调用EJB。 最后动作类把控制权传给后续的JSP文件,后者生成视图。 所有这些控制逻辑利用Struts-config.xml文件来配置。 视图: 主要由JSP生成页面完成视图,Struts提供丰富的JSP标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。 模型: 模型以一个或多个javabean的形式存在。 这些bean分为三类: ActionForm、Action、JavaBeanorEJB。 ActionForm通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。 Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用JavaBean或EJB等。 流程: 在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求 均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面试 java 程序员 经常 问题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)