J2EE 初学者面试题


J2EE 初学者需要理解的问题 一、J2EE 提出的背景 1、 企业级应用框架的需求 在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如 果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可*性差等问题。于是许多大公司开 发了自己的通用模块服务。这些服务性的软件系列统称为中间件。 2、 为了通用必须要提出规范,不然无法达到通用 在上面的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户 无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于是提出标准的概念。其实 J2EE 就是基于 JAVA 技术的一系列标准。 注:中间件的解释 中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境 与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题 上的能力 。我们后面说到的容器的概念就是中间件的一种。 二、相关名词解释 容器:充当中间件的角色 WEB 容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET 直接更容器中 的环境变量接口交互,不必关注其它系统问题。主要有 WEB 服 务 器 来 实 现 。 例 如 : TOMCAT,WEBLOGIC,WEBSPHERE 等。该容器提供的接口严格遵守 J2EE 规范中的 WEB APPLICATION 标 准。我们把遵守以上标准的 WEB 服务器就叫做 J2EE 中的 WEB 容器。 EJB 容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件 EJB 各种管理功 能。只要满足 J2EE 规范的 EJB 放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接 口来获得系统级别的服务。例如邮件服务、事务管理。 WEB 容器和 EJB 容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB 容器更多的是跟基 于 HTTP 的请求打交道。而 EJB 容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界 的交互实现从而减轻应用程序的负担。例如 SERVLET 不用关心 HTTP 的细节,直接引用环境变量 session,request,response 就行、EJB 不用关心数据库连接速度、各种事务控制,直接由容器来完成。 RMI/IIOP:远程方法调用/internet 对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台 计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要 通过一定的规范才能在异构的系统之间进行通信。RMI 是 JAVA 特有的。 JNDI:JAVA 命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下 自己的索引,从而满足快速查找和定位分布式应用程序的功能。 JMS:JAVA 消息服务。 主要实现各个应用程序之间的通讯。包括点对点和广播。 JAVAMAIL:JAVA 邮件服务。提供邮件的存储、传输功能。他是 JAVA 编程中实现邮件功能的核心。相当 MS 中的 EXCHANGE 开发包。 JTA:JAVA 事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 JAF:JAVA 安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性 安全控制策略。 EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE 技术是一种很好的集成实现。 三、J2EE 的优越性 1、 基于 JAVA 技术,平台无关性表现突出 2、 开放的标准,许多大型公司已经实现了对该规范支持的应用服务器。如 BEA ,IBM,ORACLE 等。 3、 提供相当专业的通用软件服务。 4、 提供了一个优秀的企业级应用程序框架,对快速高质量开发打下基础 四、现状 J2EE 是由 SUN 公司开发的一套企业级应用规范。现在最高版本是 1.4。支持 J2EE 的应用服务器有 IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。 学习 Java 的 30 个基本概念 Java 概述: 目前 Java 主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证 明,Java 不适合 pc 应用程序的开发,其发展逐渐变成在开发手持设备,互联网信息站,及车载计算机的开 发.Java 于其他语言所不同的是程序运行时提供了平台的独立性,称许可以在 windows,solaris,linux 其他操 作系统上使用完全相同的代码.Java 的语法与 C++语法类似,C++/C 程序员很容易掌握,而且 Java 是完全的 彻底的面向对象的,其中提出了很好的 GC(Garbage Collector)垃圾处理机制,防止内存溢出. Java 的白皮书为我们提出了 Java 语言的 11 个关键特性. (1)Easy:Java 的语法比 C++的相对简单,另一个方面就是 Java 能使软件在很小的机器上运行,基础解释其和 类库的支持的大小约为 40kb,增加基本的标准库和线程支持的内存需要增加 125kb. (2)分布式:Java 带有很强大的 TCP/IP 协议族的例程库,Java 应用程序能够通过 URL 来穿过网络来访问远程 对象,由于 servlet 机制的出现,使 Java 编程非常的高效,现在许多的大的 web server 都支持 servlet. (3)OO:面向对象设计是把重点放在对象及对象的接口上的一个编程技术.其面向对象和 C++有很多不同,在 与多重继承的处理及 Java 的原类模型. (4)健壮特性:Java 采取了一个安全指针模型,能减小重写内存和数据崩溃的可能性。 (5)安全:Java 用来设计网路 和分布系统,这带来了新的安全问题,Java 可以用来构建防病毒和防攻击的 System.事实证明 Java 在防毒这一方面做的比较好. (6)中立体系结构:Java 编译其生成体系结构中立的目标文件格式可以在很多处理器上执行,编译器产生的指 令字节码(Javabytecode)实现此特性,此字节码可以在任何机器上解释执行. (7)可移植性:Java 中对基本数据结构类型的大小和算法都有严格的规定所以可移植性很好. (8)多线程:Java 处理多线程的过程很简单,Java 把多线程实现交给底下操作系统或线程程序完成.所以多线 程是 Java 作为服务器端开发语言的流行原因之一 (9)Applet 和 servlet:能够在网页上执行的程序叫 Applet,需要支持 Java 的浏览器很多,而 applet 支持动态的 网页,这是很多其他语言所不能做到的. 基本概念: 1.OOP 中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能 否给你提供电就行了,也就是只要知道 can or not 而不是 how and why.所有的程序是由一定的属性和行为 对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象 数据,很大限度上提高复用率. 2.OOP 中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance) 3.封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他 的实例字段(instance field) 4.通过扩展一个类来获得一个新类叫继承(inheritance),而所有的类都是由 Object 根超类扩展而得,根超类 下文会做介绍. 5.对象的 3 个主要特性 behavior---说明这个对象能做什么. State---当对象施加方法时对象的反映. Identity---与其他相似行为对象的区分标志. 每个对象有唯一的 indentity 而这 3 者之间相互影响. 6.类之间的关系: use-a :依赖关系 has-a :聚合关系 is-a :继承关系--例:A 类继承了 B 类,此时 A 类不仅有了 B 类的方法,还有其自己的方法.(个性存在于共性中) 7.构造对象使用构造器:构造器的提出,构造器是一种特殊的方法,构造对象并对其初始化. 例:Data 类的构造器叫 Data new Data()---构造一个新对象,且初始化当前时间. Data happyday=new Data()---把一个对象赋值给一个变量 happyday,从而使该对象能够多次使用,此处要声明的使变量与对象变 量二者是不同的.new 返回的值是一个引用. 构造器特点:构造器可以有 0 个,一个或多个参数 构造器和类有相同的名字 一个类可以有多个构造器 构造器没有返回值 构造器总是和 new 运算符一起使用. 8.重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载.编译器必须挑选出调用哪个方法. 9.包(package)Java 允许把一个或多个类收集在一起成为一组,称作包,以便于组织任务,标准 Java 库分为许 多包.java.lang java.util java,net 等,包是分层次的所有的 java 包都在 java 和 javax 包层次内. 10.继承思想:允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这 个类的方法和字段,同时你可以在新类中添加新的方法和字段. 11.扩展类:扩展类充分体现了 is-a 的继承关系. 形式为:class (子类) extends (基类). 12.多态:在 java 中,对象变量是多态的.而 java 中不支持多重继承. 13.动态绑定:调用对象方法的机制. (1)编译器检查对象声明的类型和方法名. (2)编译器检查方法调用的参数类型. (3)静态绑定:若方法类型为 priavte static final 编译器会准确知道该调用哪个方法. (4)当程序运行并且使用动态绑定来调用一个方法时,那么虚拟机必须调用 x 所指向的对象的实际类型相匹 配的方法版本. (5)动态绑定:是很重要的特性,它能使程序变得可扩展而不需要重编译已存代码. 14.final 类:为防止他人从你的类上派生新类,此类是不可扩展的. 15.动态调用比静态调用花费的时间要长, 16.抽象类:规定一个或多个抽象方法的类本身必须定义为 abstract 例: public abstract string getDescripition 17.Java 中的每一个类都是从 Object 类扩展而来的. 18.object 类中的 equal 和 toString 方法.equal 用于测试一个对象是否同另一个对象相等.toString 返回一个 代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示.(toString 方法是一个 很重要的方法) 19.通用编程:任何类类型的所有值都可以同 object 类性的变量来代替. 20.数组列表:ArrayList 动态数组列表,是一个类库,定义在 java.uitl 包中,可自动调节数组的大小. 21.class 类 object 类中的 getclass 方法返回 ckass 类型的一个实例,程序启动时包含在 main 方法的类会被 加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类. 22.class 类为编写可动态操纵 java 代码的程序提供了强大的功能反射,这项功能为 JavaBeans 特别有用,使 用反射 Java 能支持 VB 程序员习惯使用的工具.能够分析类能力的程序叫反射器,Java 中提供此功能的包叫 Java.lang.reflect 反射机制十分强大. 1.在运行时分析类的能力. 2.在运行时探察类的对象. 3.实现通用数组操纵代码. 4.提供方法对象. 而此机制主要针对是工具者而不是应用及程序. 反射机制中的最重要的部分是允许你检查类的结构.用到的 API 有: java.lang.reflect.Field 返回字段. Java.reflect.Method 返回方法. Java.lang.reflect.Constructor 返回参数. 方法指针:java 没有方法指针,把一个方法的地址传给另一个方法,可以在后面调用它,而接口是更好的解决 方案. 23.接口(Interface)说明类该做什么而不指定如何去做,一个类可以实现一个或多个 interface. 24.接口不是一个类,而是对符合接口要求的类的一套规范.若实现一个接口需要 2 个步骤: 1.声明类需要实现的指定接口. 2.提供接口中的所有方法的定义. 声明一个类实现一个接口需要使用 implements 关键字 class actionB implements Comparable 其 actionb 需要提供 CompareTo 方法,接口不是类,不能用 new 实例化一个接口. 25.一个类只有一个超类,但一个类能实现多个接口.Java 中的一个重要接口 Cloneable 26.接口和回调.编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发生时回调对象 上的方法.例:ActionListener 接口监听. 类似的 API 有:java.swing.JOptionPane java.swing.Timer java.awt.Tookit 27.对象 clone:clone 方法是 object 一个保护方法,这意味着你的代码不能简单的调用它. 28.内部类:一个内部类的定义是定义在另一个内部的类 原因是:1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据 2.对于同一个包中的其他类来说,内部类能够隐藏起来. 3.匿名内部类可以很方便的定义回调. 4.使用内部类可以非常方便的编写事件驱动程序. 29.代理类(proxy):1.指定接口要求所有代码 2.object 类定义的所有的方法(toString equals) 30.数据类型:Java 是强调类型的语言,每个变量都必须先申明它都类型,java 中总共有 8 个基本类型.4 种是 整型,2 种是浮点型,一种是字符型,被用于 Unicode 编码中的字符,布尔型.
还剩6页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

1041950008

贡献于2014-07-11

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf