79.RMI 体系结构的基本原则是什么?
RMI 体系结构是基于一个非常重要的行为定义和行为实现相分离的原则。RMI 允许定义
行为的代码和实现行为的代码相分离,并且运行在不同的 JVM 上。 80.RMI 体系结构分哪几层? RMI 体系结构分以下几层:
存根和骨架层(Stub and Skeleton layer):这一层对程序员是透明的,它主要负责拦
截客户端发出的方法调用请求,然后把请求重定向给远程的 RMI 服务。 远程引用层(Remote Reference Layer):RMI 体系结构的第二层用来解析客户端对服务
端远程对象的引用。这一层解析并管理客户端对服务端远程对象的引用。连接是点到点的。
传输层(Transport layer):这一层负责连接参与服务的两个 JVM。这一层是建立在网
络上机器间的 TCP/IP 连接之上的。它提供了基本的连接服务,还有一些防火墙穿透策略。
81.RMI 中的远程接口(Remote Interface)扮演了什么样的角色?
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
远程接口用来标识哪些方法是可以被非本地虚拟机调用的接口。远程对象必须要直接或
者是间接实现远程接口。实现了远程接口的类应该声明被实现的远程接口,给每一个远程对
象定义构造函数,给所有远程接口的方法提供实现。 82.java.rmi.Naming 类扮演了什么样的角色?
java.rmi.Naming 类用来存储和获取在远程对象注册表里面的远程对象的引用。Naming
类的每一个方法接收一个 URL 格式的 String 对象作为它的参数。 83.RMI 的绑定(Binding)是什么意思?
绑定是为了查询找远程对象而给远程对象关联或者是注册以后会用到的名称的过程。远
程对象可以使用 Naming 类的 bind()或者 rebind()方法跟名称相关联。 84.Naming 类的 bind()和 rebind()方法有什么区别?
bind()方法负责把指定名称绑定给远程对象,rebind()方法负责把指定名称重新绑定到
一个新的远程对象。如果那个名称已经绑定过了,先前的绑定会被替换掉。 85.让 RMI 程序能正确运行有哪些步骤?
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 为了让 RMI 程序能正确运行必须要包含以下几个步骤: 编译所有的源文件。 使用 rmic 生成 stub。 启动 rmiregistry。 启动 RMI 服务器。 运行客户端程序。
86.RMI 的 stub 扮演了什么样的角色?
远程对象的 stub 扮演了远程对象的代表或者代理的角色。调用者在本地 stub 上调用方
法,它负责在远程对象上执行方法。当 stub 的方法被调用的时候,会经历以下几个步骤:
初始化到包含了远程对象的 JVM 的连接。 序列化参数到远程的 JVM。 等待方法调用和执行的结果。
反序列化返回的值或者是方法没有执行成功情况下的异常。
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
把值返回给调用者。
87.什么是分布式垃圾回收(DGC)?它是如何工作的?
DGC 叫做分布式垃圾回收。RMI 使用 DGC 来做自动垃圾回收。因为 RMI 包含了跨虚拟机
的远程对象的引用,垃圾回收是很困难的。DGC 使用引用计数算法来给远程对象提供自动内
存管理。
88.RMI 中使用 RMI 安全管理器(RMISecurityManager)的目的是什么?
RMISecurityManager 使用下载好的代码提供可被 RMI 应用程序使用的安全管理器。如
果没有设置安全管理器,RMI 的类加载器就不会从远程下载任何的类。 89.解释下 Marshalling 和 demarshalling。
当应用程序希望把内存对象跨网络传递到另一台主机或者是持久化到存储的时候,就必
须要把对象在内存里面的表示转化成合适的格式。这个过程就叫做 Marshalling,反之就是
demarshalling。
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
90.解释下 Serialization 和 Deserialization。
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 Java 提供了一种叫做对象序列化的机制,他把对象表示成一连串的字节,里面包含了
对象的数据,对象的类型信息,对象内部的数据的类型信息等等。因 此,序列化可以看成
是为了把对象存储在磁盘上或者是从磁盘上读出来并重建对象而把对象扁平化的一种方式。
反序列化是把对象从扁平状态转化成活动对象的相反 的步骤。 Servlet
91.什么是 Servlet?
Servlet 是用来处理客户端请求并产生动态网页内容的 Java 类。Servlet 主要是用来处
理或者是存储 HTML 表单提交的数据,产生动态内容,在无状态的 HTTP 协议下管理状态信息。
92.说一下 Servlet 的体系结构。
所有的Servlet都必须要实现的核心的接口是javax.servlet.Servlet。每一个Servlet
黑马程序员免费视频库:http://yun.itheima.com?2020sxkyk
【黑马程序员】2020年Java面试题(下)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)