![点击分享此内容可以赚币 分享](/master/images/share_but.png)
Java面试题(更新中).pdf
《Java面试题(更新中).pdf》由会员分享,可在线阅读,更多相关《Java面试题(更新中).pdf(19页珍藏版)》请在咨信网上搜索。
1、 1/19 面试题面试题 目录目录 1、怎么解释面向对象?.1 2、JSP 中动态 include 和静态 include 有什么区别?.3 3、Struts 的入口类?如何实现防止表单重复提交?.3 4、Spring 的 IOC 的三种实现机制?.4 5、Oracle 中专有函数?.4 6、在项目中为什么要使用 Spring?有哪些作用?Spring 有哪些特性?.5 7、Hibernate 与 JDBC 的本质区别?.5 8、为什么要使用 Struts2?如果不使用 Struts2,有什么其他方法实现相同的功能?.5 9、在 Web 开发中,application 的生命周期是怎样的?如何
2、定义 application?.6 10、Servlet/JSP 中,使用的哪些系统的预定义的对象?简要说明其作用和用法!.6 11、请书写一个公有静态函数实现两个 int 类型变量的值的互换。.7 12、package 的概念和用途.8 13、static 的用法,可以修饰哪些东西?加 static 修饰和不加 static 修饰有什么区别?.8 14、接口与抽象类的区别?什么是方法覆盖?方法覆盖与方法重载的区别?.9 15、Write code to remove duplicates from an unsorted linked list.10 16、throws 与 throw 的区
3、别:.10 17、简单介绍下 AOP 和 IOC.10 18、关于浏览器兼容问题.11 19、请阐述 html 语言和 xml 语言的区别.12 20、请简述 mvc 架构。同时说明在自己熟悉的架构中 mvc 分别对应什么?.13 21、请用尽可能多的方法简述如何实现以下效果.13 22、请描述 Web 应用程序中 Session 的概念,.14 23、请介绍自己在 WEB 开发中用到的各种技术、架构、第三方空间,.14 24、java 冒泡算法.14 25、java 数组颠倒算法.15 26、写个自定义异常并捕获.16 27、设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程每
4、次 j 减少 1.16 28、简述 Servlet 的 service(),doGet(),doPost()方法的区别.17 29、请说明 Oracle 数据库有哪些主要的数据类型,举例说明.17 30、请列举出你所知道的 Oracle 系统表的名字和功能.17 31、请讲解你所理解的 Oracle 索引的机制,包括如何建立如何使用.17 32、请讲述 Oracle 中事务的概念.17 33、那么请列举并简要说明你知道 Oracle 相关知识.17 34、在项目中碰到的异常:.18 1、怎么解释面向对象、怎么解释面向对象?(1)、面向对象是当今主流的一种程序设计理念和设计规范,它取代了早期的结
5、构化过程设计开发技术,主张一切皆为对象,程序以人的思维模式去解决问题。面向对像的程序是由类组成的,每个类包含对用户公开的特定功能部分和隐藏的实现部分。传统的结构化程序设计通过设计一系列的过程(即算法)来求解 2/19 问题。这一些过程一旦被确定,就要开始考考虑存储数据的方式,这就明确的表述了程序员的工作方式。但面相对像却调换了这个顺序,它不必关心数据对象的具体实现,只要能满足用户的需求即可。面向对象有三个最基本的特性,即:封装,继承,多态。面向对象有三个最基本的特性,即:封装,继承,多态。(1)封装(Encapsulation):使用方法把类的数据隐藏起来,遵循了 java 一切皆为对象的基本
6、概念和核心思想,达成对类的封装,让普通类型上升为对象级;封装控制用户对类的修改和访问数据的程度,增强了程序的可维护性。(2)继承(Implementation):发生在类和类之间,可分为单继承和多层继承描述父子对象之间的血缘关系,最终达到的目的是:一旦使用了继承,子类便获得了父类所有的成员(变量和方法),但是父类的私有的方法和属性不能被访问,父类的 final 成员不能被重写。一旦使用了继承,父类的实例能指向派生类(子类)的引用。(3)多态(Multipart):对象在运行期和编译期具有的两种状态,使代码具有灵活性和重用性。编译时多态,也就是函数重载,所谓函数重载就是指同一个函数名可以对应多个
7、函数的实现具体调用哪个按照由参数个数,参数类型等来决定。运行时多态:用一个基类的指针或引用来操纵多个派生类型的能力被称为多态性。怎么理解怎么理解面向对象和面向过程到底的本质区别?面向对象和面向过程到底的本质区别?(1)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。(2)面向过程的思维方式是分析综合。面向对象的思维方式是构造。就是对 C 语言过程式解决问题时。一般是将现有的数据结构先定义出来。然后想办法构造出
8、算法了。而用 C+这样的面向对象求解时,先是将对象抽出来。构造成一个仿真的环境,然后在这个环境里,把与最终要解决的问题间建立一个方法。所以面向过程的程序设计有挑战性,技巧性强。而面向对象主要在于对象抽象有技术性,抽象完了后,任何人都可以做后面的工作了。(3)面向对象和面向过程的主要区别就是数据是单独存储还是与操作存储在一起。对面向过程而言,数据是独立的。而在面向对象中,对象本身就提供了存储数据的空间(类的数据成员),这样就是函数的参数传递简单多了,而且提供了数据封装后,数据的访问也变可靠了。(4)面向过程就是将编程当成是做一件事,要按步骤完成,每一步就是一个过程。比如作菜,先放油,接着是放菜进
9、去炒,然后放水,最后菜就做好了。这里面放油,炒,放水就是三个步骤。面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。而编程就是设置事物能够做什么事。其实有点像是将面向过程给放到事物内部了。仍然举作菜为例,其实面向过程就好像你是个厨师,要自己炒菜,所以要讲究步骤,而面向对象就好像你是个食客;(5)两句话:面向对象是将实物高度抽象化;面向过程是一种自顶向下的编程;3/19 而面向对象是自下先建立抽象模型然后再使用模型。2、JSP 中动态中动态 include 和静态和静态 include 有什么区别有什么区别?动态 INCLUDE 在使用的时候,会先解析所要包含
10、的页面(你例子中的included.jsp),解 析 后 在 和 主 页 面 放 到 一 起 显 示;静态 INCLUDE 在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的 included.htm 中有什么,我的任务就是把你包含并显示,其他的一概不管;jsp:include 是先编译一下 included.jsp 文件,然后再包含 先编译,后包含 include 是先把文件包含就来,然后统一编译 先包含,后编译 3、Struts 的入口类?如何实现防止表单重复提交?的入口类?如何实现防止表单重复提交?(1)入口类:StrutsPrepareAnd
11、ExecuteFilter,前端控制器;造成重复提交主要的两个原因:在平时的开发过程中,经常可以遇到表单重复提交的问题,如做一个注册页面,如果表单重复提交,那么一个用户就会注册多次,重复提交主要由于两种原因。一是服务器处理时间久。当用户在表单中填完信息,点击“提交”按钮后,由于服务器反应时间过长没能及时看到响应信息,或者出于其它目的,再次点击“提 交”按钮,从而导致在服务器端接收到两条或多条相同的信息。如果信息需要存储到后台数据库中,如此以来就会产生数据库操作异常提示信息,以至于给用户带来 错误信息提示,从而给用户的使用带来不便。二是,forward 跳转引起的重复提交。在页面跳转的时候,有两
12、种类型:请求转发和重定向,所谓请求转发是在服务器端进行跳转,对用户是透明的,此时浏览器中的地址不会发生改变,重定向是在客户端发生跳转,跳转时候浏览器中的地址栏会发生改变,如果我们在注册时,使用了请求转发,那么当我们刷新页面时,就会引起表单的重复提交 解决方案 方案一、使用方案一、使用 struts2struts2 中的中的 tokentoken 拦截器或者拦截器或者 tokenSessiontokenSession 拦截器拦截器 对 token 的简单理解:1)当用户首次访问包含表单的页面时,服务器会在这次会话中创建一个session 对象,并产生一个令牌值,然后将这个令牌值作为隐藏输入域的值
13、,随表单一起发送到服务器端,同时将令牌值保存到 Session 中。2)当用户提交页面时,服务器首先判断请求参数中的令牌值和 Session 中保存的令牌值是否相等,若相等,则清楚 Session 中的令牌值,然后执行数据处 理操作。如果不相等,则提示用户已经提交过了表单,同时产生一个新的令牌值,保存到 Session 中。当用户重新访问提交数据页面时,将新产生的令牌值作 为隐藏输入域的值。token:在活动 Action 中检查合法令牌(token),防止表单的重复提交;token-session:同上,但是在接到非法令牌时将提交的数据保存在 session 中;主要步骤如下:第一步:在表单
14、中加入(当然啦!要首先导入 struts2 的标签库)4/19 第二步:在 struts.xml 配置文件中相应的 action 上配置 token 拦截器或者tokenSession 拦截器。此拦截器只能用在有 form 的提交请求上。/WEB-INF/page/message.jsp /WEB-INF/page/result.jsp 以上配置加入了“token”拦截器和“invalid.token”结果,因为“token”拦截器在会话的 token 与请求的 token 不一致时,会直接返回“invalid.token”结果。方案二:基于第二种重复提交表单的原因,服务器内部使用重定向方案二
15、:基于第二种重复提交表单的原因,服务器内部使用重定向 在 Struts2 中的 struts.xml 中,result 标签的 type 默认值是 dispatcher,(请求转发),要实现以上的功能,定不能使用默认值,我们需要将其值设为redirectAction(重定向到某一 Action),也就是说重一个 Action 跳转到另外一个Action,此时浏览器中的地址是第二个 Action,结合到上面的需求,我们可以再第一个 Action中将记录添加到数据库中,然后在第二个Action中将数据读取出来。以后每次刷新,那么只会执行第二个 Action。到 struts-default.xml
16、 中找到与redirectionAction 对应的一个类,ServletActionRedirectResult 从 Api 文档中发现找出里面有一个字段叫做 actionName,指定我们需要跳转的Action 配置方法如下:show_show 4、Spring 的的 IOC 的三种实现机制?的三种实现机制?IoC,直观地讲,就是容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在。IoC 还有另外一个名字“依赖注入(Dependency Injection)”IoC 的 3 种依赖注入类型如下(1)是通过接口注射,这种方式要求我们的类必须实现容器
17、给定的一个接口,然后容器会利用这个接口给我们这个类注射它所依赖的类。(2)是通过 setter 方法注射,这种方式也是 Spring 推荐的方式。(3)是通过构造方法注射类,这种方式 Spring 同样给予了实现,它和通过 setter方式一样,都在类里无任何侵入性,但是,不是没有侵入性,只是把侵入性转移了,显然第 1 种方式要求实现特定的接口,侵入性非常强,不方便以后移植。5、Oracle 中专有函数中专有函数?(1)to_date to_char (2)空值函数:nvl(arg1,arg2):arg1 和 arg2 所对应的数据类型必须一致;如果 arg1 为 null,返回 arg2;如
18、果 arg1 不为 null,返回 arg1;5/19 nvl2(arg1,arg2,arg3):三个参数类型必须一致;如果 arg1 为 null,返回 arg3;如果 arg1 不为 null,返回 arg2;(3)decode:decode(value1 if1 then1 if2 then2.else)value 表达式或函数 如果 value=if1,返回 then1 的值;否则如果 value=if2,返回 then2 的值;.默认的返回值是 else 6、在项目中为什么要使用、在项目中为什么要使用 Spring?有哪些作用?有哪些作用?Spring有哪些特性?有哪些特性?(1)S
19、pring 是基于 j2ee 的框架,通过 Spring 提供的 IoC 容器,我们可以将对象之间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度程序耦合。有了 Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。(2)替代了 bean 工厂,直接使用 spring 容器来对对象创建的控制,是否是单例等;(3)AOP(面向切面),它将那些影响多个类的行为封装到可重用的模块中,面向对象是把问题从同类事物中抽象出来,面向切面是把问题从不同类问题中抽象出来;将事务等共通功能以低耦合方式作用到原功能组件上 SpringSpring 有哪
20、些特性:有哪些特性:7、Hibernate 与与 JDBC 的本质区别?的本质区别?在项目中为什么要用在项目中为什么要用 HibernateHibernate,用,用 Struts2Struts2 和和 JDBCJDBC 同样能很好的实现相应的功能?同样能很好的实现相应的功能?(1)hibernate 属于 orm 框架(O 对象,r 关系,m 映射,对象到关系的映射)中的一种,是完全面向对象的;java 是面向对象的编程语言,而 java 操作的数据库,是关系型的;hibernate 底层封装的就是 jdbc,对于使用 hibernate 来说是完全面向对象的;(2)JDBC 操作的是数据,
21、将数据通过 SQL 语句直接传送到数据库中执行;Hibernate 操作的是持久化对象,由底层持久化对象的数据更新到数据库中。(3)JDBC 操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而 Hibernate 操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。为什么要用 Hibernate?(1)对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码;(2)Hibernate 是 ORM 框架,可以自动完成对象与关系型数据库之间的转换;(3)hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。(4)
22、hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。(5)程序的可扩展性更好,Hibernate 能兼容多种数据库,如果更换数据库可省去 SQL 兼容问题;Hibernate 存在的问题:性能太差,底层封装的是 jdbc,通过 hibernate 在底层再调用 jdbc。如果开发的项目需要处理大量的数据,建议不要使用 hibernate,直接使用 jdbc 处理 8、为什么要使用为什么要使用 Struts2?如果不使用?如果不使用 Struts2,有什么其他方法实现,有什么其他方法实现相同的功能相同的功能?(1)St
23、ruts2 是基于 MVC 的轻量级框架,主要用于解决请求分发的问题,重点在于控制层、表现层;MVC 结构是一个优秀的设计思想,可以提高程序结构的灵活 6/19 性,便于日后的维护和扩展。(2)在 jsp 中用 HTML 和 Java 代码混用的方式开发,把表现与业务逻辑代码混合在一起,给前期开发与后期维护带来巨大的复杂度,使用 struts2 能够把业务逻辑代码从表现层中清晰的分离出来;(3)struts2将请求拆开,对应不同的Action,使用Struts提供的Fileter 处理请求,提供了 API 对请求参数进行解析;通过 Servlet 与 JSP 能实现相应的功能;9、在、在 We
24、b 开发中,开发中,application 的生命周期是怎样的?如何定义的生命周期是怎样的?如何定义application?(1)application 对象的生命周期:从 Web 服务器启动,直到 Web 服务器关闭。注意:一个 Web 应用程序启动后,将会自动创建一个 application 对象,而且在整个应用程序的运行过程中只有一个 application 对象,也即所有访问该网站的客户都共享一个 application 对象;(2)application 对象的作用范围:application 对象是一个应用程序级的对象,它作用于当前 Web 应用程序,也即作用于当前网站,所有访问当
25、前网站的客户都共享一个 application 对象;(3)application 对象的基类是:javax.servlet.ServletContext 类。注意:有些 Web 服务器不直接支持使用 application 对象,必须用 ServletContext类来声明 application 对象,再调用 getServletContext()方法来获取当前页面的application 对象;(4)ServletContext 类:用于表示应用程序的上下文。一个 ServletContext 类的对象表示一个 Web 应用程序的上下文。具体来说:在 Web 服务器中,提供了一个 Web
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 试题 更新
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。