2019年JAVA工程师EJB面试题集
2019蚂蚁金服Java必问面试题及答案
一面1、自我介绍、自己做的项目和技术领域开放题2、项目中的监控:那个监控指标常见的有哪些?答:CPU、内存、IO 等等。
建议下载个nmon 工具,里面有各个指标。
数据库:Mysql (缓存命中、索引、单条SQL 性能、数据库线程数、数据池连接数)中间件: 1.消息2、负载均衡 3 、缓存(包括线程数、连接数、日志)。
网络:吞吐量、吞吐率应用:jvm 内存、日志、Full GC 频率3、微服务涉及到的技术以及需要注意的问题有哪些?4、注册中心你了解了哪些?答:Consul 、Eureka 、ZooKeeper5、consul 的可靠性你了解吗?6、consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过?7、项目用Spring 比较多,有没有了解Spring 的原理?AOP 和IOC 的原答:(1). IoC (Inversion of Control )是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控。
控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。
对于Spring 而言,就是由Spring 来控制对象的生命周期和对象之间的关系;IoC 还有另外一个名字——“依赖注入(Dependency Injection )”。
从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,即由容器动态地将某种依赖关系注入到组件之中。
(2) . 在Spring 的工作方式中,所有的类都会在spring 容器中登记,告诉spring 这是个什么东西,你需要什么东西,然后spring 会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。
所有的类的创建、销毁都由spring 来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring 。
对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring 控制,所以这叫控制反转。
java面试题库java面试题目及答案(3篇)
第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
java模拟面试题目(3篇)
第1篇一、Java基础知识1. 请简述Java语言的特点。
2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。
4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。
5. 什么是Java中的泛型?请解释泛型的原理和作用。
6. 请简述Java中的四种访问控制符:public、protected、default、private。
7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。
8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。
9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。
二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。
2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。
3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。
4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。
5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。
7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。
三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。
2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。
3. 什么是Java中的同步机制?请解释synchronized关键字的作用。
java2019面试题目100及最佳答案
java2019面试题目100及最佳答案1. 什么是Java平台?请列举Java平台的三个主要组成部分。
答案:Java平台是指Java语言的运行环境,它包括Java虚拟机(JVM)、Java核心类库和Java编程语言本身。
三个主要组成部分包括Java运行时环境(JRE)、Java开发工具包(JDK)和Java应用程序接口(API)。
2. 解释Java中的异常处理机制。
答案:Java中的异常处理机制允许程序在运行时捕获和处理错误。
它使用try、catch和finally关键字来实现。
try块中包含可能抛出异常的代码,catch块用于捕获和处理异常,finally块中的代码无论是否发生异常都会执行。
3. Java中什么是多线程?请说明其优缺点。
答案:Java中的多线程是指在同一个进程中并行执行两个或多个线程的能力。
优点包括提高程序的响应性和效率,以及能够充分利用多核处理器。
缺点包括增加了程序的复杂性,可能导致资源竞争和死锁。
4. 解释Java中的垃圾回收机制。
答案:Java中的垃圾回收机制是指自动回收不再被引用的对象所占用的内存。
Java虚拟机(JVM)负责周期性地执行垃圾回收,以避免内存泄漏。
5. Java中的集合框架有哪些主要接口?答案:Java中的集合框架主要包括以下接口:List、Set、Map、Queue和Deque。
这些接口定义了集合的基本操作,如添加、删除、遍历等。
6. 什么是Java泛型?请举例说明其用途。
答案:Java泛型是指在定义类、接口、方法时使用类型参数,以支持编译时类型检查。
泛型可以提高代码的复用性和安全性。
例如,定义一个泛型类`List<T>`,其中T可以是任何类型的对象。
7. Java中什么是注解(Annotation)?请列举其主要用途。
答案:Java中的注解是一种特殊的接口,用于为代码提供元数据。
主要用途包括编译时处理、类和方法的标记、运行时处理等。
8. 解释Java反射机制及其应用场景。
Java面试题大全及答案
Java面试题大全及答案1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。
Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。
Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.JDK和JRE的区别是什么?Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。
它同时也包含了执行applet需要的浏览器插件。
Java开发工具包 (JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行 Java应用程序。
3.”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。
static方法跟类的任何实例都不相关,所以概念上不适用。
4.是否可以在static环境中访问非static变量?static变量在Java中是属于类的,它在所有的实例中的值是一样的。
当类被Java虚拟机载入的时候,会对static变量进行初始化。
如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java支持的数据类型有哪些?什么是自动拆装箱?Java语言支持的8中基本数据类型是:byteshortintlongfloatdoublebooleanchar自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。
Java经典面试题及答案(200题)
Java经典面试题及答案(200题) Java经典面试题200道Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。
简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
2. == 和 equals 的区别是什么?「== 解读」对于基本类型和引用类型 == 的作用效果是不同的,如下所示:基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;代码示例:String x = "string";String y = "string";String z = new String("string");System.out.println(x==y); // trueSystem.out.println(x==z); // falseSystem.out.println(x.equals(y)); // trueSystem.out.println(x.equals(z)); // true代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。
「equals 解读」equals 本质上就是 ==,只不过 String 和 Integer 等重写了equals 方法,把它变成了值比较。
EJBJAVA程序员JAVA工程师面试必看
EJBJAVA程序员JAVA工程师面试必看在当前竞争激烈的市场环境下,Java开发岗位越来越受到关注。
Java工程师面试是众多招聘企业对一个Java程序员技术水平的全方面考察,同时也是面试者展示自己技能的重要机会。
本文将为Java程序员招聘的企业和应聘者提供一些必看的面试题目和答案。
一、JavaSE面试题JavaSE包含了Java编程语言的基础开发环境,JavaSE的面试题往往被奉为Java程序员最基础的考察点。
1. Java中的String类是什么样的?答:Java中的String类代表字符串,它是一个不可变的类,也就是说,一旦定义了一个字符串变量后,就不能对其进行更改,只能重新创建一个新的字符串对象。
2. 什么是序列化?答:序列化是将一个Java对象转换成字节流存储或传输的过程。
序列化的主要作用是方便实现数据的存储和传输。
3. 常见的集合类有哪些?答:Java的常见集合类有ArrayList向量类,HashSet,HashMap和HashTable 等。
4. Java中的线程是什么?答:线程是Java中实现多任务的一种机制。
Java的线程机制可以帮助开发者将程序分割成几个独立的单元,这些单元可以相互之间独立的执行,从而实现多任务的效果。
二、JavaEE面试题JavaEE包含了Java企业开发环境,任何企业级应用都需要依赖JavaEE。
以下是JavaEE面试中可能会出现的面试题。
1. 什么是EJB?答:EJB是Enterprise JavaBeans的缩写,表示具有分布式事务处理和安全性的高级Java软件组件,能够提供分布式应用程序和客户端/ 服务器环境中的业务逻辑。
2. 什么是JVM?答:JVM是Java Virtual Machine的缩写,即Java虚拟机,是 Java程序的运行环境。
3. JSP和Servlet有什么区别?答:JSP全称是Java Server Pages,而Servlet通常称为Java Servlet,JSP和Servlet是JavaEE的两个重要组件。
java面试题大全及答案
java面试题大全及答案Java是一种广泛使用的编程语言,具有良好的可移植性和可伸缩性,因此在软件开发领域广受欢迎。
对于求职者来说,掌握Java面试题和答案是非常重要的,因为这将帮助他们更好地准备面试并展示自己的技能和知识。
本文将为您提供一些常见的Java面试题及其答案。
一、Java基础知识1. 什么是Java?它的特点是什么?答:Java是一种面向对象的编程语言,具有平台无关性、可移植性、安全性和简单性等特点。
2. Java与C++有什么区别?答:Java是一种基于虚拟机的高级语言,而C++是一种编译型语言。
Java具有更严格的语法和更强的安全性,而C++更加灵活和高效。
3. 什么是Java虚拟机(JVM)?答:JVM是Java程序运行的虚拟计算机,它将Java字节码转换为特定平台上的机器码。
4. 说一下Java的基本数据类型。
答:Java的基本数据类型包括整型(int、short、long、byte)、浮点型(float、double)、字符型(char)和布尔型(boolean)。
5. Java中的四种访问修饰符是什么?答:Java中的四种访问修饰符是public、protected、private和default。
二、面向对象编程1. 什么是面向对象编程?答:面向对象编程(OOP)是一种编程方法,它将数据和操作封装在对象中,通过对象之间的交互来完成任务。
2. Java中的继承是什么?如何实现继承?答:继承是一种对象之间的关系,它允许一个类(子类)继承另一个类(父类)的属性和方法。
在Java中,使用关键字"extends"实现继承。
3. 什么是多态性?答:多态性是指一个对象的多种形态。
在Java中,通过方法的重载和方法的重写实现多态性。
4. 什么是抽象类?如何定义抽象类?答:抽象类是一种不能实例化的类,它只能作为其他类的父类来使用。
在Java中,使用关键字"abstract"定义抽象类。
2019年Java 最常见的 面试题.doc
2019年Java 最常见的面试题1、java中Static关键字有哪些特点???答:1)、static成员变量静态变量:属于类,内存中只有一个复制,所有实例都指向同一个内存地址,只要类被加载,静态变量就会本分配空间,调用方式有两种。
类.静态变量和对象.静态变量实例变量:属于对象,只有对象被创建,实例对象才会被分配空间,调用方式:对象.实例变量2)、static成员方法静态方法:属于类,不需要创建对象,就可以被调用。
调用方式:类.静态方法和对象.静态方法非静态方法:属于对象,只能在对象被创建出来之后才可以被使用。
注意:static方法中,不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和静态成员方法。
2、java中length属性与length()方法有什么区别???答:length属性属于数组,用来获取数组的长度;而length()方法属于String 用来计算字符串长度。
3、java中Collections框架是什么???答:Collection是整个集合框架的基础,它里面存储了一组对象,用于表示不同类型的Collections.主要有一下三种,其特点如下。
1)、set 主要特点集合中元素不能重复。
2)、list有序的Collection,按照对象的进入顺序保存对象,可以重复。
3)、map提供了从键映射到值得数据结构,值可以重复单键必须唯一。
4、java中ArrayList 、Vector 、LinkedList有什么区别???答:ArrayList 、Vector 、LinkedList类均在java.util包,均为可伸缩数组,即可以动态改变长度的数组。
ArrayList 、Vector 都是基于数组来实现的,数据存储是连续的,支持下标访问元素,查询快,插入慢。
区别在于:ArrayList提供的方法都不是同步的,且线程不安全,但效率高。
Vector大部分方法都是同步的,且线程安全,效率低。
2019年腾讯最新Java工程师面试题
2019年腾讯最新Java⼯程师⾯试题⼀、单选题(共21题,每题5分)1在正则表达式当中下⾯那⼀个字符集表⽰⾮空格字符、[:graph:]、[:digit:]C、[:space:]D、[:alpha:]参考答案:A答案解析:A2下列叙述中,错误的是( )。
A、内部类可访问它所在类的成员B、内部类的名称与定义它的类的名称可以相同C、内部类可⽤abstract修饰D、内部类可作为其他类的成员参考答案:A答案解析:暂⽆3以下哪个排序算法中,元素的⽐较次数元素与元素的初始排列⽆关()A、希尔排序B、快速排序C、归并排序D、直接插⼊排序E、选择排序参考答案:E4下⾯程序的输出结果是什么。
下⾯程序的输出结果是什么。
```1public class A2{2public static void main(String[] args){3int[] a={2,4,6,8,3,6,9,12};4 doSomething(a,0,a.length-1);5for(int i=0;i=x){6 swap(a,i,j);7 i++;//交换了⼏次8 }9 }//把最⼤的放到最后10 swap(a,i,end);//把最⼤的放到i的位置11return i;12 }1314private static void swap(int[] a,int i,int j)15 {16int tmp=a[i];17 a[i]=a[j];18 a[j]=tmp;19 }20 }21 ```A、找到最⼤值B、找到最⼩值C、从⼤到⼩的排序D、从⼩到⼤的排序参考答案:C答案解析:开始被注释迷惑了半天。
按快排的思想,遍历数组将⽐x⼤的按顺序存⾄a\[0\]a\[1\]a\[2\]..此时j负责遍历数组,i负责依次指向下⼀次遍历判断得到的⼤于x的数该存储的位置,每⼀次成功存储向后移动⼀格![](https:///source/1/Eawsn8OjUtldwcCznJeyAa-L2dkhbIeK.)![](https:///source/1/r_qNSSJe5jKn7YAjOeVqW87cD14xy3SB.)![](https:///source/1/P_3qexdojr61Po55nN0C_TegJw5vWnl_.)swap(a,i,end);//把最⼤的放到i的位置应该是将x交换⾄分界点,( x并⾮最⼤)⾄此⼀趟core完成,x左侧⼤于x,x右侧⼩于x,x左右任是⽆序数列然后依据分治的思想,对左序列,右序列迭代。
【黑马程序员】Java试题、50道Java面试题集(2019最新版)
【黑马程序员】Java试题、50道Java面试题集(2019最新版)以下的内容是对原有的和最近Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,相对来说比较经典,相信对准备入职的Java程序员一定有所裨益。
一、Java基础部分1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。
抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
2)继承:继承是从已有类得到继承信息创建新类的过程。
提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。
继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。
3)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。
我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。
可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
4)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。
简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。
多态性分为编译时的多态性和运行时的多态性。
如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B 系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。
(完整版)Java经典面试题大全带答案
Java经典面试题带答案一、单项选择题1.Java是从()语言改进重新设计。
A.AdaB.C++C.PasacalD.BASIC答案:B2.下列语句哪一个正确()A. Java程序经编译后会产生machine codeB.Java程序经编译后会产生byte codeC.Java程序经编译后会产生DLLD.以上都不正确答案:B3.下列说法正确的有()A.class中的constructor不可省略B. constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行D.一个class只能定义一个constructor答案:C4.提供Java存取数据库能力的包是()A.java.sqlB.java.awtC.java。
langD.java。
swing答案:A5.下列运算符合法的是()A.&&B.〈>C.ifD.:=答案:A6.执行如下程序代码a=0;c=0;do{-—c;a=a-1;}while(a〉0);后,C的值是()A.0B.1C.—1D.死循环答案:C7.下列哪一种叙述是正确的()A.abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{}包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号答案:D8.下列语句正确的是()A.形式参数可被视为localvariableB.形式参数可被字段修饰符修饰C.形式参数为方法被调用时,真正被传递的参数D.形式参数不可以是对象答案:A9.下列哪种说法是正确的()A.实例方法可直接调用超类的实例方法B.实例方法可直接调用超类的类方法C.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法答案:D二、多项选择题1.Java程序的种类有()A.类(Class)B.AppletC.ApplicationD.Servlet2.下列说法正确的有()A.环境变量可在编译sourcecode时指定B.在编译程序时,所能指定的环境变量不包括class pathC.javac一次可同时编译数个Java源文件D.javac。
JAVA工程师EJB面试题集
JAVA工程师EJB面试题集EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。
其特点包括网络服务支持和核心开发工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)称为Java 企业柄,是Java的核心代码,分为整体柄和片段柄和消息柄三个部分,其中的消息柄将在以后再作讨论。
现在我们来看看什么是整体柄和片段柄。
整体柄是一种对象: 标准Java对象由创建它的程序创建,当程序终止时,对象也随之丢失,这就意味着当再次运行些程序时,将无法找到先前创建的柄,而整体柄会一直存在着直到它被删除。
一个程序可以创建一个整体柄,并且这个程序可以在被保存后随时停止和重启。
整体柄将会依然存在。
重启后,程序可以找到与之相对应的整体柄,并且会继续使用这个整体柄。
EJB实际上是SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB 产品.EJB是BEANS,BEANS是什么概念,那就是得有一个容纳她,让她可劲造腾的地方,就是得有容器.EJB 必须生存在EJB容器中.这个容器可是功能强大之极!她首先要包装你BEAN,EJB的客户程序实际上从来就不和你编写的EJB直接打交道,他们之间是通过HOME/REMOTE接口来发生关系的.它负责你的BEAN的所有的吃喝拉萨睡,比如BEAN的持续化,安全性,事务管理...一.什么是EJB?一个技术规范:EJB 从技术上而言不是一种"产品"EJB 是一种标准描述了构建应用组件要解决的:可扩展(Scalable)分布式(Distributed)事务处理(Transactional)数据存储(Persistent)安全性(Secure)二.Sun 对EJB 的期望提供一个标准的分布的、基于OO的组件架构屏蔽复杂的系统级功能需求Write once, run anywhere与非Java 应用之间的互操作能力兼容CORBA标准三.为什么选择EJB?EJB 服务器完成"繁杂"的工作:应用开发人员关注于业务逻辑的实现而不是底层的实现机制(类似于4GL 语言设计的目标)支持事务处理多个业务操作同时成功,或全部失败可以通过在代码外的描述来定义事务处理级别可扩展性EJB 可以根据您应用的增长而扩展EJB 服务器往往还提供了负载均衡和安全性:由EJB 服务器提供资源的访问权限控制四.EJB 架构为了满足架构的目标,规范中描述了服务器(Server)容器(Container)类(Class) 和实例(Instance)Home 和Remote 接口客户端(Client)五. 简化的编程模型关注于业务逻辑实现:EJB 负责生命周期(lifecycle), 数据存储(persistence), 事务处理语义(transactional semantic), 安全(security), ...通用的编程模型:各种服务的高层APIJava 是其编程语言1.EJB 特点由一个EJB 容器在运行时创建和管理EJB在部署EJB 时定制其运行方式由EJB 容器和服务器来协调客户端的访问可以部署到任何兼容的EJB 容器中客户端对EJB 的视图是由Bean 开发人员决定的2.EJB 服务器管理EJB 容器(它管理Bean)提供对操作系统服务的存取提供Java 相关的服务,尤其是通过JNDI 访问命名空间基于OTS 的事务处理服务3.EJB 容器管理Bean 生命周期:将EJB 服务器提供的服务传递给Bean生成代码来实现对Bean 的存取访问强制事务处理的限制创建、初始化和回收Bean管理持久数据的存储对客户端而言EJB 容器是透明的4.在一个EJB 服务器中的容器目前容器通常是由EJB 服务器本身提供的在EJB 1.0 或1.1 规范中没有定义容器-到-服务器的接口各厂商可以根据他们的见解来实现服务器和容器的各自责任5.容器提供服务: 数据存储容器决定何时载入/储存状态Container-Managed Persistence(容器管理存储/CMP)容器负责存储您的Bean容器生成必要的类和代码Bean-Managed Persistence(Bean 管理存储/BMP)Bean 开发人员提供存储代码开发人员决定如何存储, 容器仍然决定何时进行6.容器提供服务: 事务处理可以由容器代理来实现容器将得到业务逻辑方法的事务处理需求容器提供事务控制代码也可以由程序员通过代码实现7.容器提供服务: 其它服务其它服务包括命名(Naming)安全(Security)线程管理(Thread management)这些服务由容器代理完成将减少应用开发人员的负担8.分布式对象运算远程对象被作为本地对象来处理:传递信息的方式不变,但开销更大Enterprise JavaBeans 永远运行在服务器上:对Bean 的访问永远是远程调用9.Stub 和Skeleton由EJB 生成:"Stub" 对要传递出去的信息编码"Tie/Skel" 将接受到的信息解码并传递给目标对象10.分类: Enterprise JavaBean s+---Entity Beans--CMP/BMPEjb--|+---Session Beans--Stateful/Stateless会话Bean (Session Bean):根据EJB 规范,一个会话Bean 是:代表单个客户端来执行可以参与到事务处理中不直接代表共享于数据库中的数据,但它能访问和更新这些数据相对而言是短暂存在的当EJB 容器失效后就不存在---客户端需要重新建立一个信新的会话对象来继续运算实体Bean (Entity Bean):根据EJB 规范,一个实体Bean 是:提供在数据库中数据的对象视图允许被多个用户共享存取访问可以是长期存在(只要它存在于数据库中)实体Bean, 它的主键对象, 以及它的远程引用将能跨EJB 容器的宕机而存在11.EJB 类和实例构建EJB 应用包括来自三方的代码开发人员编写的代码由EJB API 定义的类和接口由容器自动生成的代码开发人员编写的代码包括Bean 类(定义了业务逻辑)Home 接口(如何查找或创建bean)Remote 接口(如何存取bean)其它组件,根据bean 实际要求12.EJB Home 接口每个bean 有一个用于:创建新的bean 实例、查找现存的bean (只能是实体bean)Remote 接口:定义bean 的公共接口---只有在Remote 接口中定义的方法才能被客户端访问EJB 客户端可以为servlet, JSP, 应用程序或其它bean通过JNDI 来查找EJB home 接口,步骤为:创建一个JNDI Context (initial context)使用JNDI Context 来查找bean home 接口使用bean home 接口来创建/查找bean 实例使用bean 实例完成业务操作实际的存取(对EJB) 是通过容器生成的类来完成EJB 架构客户端对bean 访问永远不是直接的EJBObject (tie) 是由容器自身提供的:用来帮助管理bean 的生命周期EJB 中的角色EJB 服务器供应商: 开发并销售EJB 服务器EJB 容器供应商: 开发并销售EJB 容器Enterprise bean 开发人员: 开发并销售EJB应用组装人员: 将不同的EJB 搭建成应用六、EJB的体系结构目前,EJB最新的标准是2.1,EJB3.0规范正在讨论中,预计将于明年推出。
java工程师面试题及答案
java工程师面试题及答案Java工程师面试中,面试官通常会通过一系列技术问题来评估候选人的技术能力和经验。
以下是一些常见的Java面试题及答案,供参考:1. Java和C++的主要区别是什么?- Java是一种纯面向对象的语言,而C++支持面向过程和面向对象两种编程范式。
- Java不支持指针操作,而C++支持。
- Java有垃圾回收机制,而C++需要手动管理内存。
- Java是跨平台的,而C++不是。
2. 什么是JVM?- JVM(Java虚拟机)是一个可以执行Java字节码的虚拟计算机。
它将Java源代码编译成字节码,然后在JVM上运行。
3. 什么是多线程?- 多线程是程序设计中的一种方法,允许两个或多个线程同时执行。
Java通过`Thread`类和`Runnable`接口来实现多线程。
4. 同步和异步的区别是什么?- 同步是指多个线程访问共享资源时,一次只允许一个线程访问,这样可以防止数据不一致。
- 异步是指多个线程可以同时访问共享资源,但需要额外的机制来保证数据的一致性。
5. Java中的集合框架有哪些?- Java集合框架包括`List`、`Set`、`Map`等接口,以及它们的实现类如`ArrayList`、`HashSet`、`HashMap`等。
6. 什么是泛型?- 泛型是一种类型安全的特性,它允许在编译时检查类型,从而避免类型转换的错误。
泛型在Java 5中被引入。
7. Java中的异常处理机制是怎样的?- Java使用`try`、`catch`和`finally`块来处理异常。
`try`块包含可能会抛出异常的代码,`catch`块捕获并处理异常,`finally`块则无论是否发生异常都会执行。
8. 什么是Java反射?- 反射允许程序在运行时查询、访问和修改类和对象的属性和方法。
它在Java中是通过`ng.reflect`包实现的。
9. 什么是序列化?- 序列化是将对象的状态信息转换为可以存储或传输的格式的过程。
EJB面试题.doc
EJB面试题选择题(45题)1. EJB是什么?(选择2项)A. Enterprise JavaBean(企业级JavaBean)B. Extend JavaBean(扩展JaveBean)C. 一种分布式组件规范D. 一种对于Servlet技术的扩展2. J2EE服务器包含哪两个部分?(选择2项)A. JavaBean容器B. EJB容器C. Web容器D. JSP容器3. EJB的优点有哪些?(选择2项)A. 技术领先B. 价格低廉C. 性能优越D. 强大的容器支持4. 以下哪些服务器容器支持EJB?(选择2项)A. IISB. WebLogicC. TomcatD. Websphere5. EJB类库存在于Java的哪个版本中?(选择1项)。
A. J2SEB. J2EEC. J2MED. J2NE6. 要创建一个EJB,必须要至少编写哪些Java类和接口?(选择3项)A. 定义远程(或业务)接口B. 定义本地接口C. 定义Bean接口D. 编写Bean的实现7. EJB是否可以脱离容器而运行?(选择1项)A. 是B. 否8. CMP与BMP分别表示什么?(选择1项)A. CMP表示Bean管理持久性(Persistence),BMP表示容器管理持久性B. CMP表示容器管理持久性(Persistence),BMP表示Bean 管理持久性C. CMP表示Bean管理进程(Process),BMP表示容器管理进程D. CMP表示容器管理进程(Process),BMP表示Bean管理进程9. EJB是什么?(选择1项) [ ]A. 服务器端产品B. 服务器端组件开发架构C. 特殊类型的JavaBeanD. 用于实现商业逻辑10. EJB架构主要使用的设计模式是什么?(选择2项) [ ]A. Proxy 代理B. StrategyC. Delegate 委派D. Responsibility Chain11. EJB的类型主要有什么?(选择3项) [ ]A. Command BeanB. Data Access BeanC. Session BeanD. Entity BeanE. Java BeanF. Message-Driven Bean12. EJB3.0中Session Bean的组成可以包括:[]A. Home interfaceB. A thread classC. Remote interfaceD. Primary key classE. Local home interfaceF. Local interfaceG. ejb-jar.xmlH. application.xmlI. Bean class13.EJB3.0中Entity Bean的组成可以包括:[]A. Home interfaceB. web.xmlC. Remote interfaceD. Primary key classE. Local home interfaceF. Local interfaceG. ejb-jar.xmlH. ejb.xmlI. Bean class14. Session Bean按是否跟踪客户状态分:[]A. State Session BeanB. Stateless Session BeanC. BMT Session BeanD. CMT Session BeanE. Stateful Session Bean15. Entity Bean根据数据持久性的处理方式分:[]A. BMT Entity BeanB. BMP Entity BeanC. CMP Entity BeanD. CMT Entity Bean16. Entity Bean的事务处理方式可采用:[]A. BMPB. BMTC. CMTD. CMP17. Session Bean和Message-Driven Bean的事务处理方式可采用:[]A. BMT和CMPB. BMT和CMTC. BMP和CMPD. BMP和CMT18. 申明方式的事务处理的属性有:[]A. SupportsB. ShouldC. NotSupportedD. RequiredE. MaybeF. RequiresNewG. MandatoryH. Never19. Local interface引入的目的是:[]A. 本地客户程序才能调用EJBB. 为了性能C. 解决Session Bean与Enity Bean之间的交互20. Message-Driven Bean的Bean Class必须实现[] ;bean class中服务方法的签名是[]A. onMessageB. MessageListenerC. MessageDrivenBean21. EJBContext是EJB与EJB Container沟通的桥梁,在EJBContext中定义了与安全相关的两个方法是[], 与事务相关的三个方法是[] , 与定时服务相关的方法是[]。
【黑马程序员】Java试题、50道Java面试题集(2019最新版)21-30
【黑马程序员】Java试题、50道Java面试题集(2019最新版)21-30以下的内容是对原有的和最近Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,相对来说比较经典,相信对准备入职的Java程序员一定有所裨益。
21、描述一下JVM 加载class文件的原理机制?答:JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。
补充:1.由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。
当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。
类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。
加载完成后,Class对象还不完整,所以此时的类还不可用。
当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。
最后JVM对类进行初始化,包括:1如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2如果类中存在初始化语句,就依次执行这些初始化语句。
2.类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(ng.ClassLoader的子类)。
从JDK 1.2开始,类加载过程采取了父亲委托机制(PDM)。
PDM更好的保证了Java平台的安全性,在该机制中,JVM 自带的Bootstrap是根加载器,其他的加载器都有且仅有一个父类加载器。
类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。
JVM不会向Java程序提供对Bootstrap的引用。
java应届生面试题目(3篇)
第1篇一、Java基础知识1. 请简述Java的基本特性和优势。
解析:Java具有简单性、面向对象、分布式、平台无关性、安全性、多线程、动态性、强类型、高效率、可移植性等特性。
其优势在于跨平台、安全性高、易于开发、有丰富的类库等。
2. 请解释Java中的基本数据类型和引用数据类型。
解析:基本数据类型包括byte、short、int、long、float、double、char、boolean;引用数据类型包括类、接口、数组等。
3. 请解释Java中的封装、继承、多态三个基本概念。
解析:封装是指将类的属性和方法封装在一个单元中,隐藏内部实现细节;继承是指子类继承父类的属性和方法,实现代码复用;多态是指同一方法在不同对象上表现不同的行为。
4. 请解释Java中的构造函数和析构函数。
解析:构造函数用于创建对象时初始化对象的属性,析构函数用于销毁对象时释放对象占用的资源。
5. 请解释Java中的static关键字。
解析:static关键字用于修饰成员变量和方法,表示该成员变量或方法属于类,而不是对象。
6. 请解释Java中的final关键字。
解析:final关键字用于修饰成员变量、方法和类,表示该成员变量、方法或类不可修改。
7. 请解释Java中的异常处理机制。
解析:Java中的异常处理机制包括try-catch-finally语句,用于捕获和处理程序中的异常。
8. 请解释Java中的泛型。
解析:泛型是一种参数化类型,允许在定义类、接口和泛型方法时指定类型参数,提高代码的复用性和安全性。
二、Java集合框架1. 请解释Java中的List、Set和Map接口。
解析:List接口表示有序集合,Set接口表示无序集合且元素不可重复,Map接口表示键值对映射。
2. 请解释Java中的ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等常用集合类。
解析:ArrayList和LinkedList实现List接口,ArrayList基于数组实现,LinkedList基于链表实现;HashSet和TreeSet实现Set接口,HashSet基于哈希表实现,TreeSet基于红黑树实现;HashMap和TreeMap实现Map接口,HashMap基于哈希表实现,TreeMap基于红黑树实现。
(版)2019Java面试题,常见面试题及答案汇总
ava最新常见面试题+答案汇总1、面试题模块汇总面试题包括以下十九个模块:Java根底、容器、多线程、反射、对象拷贝、JavaWeb模块、异常、网络、设计模式、Spring/SpringMVC、SpringBoot/SpringCloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。
如下列图所示:可能对于初学者不需要后面的框架和JVM模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。
适宜阅读人群需要面试的初/中/高级java程序员想要查漏补缺的人想要不断完善和扩充自己java技术栈的人java面试官具体面试题下面一起来看208道面试题,具体的内容。
一、Java根底和JRE有什么区别?2.==和equals的区别是什么?3.两个对象的hashCode()相同,那么equals()也一定为true,对吗?在java中有什么作用?中的Math.round(-1.5) 等于多少?属于根底的数据类型吗?中操作字符串都有哪些类?它们之间有什么区别?str="i"与Stringstr=newString(“i〞)一样吗?9.如何将字符串反转?类的常用方法都有那些?11.抽象类必须要有抽象方法吗?12.普通类和抽象类有哪些区别?13.抽象类能使用 final 修饰吗?14.接口和抽象类有什么区别?中IO流分为几种?、NIO、AIO有什么区别?的常用方法都有哪些?二、容器容器都有哪些?和Collections有什么区别?、Set、Map之间的区别是什么?和Hashtable有什么区别?22.如何决定使用HashMap还是TreeMap?23.说一下HashMap的实现原理?24.说一下HashSet的实现原理?和LinkedList的区别是什么?26.如何实现数组和List之间的转换?和Vector的区别是什么?和ArrayList有何区别?29.在Queue中poll()和remove()有什么区别?30.哪些集合类是线程平安的?31.迭代器Iterator 是什么?怎么使用?有什么特点?和ListIterator 有什么区别?34.怎么确保一个集合不能被修改?三、多线程35.并行和并发有什么区别?36.线程和进程的区别?37.守护线程是什么?38.创立线程有哪几种方式?39.说一下runnable 和callable有什么区别?40.线程有哪些状态?41.sleep()和wait()有什么区别?42.notify()和notifyAll()有什么区别?43.线程的run()和start()有什么区别?44.创立线程池有哪几种方式?45.线程池都有哪些状态?46.线程池中 submit()和execute()方法有什么区别?47.在java程序中怎么保证多线程的运行平安?48.多线程锁的升级原理是什么?49.什么是死锁?50.怎么防止死锁?是什么?有哪些使用场景?52.说一下synchronized底层实现原理?和volatile 的区别是什么?和Lock有什么区别?和ReentrantLock区别是什么?56.说一下atomic的原理?四、反射57.什么是反射?58.什么是java序列化?什么情况下需要序列化?59.动态代理是什么?有哪些应用?60.怎么实现动态代理?五、对象拷贝61.为什么要使用克隆?62.如何实现对象克隆?63.深拷贝和浅拷贝区别是什么?六、JavaWeb和servlet 有什么区别?有哪些内置对象?作用分别是什么?66.说一下jsp的4种作用域?和cookie有什么区别?68.说一下session的工作原理?69.如果客户端禁止cookie能实现session还能用吗?mvc和struts的区别是什么?71.如何防止 sql注入?72.什么是XSS攻击,如何防止?73.什么是CSRF攻击,如何防止?七、异常和throws 的区别?、finally、finalize有什么区别?中哪个局部可以省略?中,如果catch中return 了,finally 还会执行吗?78.常见的异常类有哪些?八、网络响应码301和302代表的是什么?有什么区别?和redirect 的区别?81.简述 tcp和udp的区别?为什么要三次握手,两次不行吗?为什么?83.说一下tcp粘包是怎么产生的?的七层模型都有哪些?和post请求有哪些区别?86.如何实现跨域?87.说一下JSONP实现原理?九、设计模式88.说一下你熟悉的设计模式?89.简单工厂和抽象工厂有什么区别?十、Spring/SpringMVC90.为什么要使用 spring?91.解释一下什么是aop?92.解释一下什么是ioc?有哪些主要模块?常用的注入方式有哪些?中的bean是线程平安的吗?支持几种bean的作用域?自动装配bean有哪些方式?事务实现方式有哪些?99.说一下spring的事务隔离?100.说一下springmvc运行流程?mvc有哪些组件?102.@RequestMapping 的作用是什么?103.@Autowired 的作用是什么?十一、SpringBoot/SpringCloud104.什么是springboot?105.为什么要用springboot?boot 核心配置文件是什么?boot 配置文件有哪几种类型?它们有什么区别?boot 有哪些方式可以实现热部署?和hibernate 有什么区别?110.什么是springcloud?cloud 断路器的作用是什么?cloud 的核心组件有哪些?十二、Hibernate113.为什么要使用hibernate?114.什么是ORM框架?中如何在控制台查看打印的sql语句?有几种查询方式?实体类可以被定义为final 吗?118.在hibernate 中使用Integer和int做映射有什么区别?是如何工作的?120.get()和load()的区别?121.说一下hibernate 的缓存机制?对象有哪些状态?123.在hibernate 中getCurrentSession和openSession的区别是什么?实体类必须要有无参构造函数吗?为什么?十三、Mybatis中#{}和${}的区别是什么?有几种分页方式?是一次性查询全部结果吗?为什么?逻辑分页和物理分页的区别是什么?是否支持延迟加载?延迟加载的原理是什么?130.说一下mybatis的一级缓存和二级缓存?和hibernate 的区别有哪些?有哪些执行器〔Executor〕?分页插件的实现原理是什么?如何编写一个自定义插件?十四、RabbitMQ的使用场景有哪些?有哪些重要的角色?有哪些重要的组件?中vhost的作用是什么?的消息是怎么发送的?怎么保证消息的稳定性?怎么防止消息丧失?142.要保证消息持久化成功的条件有哪些?持久化有什么缺点?有几种播送类型?怎么实现延迟消息队列?集群有什么用?节点的类型有哪些?集群搭建需要注意哪些问题?每个节点是其他节点的完整拷贝吗?为什么?集群中唯一一个磁盘节点崩溃了会发生什么情况?对集群节点停止顺序有要求吗?十五、Kafka可以脱离zookeeper单独使用吗?为什么?有几种数据保存的策略?同时设置了7天和10G去除数据,到第五天的时候消息到达了10G,这个时候kafka将如何处理?155.什么情况会导致kafka运行变慢?156.使用kafka集群需要注意什么?十六、Zookeeper是什么?都有哪些功能?有几种部署模式?怎么保证主从节点的状态同步?161.集群中为什么要有主节点?162.集群中有3台效劳器,其中一个节点宕机,这个时候zookeeper还可以使用吗?163.说一下zookeeper的通知机制?十七、MySql164.数据库的三范式是什么?165.一张自增表里面总共有7条数据,删除了最后2条数据,重启mysql数据库,又插入了一条数据,此时id是几?166.如何获取当前数据库版本?167.说一下ACID是什么?和varchar的区别是什么?和double 的区别是什么?的内连接、左连接、右连接有什么区别?索引是怎么实现的?172.怎么验证mysql的索引是否满足需求?173.说一下数据库的事务隔离?174.说一下mysql常用的引擎?175.说一下mysql的行锁和表锁?176.说一下乐观锁和悲观锁?问题排查都有哪些手段?178.如何做mysql的性能优化?十八、Redis是什么?都有哪些使用场景?有哪些功能?和memecache有什么区别?为什么是单线程的?183.什么是缓存穿透?怎么解决?支持的数据类型有哪些?支持的java客户端都有哪些?和redisson有哪些区别?187.怎么保证缓存和数据库数据的一致性?持久化有几种方式?怎么实现分布式锁?分布式锁有什么缺陷?如何做内存优化?淘汰策略有哪些?常见的性能问题有哪些?该如何解决?194.说一下jvm的主要组成局部?及其作用?195.说一下jvm运行时数据区?196.说一下堆栈的区别?197.队列和栈是什么?有什么区别?198.什么是双亲委派模型?199.说一下类加载的执行过程?200.怎么判断对象是否可以被回收?中都有哪些引用类型?202.说一下jvm有哪些垃圾回收算法?203.说一下jvm有哪些垃圾回收器?204.详细介绍一下CMS垃圾回收器?205.新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?206.简述分代垃圾回收器是怎么工作的?207.说一下jvm调优的工具?208.常用的jvm调优的参数都有哪些?2、面试题答案汇总〔一〕根底模块〔二〕容器〔三〕多线程〔五〕对象拷贝〔六〕JavaWeb〔七〕异常〔八〕网络〔九〕设计模式〔十〕Spring/SpringMVC〔十一〕SpringBoot/SpringCloud 〔十二〕Hibernate〔十三〕Mybatis〔十四〕RabbitMQ〔十五〕Kafka〔十六〕Zookeeper〔十七〕MySql〔十八〕Redis〔十九〕JVM。
ejb面试题及答案
ejb面试题及答案EJB面试题及答案1. 什么是EJB?答:EJB(Enterprise JavaBeans)是一种服务器端的Java技术,它提供了一种用于开发和部署多层、分布式、面向对象的Java应用程序的工业标准。
EJB允许开发者通过使用预定义的业务逻辑组件来创建复杂的企业级应用程序。
2. EJB有哪些类型?答:EJB主要有三种类型:- 会话Bean(Session Beans):代表应用程序的业务逻辑。
- 实体Bean(Entity Beans):代表数据库中的持久化数据。
- 消息驱动Bean(Message-Driven Beans):用于处理来自消息队列的消息。
3. 什么是会话Bean?答:会话Bean是EJB的一种类型,它代表应用程序的业务逻辑,并且不包含持久状态。
会话Bean可以进一步分为有状态会话Bean和无状态会话Bean。
4. 什么是有状态会话Bean和无状态会话Bean的区别?答:有状态会话Bean(Stateful Session Beans)保存了客户端的会话状态,并且可以跨多个方法调用保持状态。
无状态会话Bean (Stateless Session Beans)则不保存会话状态,每个方法调用都是独立的。
5. 什么是实体Bean?答:实体Bean是EJB的一种类型,它代表数据库中的持久化数据。
实体Bean可以映射到数据库表,并且可以有关联、继承等关系。
6. 实体Bean有哪些类型?答:实体Bean有两种类型:- 容器管理的持久性(Container-Managed Persistence, CMP):由EJB容器管理实体Bean的持久性。
- Bean管理的持久性(Bean-Managed Persistence, BMP):由开发者在Bean的代码中管理实体Bean的持久性。
7. 什么是消息驱动Bean?答:消息驱动Bean是EJB的一种类型,它用于处理来自消息队列的消息。
EJB经典面试题
EJB经典面试题1:EJB:答: Enterprise Java Bean 相当于DCOM,即分布式组件。
它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问 (跨进程、跨计算机) 。
但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。
EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。
客户通过容器来访问真正的EJB组件。
答:Enterprise java bean 容器。
更具有行业领域特色。
他提供给运行在其中的组件EJB各种管理功能。
只要满足J2EE 规范的EJB放入该容器,马上就会被容器进行高效率的管理。
并且可以通过现成的接口来获得系统级别的服务。
例如邮件服务、事务管理。
2:EJB种类、作用答: Entity Bean——用于描述一个永久的对象。
Session Bean——描述任务或者工作流的模型,并且协调Bean之间的交互。
Message-Driver Bean——用在基于J2EE应用程序中处理异步JMS消息。
3:实体bean,CMP,BMP写法区别?答:CMP entity bean不需要在 bean中编写数据库操作的代码;可以让容器做这件事。
BMP entity bean在bean类中直接编写数据库调用,以及对固定存储的任意类型的访问,来管理bean的持久性。
4:主接口方法的定义与写法?答: 生命周期方法建方法-该方法的返回值是bean的组件接口,写法为creatXxx无状态session bean必须个且仅有一个无参的创建方法.有状态session bean必须含有至少一个创建方法.Entity bean可以有0至多个创建方法.Finder方法-Finder方法对于entity bean有效,通过它可以在数据库中查找到entity bean对应的持久性数据.每一个entity bean的home接口必须有一个findByPrimaryKey方法,并以实体的主键为参数.可以定制Finder方法.Home方法-Home方法也仅对entity bean有效.Home方法能够返回任意类型的序列化对象,但并不实际生成bean的实例.5:主接口与组件接口的区别?答: 主接口提供EJB客户端对bean的访问.定义了bean的生命周期方法,并提供了bean的基本生命周期管理功能,如创建,删除,查找.message drivern bean不含有home接口.组件接口是由enterprise bean的客户端用来取得bean的访问能力.它定义了对于客户端可见的业务方法.组件接口中的业务方法必须符合bean类中的实现.6:JMS消息传递的方式?答: 点到点(point-to-point)消息通过队列进行发送.发布与订阅(publish-and-subscribe,pub/sub)消息通过标题传递.7:事务属性ACID答:原子性——一个事务要么完全执行,要么根本不执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA工程师EJB面试题集()是的一部分,定义了一个用于开发基于的企业多重应用的标准。
其特点包括网络服务支持和核心开发工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)称为Java 企业柄,是Java的核心代码,分为整体柄和片段柄和柄三个部分,其中的消息柄将在以后再作讨论。
现在我们来看看什么是整体柄和片段柄。
整体柄是一种: 标准Java对象由创建它的程序创建,当程序终止时,对象也随之丢失,这就意味着当再次运行些程序时,将无法找到先前创建的柄,而整体柄会一直存在着直到它被删除。
一个程序可以创建一个整体柄,并且这个程序可以在被保存后随时停止和重启。
整体柄将会依然存在。
重启后,程序可以找到与之相对应的整体柄,并且会继续使用这个整体柄。
EJB实际上是SUN的J2EE中的一套规范,并且规定了一系列的用来实现把EJB概念转换成EJB产品.EJB是BEANS,BEANS是什么概念,那就是得有一个容纳她,让她可劲造腾的地方,就是得有容器.EJB必须生存在EJB容器中.这个容器可是功能强大之极!她首先要包装你BEAN,EJB的客户程序实际上从来就不和你编写的EJB直接打交道,他们之间是通过HOME/REMOTE接口来发生关系的.它负责你的BEAN的所有的吃喝拉萨睡,比如BEAN的持续化,安全性,事务管理...一.什么是EJB?一个技术规范:EJB 从技术上而言不是一种"产品"EJB 是一种标准描述了构建应用组件要解决的:可扩展(Scalable)分布式(Distributed)事务处理(Transactional)数据存储(Persistent)安全性(Secure)二.Sun 对EJB 的期望提供一个标准的分布的、基于的组件屏蔽复杂的系统级功能Write once, run anywhere与非Java 应用之间的互操作能力兼容标准三.为什么选择EJB?EJB 服务器完成"繁杂"的工作:应用开发人员关注于业务逻辑的实现而不是底层的实现机制(似于4GL 语言设计的目标)支持事务处理多个业务操作同时成功,或全部失败可以通过在代码外的描述来定义事务处理级别可扩展性EJB 可以根据您应用的增长而扩展EJB 服务器往往还提供了负载均衡和安全性:由EJB 服务器提供资源的访问权限控制四.EJB 架构为了满足架构的目标,规范中描述了服务器(Server)容器(Container)类() 和实例(Instance)Home 和Remote 接口()五. 简化的编程模型关注于业务逻辑实现:EJB 负责生命周期(lifecycle), 数据存储(persistence), 事务处理语义(transactional semantic), 安全(security), ...通用的编程模型:各种服务的高层APIJava 是其编程语言特点由一个EJB 容器在运行时创建和管理EJB在部署EJB 时定制其运行方式由EJB 容器和服务器来协调客户端的访问可以部署到任何兼容的EJB 容器中客户端对EJB 的是由Bean 开发人员决定的服务器管理EJB 容器(它管理Bean)提供对服务的存取提供Java 相关的服务,尤其是通过JNDI 访问命名空间基于OTS 的事务处理服务容器管理Bean 生命周期:将EJB 服务器提供的服务传递给Bean 生成代码来实现对Bean 的存取访问强制事务处理的限制创建、初始化和回收Bean管理持久数据的存储对客户端而言EJB 容器是透明的4.在一个EJB 服务器中的容器目前容器通常是由EJB 服务器本身提供的在EJB 或规范中没有定义容器-到-服务器的接口各厂商可以根据他们的见解来实现服务器和容器的各自责任5.容器提供服务: 数据存储容器决定何时载入/储存状态Container-Managed Persistence(容器管理存储/CMP)容器负责存储您的Bean容器生成必要的类和代码Bean-Managed Persistence(Bean 管理存储/BMP)Bean 开发人员提供存储代码开发人员决定如何存储, 容器仍然决定何时进行6.容器提供服务: 事务处理可以由容器代理来实现容器将得到业务逻辑方法的事务处理需求容器提供事务控制代码也可以由程序员通过代码实现7.容器提供服务: 其它服务其它服务包括命名(Naming)安全(Security)管理( management)这些服务由容器代理完成将减少应用开发人员的负担8.分布式对象运算远程对象被作为本地对象来处理:传递信息的方式不变,但开销更大Enterprise JavaBeans 永远运行在服务器上:对Bean 的访问永远是远程调用和Skeleton由EJB 生成:"Stub" 对要传递出去的信息编码"Tie/Skel" 将接受到的信息解码并传递给目标对象10.分类: Enterprise s+---Entity Beans--CMP/BMPEjb--|+---Session Beans--Stateful/Stateless会话Bean (Session Bean):根据EJB 规范,一个会话Bean 是:代表单个客户端来执行可以参与到事务处理中不直接代表共享于中的数据,但它能访问和更新这些数据相对而言是短暂存在的当EJB 容器失效后就不存在---客户端需要重新建立一个信新的会话对象来继续运算实体Bean (Entity Bean):根据EJB 规范,一个实体Bean 是:提供在数据库中数据的对象视图允许被多个用户共享存取访问可以是长期存在(只要它存在于数据库中)实体Bean, 它的主键对象, 以及它的远程引用将能跨EJB 容器的宕机而存在类和实例构建EJB 应用包括来自三方的代码开发人员编写的代码由EJB API 定义的类和接口由容器自动生成的代码开发人员编写的代码包括Bean 类(定义了业务逻辑)Home 接口(如何查找或创建bean)Remote 接口(如何存取bean)其它组件,根据bean 实际要求Home 接口每个bean 有一个用于:创建新的bean 实例、查找现存的bean (只能是实体bean)Remote 接口:定义bean 的公共接口---只有在Remote 接口中定义的方法才能被客户端访问EJB 客户端可以为, JSP, 应用程序或其它bean通过JNDI 来查找EJB home 接口,步骤为:创建一个JNDI Context (initial context)使用JNDI Context 来查找bean home 接口使用bean home 接口来创建/查找bean 实例使用bean 实例完成业务操作实际的存取(对EJB) 是通过容器生成的类来完成EJB 架构客户端对bean 访问永远不是直接的EJBObject (tie) 是由容器自身提供的:用来帮助管理bean 的生命周期EJB 中的角色EJB 服务器供应商: 开发并销售EJB 服务器EJB 容器供应商: 开发并销售EJB 容器Enterprise bean 开发人员: 开发并销售EJB应用组装人员: 将不同的EJB 搭建成应用六、EJB的目前,EJB最新的标准是,规范正在讨论中,预计将于明年推出。
定义了三种企业Bean,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。
每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。
Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity 对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
MessageDriven Bean是中引入的新的企业Bean,它基于消息,只能接收客户端发送的JMS消息然后处理。
MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。
这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
调用一个EJB组件要比调用一个JavaBean麻烦些,由于EJB组件可以分布在多台服务器上,因此必须首先获得远程或本地Home接口,然后使用Home接口创建EJB之后就可以调用EJB的方法了。
七、EJB常见EJB设计SESsion Facade通常项目中,客户端往往需要频繁的对服务器端数据进行操作。
当采用实体EJB作为数据的抽象层时,如果直接让客户端程序与实体EJB交互,会产生实现一个业务需求便需要大量的EJB属性操作(如下图1)。
这直接导致如下问题:网络负载大(远程客户端时)、并发性能低、客户端与服务器端关联度大、可重用性和可维护性差、性能因此有必要在客户端与实体EJB层间加入Session EJB层,在Sessino EJB中实现商业逻辑并封装对实体EJB的操作。
(如下图2)图1:客户端直接与实体EJB交互图2:通过SessionEJB层实现Session Facade模式的好处是:降低了网络负载,SessionEjb可以调用实体EJB的本地接口;将商业逻辑与商业数据隔离;维护与开发方便;显著提高性能。
Session Facade模式因其简单使用,是目前使用很广的模式。
但具体应用过程中应注意:避免将所有的操作封装到一个很大的SessionEJB内;服务器端数据结构应由实体EJB实现,除非特例否则避免直接的数据库操作;SessionEjb内某些系统通用操作的代码容易重复(比如权限检查等,解决办法是将系统通用服务封装在Java Class内)。
MesSAge Facade Pattern很多时候,一次RequeST需要操作多个EJB又不需要得到即时返回。
对这种异步调用,通常应用Message Fa?ade Pattern.这种时候,如采用Session Fa?ade Pattern存在如下问题:1. 客户端等待返回的时间过长。
一个SessionEjb的实例在完成客户请求过程中中涉及到的每一次对其他实体Ejb的调用过程中都会被锁定直到得到实体EJB返回信息后才能进行下一步操作。