115个Java面试题和答案——终极(下)

81.RMI中的远程接口(Remote Interface)扮演了什么样的角色?

 

远程接口用来标识哪些方法是可以被非本地虚拟机调用的接口。远程对象必须要直接或者是间接实现远程接口。实现了远程接口的类应该声明被实现的远程接口,给每一个远程对象定义构造函数,给所有远程接口的方法提供实现。

 

82.java.rmi.Naming类扮演了什么样的角色?

 

java.rmi.Naming类用来存储和获取在远程对象注册表里面的远程对象的引用。Naming类的每一个方法接收一个URL格式的String对象作为它的参数。

 

83.RMI的绑定(Binding)是什么意思?

 

绑定是为了查询找远程对象而给远程对象关联或者是注册以后会用到的名称的过程。远程对象可以使用Naming类的bind()或者rebind()方法跟名称相关联。

 

84.Naming类的bind()和rebind()方法有什么区别?

 

bind()方法负责把指定名称绑定给远程对象,rebind()方法负责把指定名称重新绑定到一个新的远程对象。如果那个名称已经绑定过了,先前的绑定会被替换掉。

 

85.让RMI程序能正确运行有哪些步骤?

 

为了让RMI程序能正确运行必须要包含以下几个步骤:

 

编译所有的源文件。

使用rmic生成stub。

启动rmiregistry。

启动RMI服务器。

运行客户端程序。

 

86.RMI的stub扮演了什么样的角色?

 

远程对象的stub扮演了远程对象的代表或者代理的角色。调用者在本地stub上调用方法,它负责在远程对象上执行方法。当stub的方法被调用的时候,会经历以下几个步骤:

 

初始化到包含了远程对象的JVM的连接。

序列化参数到远程的JVM。

等待方法调用和执行的结果。

反序列化返回的值或者是方法没有执行成功情况下的异常。

把值返回给调用者。

 

87.什么是分布式垃圾回收(DGC)?它是如何工作的?

 

DGC叫做分布式垃圾回收。RMI使用DGC来做自动垃圾回收。因为RMI包含了跨虚拟机的远程对象的引用,垃圾回收是很困难的。DGC使用引用计数算法来给远程对象提供自动内存管理。

 

88.RMI中使用RMI安全管理器(RMISecurityManager)的目的是什么?

 

RMISecurityManager使用下载好的代码提供可被RMI应用程序使用的安全管理器。如果没有设置安全管理器,RMI的类加载器就不会从远程下载任何的类。

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

你可能感兴趣的:(Java)