Java面试题(更新中).pdf
《Java面试题(更新中).pdf》由会员分享,可在线阅读,更多相关《Java面试题(更新中).pdf(19页珍藏版)》请在咨信网上搜索。
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 的生命周期是怎样的?如何定义 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 的区别:.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,另外两个线程每次 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)、面向对象是当今主流的一种程序设计理念和设计规范,它取代了早期的结构化过程设计开发技术,主张一切皆为对象,程序以人的思维模式去解决问题。面向对像的程序是由类组成的,每个类包含对用户公开的特定功能部分和隐藏的实现部分。传统的结构化程序设计通过设计一系列的过程(即算法)来求解 2/19 问题。这一些过程一旦被确定,就要开始考考虑存储数据的方式,这就明确的表述了程序员的工作方式。但面相对像却调换了这个顺序,它不必关心数据对象的具体实现,只要能满足用户的需求即可。面向对象有三个最基本的特性,即:封装,继承,多态。面向对象有三个最基本的特性,即:封装,继承,多态。(1)封装(Encapsulation):使用方法把类的数据隐藏起来,遵循了 java 一切皆为对象的基本概念和核心思想,达成对类的封装,让普通类型上升为对象级;封装控制用户对类的修改和访问数据的程度,增强了程序的可维护性。(2)继承(Implementation):发生在类和类之间,可分为单继承和多层继承描述父子对象之间的血缘关系,最终达到的目的是:一旦使用了继承,子类便获得了父类所有的成员(变量和方法),但是父类的私有的方法和属性不能被访问,父类的 final 成员不能被重写。一旦使用了继承,父类的实例能指向派生类(子类)的引用。(3)多态(Multipart):对象在运行期和编译期具有的两种状态,使代码具有灵活性和重用性。编译时多态,也就是函数重载,所谓函数重载就是指同一个函数名可以对应多个函数的实现具体调用哪个按照由参数个数,参数类型等来决定。运行时多态:用一个基类的指针或引用来操纵多个派生类型的能力被称为多态性。怎么理解怎么理解面向对象和面向过程到底的本质区别?面向对象和面向过程到底的本质区别?(1)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。(2)面向过程的思维方式是分析综合。面向对象的思维方式是构造。就是对 C 语言过程式解决问题时。一般是将现有的数据结构先定义出来。然后想办法构造出算法了。而用 C+这样的面向对象求解时,先是将对象抽出来。构造成一个仿真的环境,然后在这个环境里,把与最终要解决的问题间建立一个方法。所以面向过程的程序设计有挑战性,技巧性强。而面向对象主要在于对象抽象有技术性,抽象完了后,任何人都可以做后面的工作了。(3)面向对象和面向过程的主要区别就是数据是单独存储还是与操作存储在一起。对面向过程而言,数据是独立的。而在面向对象中,对象本身就提供了存储数据的空间(类的数据成员),这样就是函数的参数传递简单多了,而且提供了数据封装后,数据的访问也变可靠了。(4)面向过程就是将编程当成是做一件事,要按步骤完成,每一步就是一个过程。比如作菜,先放油,接着是放菜进去炒,然后放水,最后菜就做好了。这里面放油,炒,放水就是三个步骤。面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。而编程就是设置事物能够做什么事。其实有点像是将面向过程给放到事物内部了。仍然举作菜为例,其实面向过程就好像你是个厨师,要自己炒菜,所以要讲究步骤,而面向对象就好像你是个食客;(5)两句话:面向对象是将实物高度抽象化;面向过程是一种自顶向下的编程;3/19 而面向对象是自下先建立抽象模型然后再使用模型。2、JSP 中动态中动态 include 和静态和静态 include 有什么区别有什么区别?动态 INCLUDE 在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解 析 后 在 和 主 页 面 放 到 一 起 显 示;静态 INCLUDE 在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的 included.htm 中有什么,我的任务就是把你包含并显示,其他的一概不管;jsp:include 是先编译一下 included.jsp 文件,然后再包含 先编译,后包含 include 是先把文件包含就来,然后统一编译 先包含,后编译 3、Struts 的入口类?如何实现防止表单重复提交?的入口类?如何实现防止表单重复提交?(1)入口类:StrutsPrepareAndExecuteFilter,前端控制器;造成重复提交主要的两个原因:在平时的开发过程中,经常可以遇到表单重复提交的问题,如做一个注册页面,如果表单重复提交,那么一个用户就会注册多次,重复提交主要由于两种原因。一是服务器处理时间久。当用户在表单中填完信息,点击“提交”按钮后,由于服务器反应时间过长没能及时看到响应信息,或者出于其它目的,再次点击“提 交”按钮,从而导致在服务器端接收到两条或多条相同的信息。如果信息需要存储到后台数据库中,如此以来就会产生数据库操作异常提示信息,以至于给用户带来 错误信息提示,从而给用户的使用带来不便。二是,forward 跳转引起的重复提交。在页面跳转的时候,有两种类型:请求转发和重定向,所谓请求转发是在服务器端进行跳转,对用户是透明的,此时浏览器中的地址不会发生改变,重定向是在客户端发生跳转,跳转时候浏览器中的地址栏会发生改变,如果我们在注册时,使用了请求转发,那么当我们刷新页面时,就会引起表单的重复提交 解决方案 方案一、使用方案一、使用 struts2struts2 中的中的 tokentoken 拦截器或者拦截器或者 tokenSessiontokenSession 拦截器拦截器 对 token 的简单理解:1)当用户首次访问包含表单的页面时,服务器会在这次会话中创建一个session 对象,并产生一个令牌值,然后将这个令牌值作为隐藏输入域的值,随表单一起发送到服务器端,同时将令牌值保存到 Session 中。2)当用户提交页面时,服务器首先判断请求参数中的令牌值和 Session 中保存的令牌值是否相等,若相等,则清楚 Session 中的令牌值,然后执行数据处 理操作。如果不相等,则提示用户已经提交过了表单,同时产生一个新的令牌值,保存到 Session 中。当用户重新访问提交数据页面时,将新产生的令牌值作 为隐藏输入域的值。token:在活动 Action 中检查合法令牌(token),防止表单的重复提交;token-session:同上,但是在接到非法令牌时将提交的数据保存在 session 中;主要步骤如下:第一步:在表单中加入(当然啦!要首先导入 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”结果。方案二:基于第二种重复提交表单的原因,服务器内部使用重定向方案二:基于第二种重复提交表单的原因,服务器内部使用重定向 在 Struts2 中的 struts.xml 中,result 标签的 type 默认值是 dispatcher,(请求转发),要实现以上的功能,定不能使用默认值,我们需要将其值设为redirectAction(重定向到某一 Action),也就是说重一个 Action 跳转到另外一个Action,此时浏览器中的地址是第二个 Action,结合到上面的需求,我们可以再第一个 Action中将记录添加到数据库中,然后在第二个Action中将数据读取出来。以后每次刷新,那么只会执行第二个 Action。到 struts-default.xml 中找到与redirectionAction 对应的一个类,ServletActionRedirectResult 从 Api 文档中发现找出里面有一个字段叫做 actionName,指定我们需要跳转的Action 配置方法如下:show_show 4、Spring 的的 IOC 的三种实现机制?的三种实现机制?IoC,直观地讲,就是容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在。IoC 还有另外一个名字“依赖注入(Dependency Injection)”IoC 的 3 种依赖注入类型如下(1)是通过接口注射,这种方式要求我们的类必须实现容器给定的一个接口,然后容器会利用这个接口给我们这个类注射它所依赖的类。(2)是通过 setter 方法注射,这种方式也是 Spring 推荐的方式。(3)是通过构造方法注射类,这种方式 Spring 同样给予了实现,它和通过 setter方式一样,都在类里无任何侵入性,但是,不是没有侵入性,只是把侵入性转移了,显然第 1 种方式要求实现特定的接口,侵入性非常强,不方便以后移植。5、Oracle 中专有函数中专有函数?(1)to_date to_char (2)空值函数:nvl(arg1,arg2):arg1 和 arg2 所对应的数据类型必须一致;如果 arg1 为 null,返回 arg2;如果 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)Spring 是基于 j2ee 的框架,通过 Spring 提供的 IoC 容器,我们可以将对象之间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度程序耦合。有了 Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。(2)替代了 bean 工厂,直接使用 spring 容器来对对象创建的控制,是否是单例等;(3)AOP(面向切面),它将那些影响多个类的行为封装到可重用的模块中,面向对象是把问题从同类事物中抽象出来,面向切面是把问题从不同类问题中抽象出来;将事务等共通功能以低耦合方式作用到原功能组件上 SpringSpring 有哪些特性:有哪些特性:7、Hibernate 与与 JDBC 的本质区别?的本质区别?在项目中为什么要用在项目中为什么要用 HibernateHibernate,用,用 Struts2Struts2 和和 JDBCJDBC 同样能很好的实现相应的功能?同样能很好的实现相应的功能?(1)hibernate 属于 orm 框架(O 对象,r 关系,m 映射,对象到关系的映射)中的一种,是完全面向对象的;java 是面向对象的编程语言,而 java 操作的数据库,是关系型的;hibernate 底层封装的就是 jdbc,对于使用 hibernate 来说是完全面向对象的;(2)JDBC 操作的是数据,将数据通过 SQL 语句直接传送到数据库中执行;Hibernate 操作的是持久化对象,由底层持久化对象的数据更新到数据库中。(3)JDBC 操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而 Hibernate 操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。为什么要用 Hibernate?(1)对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码;(2)Hibernate 是 ORM 框架,可以自动完成对象与关系型数据库之间的转换;(3)hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。(4)hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。(5)程序的可扩展性更好,Hibernate 能兼容多种数据库,如果更换数据库可省去 SQL 兼容问题;Hibernate 存在的问题:性能太差,底层封装的是 jdbc,通过 hibernate 在底层再调用 jdbc。如果开发的项目需要处理大量的数据,建议不要使用 hibernate,直接使用 jdbc 处理 8、为什么要使用为什么要使用 Struts2?如果不使用?如果不使用 Struts2,有什么其他方法实现,有什么其他方法实现相同的功能相同的功能?(1)Struts2 是基于 MVC 的轻量级框架,主要用于解决请求分发的问题,重点在于控制层、表现层;MVC 结构是一个优秀的设计思想,可以提高程序结构的灵活 6/19 性,便于日后的维护和扩展。(2)在 jsp 中用 HTML 和 Java 代码混用的方式开发,把表现与业务逻辑代码混合在一起,给前期开发与后期维护带来巨大的复杂度,使用 struts2 能够把业务逻辑代码从表现层中清晰的分离出来;(3)struts2将请求拆开,对应不同的Action,使用Struts提供的Fileter 处理请求,提供了 API 对请求参数进行解析;通过 Servlet 与 JSP 能实现相应的功能;9、在、在 Web 开发中,开发中,application 的生命周期是怎样的?如何定义的生命周期是怎样的?如何定义application?(1)application 对象的生命周期:从 Web 服务器启动,直到 Web 服务器关闭。注意:一个 Web 应用程序启动后,将会自动创建一个 application 对象,而且在整个应用程序的运行过程中只有一个 application 对象,也即所有访问该网站的客户都共享一个 application 对象;(2)application 对象的作用范围:application 对象是一个应用程序级的对象,它作用于当前 Web 应用程序,也即作用于当前网站,所有访问当前网站的客户都共享一个 application 对象;(3)application 对象的基类是:javax.servlet.ServletContext 类。注意:有些 Web 服务器不直接支持使用 application 对象,必须用 ServletContext类来声明 application 对象,再调用 getServletContext()方法来获取当前页面的application 对象;(4)ServletContext 类:用于表示应用程序的上下文。一个 ServletContext 类的对象表示一个 Web 应用程序的上下文。具体来说:在 Web 服务器中,提供了一个 Web 应用程序的运行时环境,专门负责 Web 应用程序的部署、编译、运行以及生命周期的管理,通过 ServletContext类,可以获取 Web 应用程序的运行时环境信息;(5)当 Web 服务器启动时,Web 服务器会自动创建一个 application 对象。application 对象一旦创建,它将一直存在,直到 Web 服务器关闭。一个 Web 服务器通常有多个 Web 服务目录(网站),当 Web 服务器启动时,它自动为每个 Web 服务目录都创建一个 application 对象,这些 application 对象各自独立,而且和 Web 服务目录一一对应(6)从服务器启动开始,web 服务被加载后,application 对象就被初始化了,而且在服务器运行的整个过程中,application 对象始终存在,在整个 web 服务中,只存在一个 application 对象。所以说,所用的用户,在网站运行自始至终,公用同一个 application 对象。Application 对象的这个特点,使它可以用来存储一些全局的静态变量,静态数据等,用来给整个 web 服务用。比如网站的数据库连接的连接串,网站操作出错的错误信息,网站的一些基本的配置信息等。将一个对象存储在 application 对象中,这个变两就拥有了和 application 相同的生命周期,存储方式 application.setAttribute(String name,Object value);10、Servlet/JSP 中,使用的哪些系统的预定义的对象?简要说明其作中,使用的哪些系统的预定义的对象?简要说明其作用和用法!用和用法!request,response,out,session,application,config,pageContext,page,exception。(1)request 对象:客户端的请求信息被封装在 request 对象中,通过它才能了 7/19 解到客户的需求,然后做出响应。它是 HttpServletRequest 类的实例。(2)response 对象:response 对象包含了响应客户请求的有关信息,但在 JSP中很少直接用到它。它是 HttpServletResponse 类的实例。(3)session 对象:指的是客户端与服务器的一次会话,从客户连到服务器的一个 WebApplication 开始,直到客户端与服务器断开连接为止。它是 HttpSession 类的实例;(4)out 对象:是 JspWriter 类的实例,是向客户端输出内容常用的对象(5)page 对象:就是指向当前 JSP 页面本身,有点象类中的 this 指针,它是java.lang.Object 类的实例;(6)application 对象:实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了 application 对象的生命。它是 ServletContext 类的实例。(7)exception 对象:是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对象。如果一个 JSP 页面要应用此对象,就必须把 isErrorPage 设为true,否则无法编译。他实际上是 java.lang.Throwable 的对象;(8)pageContext 对象:提供了对 JSP 页面内所有的对象及名字空间的访问,也就是可以访问到本页所在的 session,也可以取本页面所在的 application 的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫 pageContext;(9)config 对象:config 对象是在一个 Servlet 初始化时,JSP 引擎向它传递信息用的,此信息包括 Servlet 初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个 ServletContext 对象)11、请书写一个公有静态函数实现两个请书写一个公有静态函数实现两个 int 类型变量的值的互换。类型变量的值的互换。请书写一个公有静态函数实现两个请书写一个公有静态函数实现两个IntegerInteger 类型变量的值互换。请用符合类型变量的值互换。请用符合 javadocjavadoc风格的注释对函数进行说明(函数的用法,传入参数列表、返回值含义)。风格的注释对函数进行说明(函数的用法,传入参数列表、返回值含义)。/*param a *param b *swap 方法需要传入 int 型数组 a 和 b 作为参数,*方法用于交换数组 a 和数组 b 的第一个值 a0和 b0,达到 *int 型变量值 a0和 b0的互换的目的 */public static void swap(int a,int b)a0=b0;b0=a0;a0=b0;/*以自定义类 Swap 对象为参数,Swap 类封装了两个 Integer*类型成员变量 a 和 b,*在 swap 方法中将两个成员变量的值交换,*即可实现 Integer 类型变量值的交换 8/19 *param s */public static void swap(Swap s)Integer temp=s.a;s.a=s.b;s.b=temp;JavaJava 中参数的传递中参数的传递:javajava 中没有引用传递,只有值传递中没有引用传递,只有值传递 基本数据类型直接把数据复制一份,非基本数据类型把它的引用复制一份(其实就是内存地址),相当于多个引用指向同一个对像,调用其中任何一个引用改变这个对象,其他多个引用也随之改变,但当其中一个引用指向别的对象时,原来的引用不发生改变 12、package 的概念和用途的概念和用途(1)包的概念:包(package)是 Java 提供的一种区别类的名字空间的机制,是类的组织方式,是一组相关类和接口的集合,它提供了访问权限和命名的管理机制。(2)Java 中包的用途:将功能相近的类放在同一个包中,可以方便查找与使用。由于在不同包中可以存在同名类,使用包在一定程度上可以避免命名冲突。在 Java 中,某次访问权限是以包为单位的。(3)创建包 创建包可以通过在类或接口的源文件中使用 package 语句实现,package 语句的语法格式如下:package 包名;包名:必选,用于指定包的名称,包的名称为合法的 Java 标识符。13、static 的用法,可以修饰哪些东西?加的用法,可以修饰哪些东西?加 static 修饰和不加修饰和不加 static修饰有什么区别?修饰有什么区别?(1)static 表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态 static 代码块被;static 修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享,只要这个类被加载,Java 虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static 对象可以在它的任何对象创建之前访问,无需引用任何对象;(2)static 变量:被 static 修饰的变量,叫静态变量或类变量;另一种是没有被static 修饰的变量,叫实例变量。两者的区别是两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM 只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。所以一般在需要实现以下两个功能时使用静态变量:在对象之间共享值时;方便访问变量时(3)静态方法:态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用 this 和 super 关键字,不能直接访问所属类的实例变量和实例方法(就是不带 static 的成员变量和成员成员方法),只能访问所属类的静态 9/19 成员变量和成员方法;静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,一个类内部的方法一般都是非静态的;(4)static 代码块:也叫静态代码块,是在类中独立于类成员的 static 语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM 加载类时会执行这些静态的代码块,如果 static 代码块有多个,JVM 将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。(5)static 一般不用于修饰类,只能用于修饰内部类,修饰内部类时,这个内部类可以直接作为一个普通的类来使用,而不需实例一个外部类。(6)static 和 final 一块用表示什么:static final 用来修饰成员变量和成员方法,可简单理解为“全局常量”!对于变量,表示一旦给值就不可修改,并且通过类名可以访问。对于方法,表示不可覆盖,并且可以通过类名直接访问。实例变量实例变量、静态变量(类变量)、局部变量、静态变量(类变量)、局部变量比较比较 (1)实例变量:在类中定义未加 static 修饰的变量;实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量;每创建一个实例,JVM 就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期;(2)静态变量:也叫类变量,使用 static 修饰的变量;静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,JVM 就会为其在方法区中分配空间,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期;(3)局部变量:方法中的变量;(4)成员变量(即:实例变量,静态变量)都有缺省值为 0,即定义一个成员变量无需初始化即可直接使用,而局部变量(除形参)都必须初始化之后才能使用,否则程序报错;14、接口与抽象类的区别?、接口与抽象类的区别?什么是方法覆盖什么是方法覆盖?方法覆盖与方法重载的方法覆盖与方法重载的区别区别?接口与抽象类的区别?接口与抽象类的区别?(1)抽象类在 Java 中表示的是一种继承关系,抽象类只能被继承,一个类只能使用一次继承关系。接口可以被继承也可以实现,一个类可以实现多个接口;(2)在抽象类中可以有成员变量,也可以有非抽象方法,抽象方法不能是私有的;而在接口中只能够有常量,不能有属性,所有的成员方法都是抽象的且不能是私有的,不能有方法体;(3)abstract class 和 interface 所反映出的设计理念不同。其实 abstract class 表示的是is-a(表示的继承关系)关系,interface 表示的是like-a关系;(4)继承抽象类或实现接口必须实现其中的所有方法。抽象类中可以有实现方法而接口中则不能有实现方法;(5)抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。(6)抽象类与接口都不能直接实例化;创建一个变量,其类型是一个抽象类或接口,并让它具体指向子类的一个实例 方法覆盖与方法重载的区别方法覆盖与方法重载的区别?(1)方法覆盖:在子类中修改父类的行为,子类中定义了与父类型相同的方法(方 10/19 法名一样、参数一样),重写的方法返回值的类型要么是父类,要么是父类的子类,其访问权限要比父类型高;重写的方法异常也必须一致;不能是 private 方法重载:方法名一样,参数不同,方法功能不一样;方法的异常类型和数目不会对重载造成影响(2)方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系;(3)覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系;(4)覆盖要求参数列表相同;重载要求参数列表不同;(5)覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的;15、Write code to remove duplicates from an unsorted linked list.How would you solve this problem if a temporary buffer is not allowed?How would you solve this problem if a temporary buffer is not allowed?译文:删除链表中的重复元素,另外,如果不使用临时存储空间怎么做?解答:如果空间没有限制,那么用一个 map 来标记链表中出现过的元素,然后从头到尾扫一遍链表,把出现过的删除就行了。时间复杂度 O(n)。如果限制空间,那么可以设置两个指针 n、m,当 n 指向某个元素时,m 把该元素后面与它相同的元素删除,时间复杂度 O(n2)。答案:List.java 16、throws 与与 throw 的区别的区别:throws:用于在声明方法时同时声明方法中可能出现抛出的异常种类;可以抛出多个异常,抛出的异常由调用该方法所在的方法捕获或再一次向上抛出异常;throw:用于抛出一个异常实例,通常情况下,在 throw 的异常,throws 就应该抛出该异常,如果是 RuntimeException,那么就不需要抛出该异常;-什么时候 throw 异常:(1).该异常不应该在当前方法中处理,而应该由调用的方法去处理;(2).遇到不符合业务逻辑的操作时,可把它当作一异常去处理,而主动抛出 17、简单介绍下、简单介绍下 AOP 和和 IOC AOP:面向方面的编程,作为一种新的编程思想是面向对象编程的有力补充,面向对象的编程已经可以解决我们所遇到的大部分问题,但在某些条件下,例如特殊权限的管理,方法的校验等等,面向对象的思想很难提出合理的解决方案.这时采用AOP 的方法,引入一个切面的概念,就能较容易解决了类似的问题.实现 AOP 的方式有很多,例如可以利用 Java 提供的动态代理,可以采用字节码生成的方式;简单的说,AOP 就是在方法调用时,对方法进行拦截,加入适当的操作以完成某种功能.它不仅仅是能提供声明式事务管理的;AOPAOP 相关概念:相关概念:(1)方面:方面封装了共通处理,可以切入到其他目标组件方法上;(2)切入点用于指定哪些组件为目标,利用特殊表达式指定,within(类型);(3)通知:用于指定方面和目标之间的作用时机,包括五种通知类型;前置通知:先执行方面,再执行目标;后置通知:先执行目标,再执行方面(目标方法未抛出异常);11/19 最终通知:先执行目标,再执行方面(不管目标有无异常);环绕通知:先执行方面前半部分,再执行目标,最后执行方面后半部分;异常通知:先执行目标,发生异常后再执行方面;(4)动态代理技术:当目标组件使用了 AOP 切入方面组件后,getBean()方法返回的类型是采用动态代理技术生成的一个新类型,当使用代理对象执行业务方法时,代理对象会调用方面和原目标对象的处理方法,Spring 框架提供了两种实现技术:CGLIB 技术(适用于没有接口的目标组件),JDK Proxy API(适用于有接口的目标组件);IOC:IoC 即 Inversion of Control,控制反转。它不是一种编程技术,而是一种设计模式。利用它,可以促进应用程序组件或类之间的松散耦合;一般的情况下,我们需要自己创建对象的实例,如果使用 IoC,我们则不必再自己创建类的实例,而是将创建对象的任务交给 IoC 容器去做。这样,我们在使用某个对象的时候,就可以直接从容器中获取一个实例;Spring 框架为我们提供了一个优秀的 IoC容器。我们只是需要在它的配置文件中指明我们需要那个类的实例,这个类在那里,Spring 的 IoC 容器会在合适的时候自动的为我们注入这个类的实例 IoC 是一种通用的设计原则,而 DI(Dependency Injection,依赖注入)则是具体的设计模式,它体现了 IoC 的设计原则。DI 是 IoC 典型的实现,所以 IoC与 DI 术语会被混用。IoC 与 DI 的关系就好比 Java 中的接口和接口的实现类的关系一样。在 DI 模式下,容器全权负责的组件的装配,容器以一些预先定义好的方式(例如 setter 方法或构造函数)将匹配的资源注入到每个组件里,DI 注入有三种方式:setter 注入,构造器注入,接口注入;18、关于浏览器兼容问题关于浏览器兼容问题 在用户使用较多的浏览器中,主要分为两大类,一类是 IE 内核 theworld、maxthon、greenbrower 及一些国产浏览器,一类是非 IE 内核的如:firefox、chrome、opera;浏览器兼容存在的问题(FireFox 和 IE 的区别):(1)HTML 对象获取问题 FireFox:document.getElementById(idName);ie:document.idname 或者 document.getElementById(idName).解决办法:统一使用 document.getElementById(idName);(2)event.x 与 event.y 问题 说明:IE 下,event 对象有 x,y 属性,但是没有 pageX,pageY 属性;Firefox 下,event 对象有 pageX,pageY 属性,但是没有 x,y 属性.解决方法:使用 mX(mX=event.x?event.x:event.pageX;)来代替 IE 下的event.x 或者 Firefox 下的 event.pageX.;(3)frame 问题 以下面的 f- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 试题 更新
咨信网温馨提示:
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。
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。
关于本文