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(()方法负责把之ID那个对象重新绑定到一个新的远程对象.如果那个名称已经绑定过了,先前的绑定会被替换掉.

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安全管理器(RMISecurityManger)的目的是什么?

参考答案:

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

89.解释下Marshaaling和demarshaling.

参考答案:

当应用程序希望吧内存对象跨网络传递到另一台主机或者是持久化到存储的时候,就必须要把对象在内存里面的表示转化成合适的格式.这个过程就叫做Marshalling,反制就是demarshalling.

90.解释下Serialization和Deserialization.

参考答案:

Java提供了一种叫做对象序列化的机制,它把对象表示成一连串的字节,里面包含了对象的数据,对象的类型信息,对象内部的数据的类型信息等等.因此,序列化可以看做是为了把对象存储在磁盘上或者是从磁盘上读出来并重建对象而把对象扁平化的一种方式,反序列化是吧对象从扁平状态转化成活动对象的相反的步骤.

91.什么事Servlet?

参考答案:

`    Servlet是用来处理客户端请求并产生动态网页内容的Java类.Servlet主要是用来处理或者是存储HTML表单提交的数据,产生动态内容,在无状态的HTTP协议下管理状态信息.

92.说一下Servlet的体系结构.

参考答案:

所有的Servlet都必须要实现的核心接口时javax,servlet.Servlet.每一个Servlet都必须要直接或者是间接的实现这个接口,或者是继承javax.servlet.GenericServlet或者是javax.servlet.HTTPServlet.最后,Servlet使用多线程可以并行的多个请求服务.

93.Applet和Servlet有什么区别?

参考答案:

`    Applet是运行在客户端主机的浏览器上的客户端Java程序.而Servlet是运行在Web服务器上的服务端的组件.applet可以使用用户界面类,而Servlet没有用户界面,想法,Servlet是等待客户端的HTTP请求,然后为请求产生响应.

94.GenericServlet和HttpServlet有什么区别?

参考答案:

GenericServlet类实现了Servlet和ServletConfig接口.实现了除了service()之外的其他方法,在创建Servlet对象时,可以继承GenericServlet类来简化程序代码,但需要实现service()方法.

HttpServlet类继承了GenericServlet类,为实际开发中大多数Servlet处理HTTP请求的应用灵活的方法.

95.解释下Servlet的生命周期.

参考答案:

`对每一个客户端的请求,Servlet引擎载入Servlet,调用它的init()方法,完成Servlet初始化,然后,Servlet对象通过每一个请求单独调用service()方法来处理所有随后来自客户端的请求,最后,调用Servlet的destory()方法把Servlet删除掉.

96.doGet()方法和doPost()方法有什么区别?

参考答案:

doGet:GET方法会吧名称对追加在请求URL后面.因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目.并且请求中的参数值是可见,因此,敏感信息不能用这种方式传递.

`    doPost:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送参数的数目是没有限制的.最后,通过POST请求传递的敏感信息对外部客户端是不可见的.

97.什么是Web应用程序?

参考答案:

Web应用程序是对web或者是应用服务器的动态扩展,有两种类型的Web应用:面向表现的和面向服务的.面向表现的WEB应用程序会产生包含了很多中标记语言和动态内容的交互的web页面作为对请求的响应.而面向服务的web应用实现了web服务的短点.一般来说,一个web应用可以看成是一组安装在服务端URL名称空间的特定子集下面的Servlet的集合.

98.什么是服务端包含(Server Side Include)?

参考答案:

服务端包含(SSI)是一种简单的解释型服务端脚本语言,大多数时候仅用在web上,用servlet标签嵌入进来.SSI最常用的情景把一个或者多个文件包含到web服务器的一个web页面中.当浏览器访问web页面的时候,web服务器会用对应的Servlet产生的文本来替换web页面中的servlet.

99.什么是Servlet链(Servlet Chainning)?

参考答案:

`    Servlet链是把一个Servlet的输出发送给另一个Servlet的方法,第二个Servlet的输出可以发送给第三个Servlet,以此类推.链条上最后一个Servlet负责把响应发送给客户端.

100.如何知道是那一个客户端的机器正在请求你的Servlet?

参考答案:

ServletRequest类可以找出客户端机器的IP地址或者是主机名.getRemoteAddr()方法获取客户端主机的IP地址,getRemoteHost()可以获取主机名.

Java常考面试题整理(五)的更多相关文章

  1. Java常考面试题整理(四)

    有关所有Swing相关的面试题,都可以说是凑数的,感觉自己在敲这些的时候感觉一点用处都没有,可以从第72条开始看. 61.说出三种支持重绘(painting)的组件. 参考答案: Canvas,Fra ...

  2. Java常考面试题整理(六)

    101.HTTP相应的结构是怎么样的? 参考答案: HTTP相应由三个部分组成: 1.状态码(status code):描述了相应的状态,可以用来检查是否成功的完成了请求.请求失败的情况下,状态码可以 ...

  3. Java常考面试题整理(三)

    明天又要去面试,Good luck to me.,让我在这段时间换个新的工作吧. 41.在Java中,对象什么时候可以被垃圾回收? 参考答案: 当对象对当前使用这个对象的应用程序变得不可触及的时候,这 ...

  4. Java常考面试题整理(二)

    21.Iterator和ListIterator的区别是什么? 参考答案: 下面列出了他们的区别: Iterator可以用来遍历Set和List集合,但是ListIterator只能用来遍历List. ...

  5. Java常考面试题整理(一)

    1.什么是java虚拟机?为什么java被称作是"平台无关的编程语言". 参考答案: java虚拟级是一个可以执行java字节码的虚拟机进程,java源文件被编译成能被java虚拟 ...

  6. Java常考面试题

    Java常考面试题 1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行 ...

  7. Java常考面试题(五)

    序言 好好努力. ---WH 一.Iterator和ListIterator的区别是什么? 自我解答: Iterator是针对所有collection来使用的,而看名字ListIterator,顾名思 ...

  8. Java常考面试题(二)

    序言 昨天刚开始的”每日5题面试“这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看做过的面试题,试着用 ...

  9. Java常考面试题(二)(转)

    序言 昨天刚开始的"每日5题面试"这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看 ...

随机推荐

  1. redis 学习(12)-- redis 发布订阅

    redis 发布订阅 发布订阅模式中的角色 发布者(publisher) 订阅者(subscriber) 频道(channel) 如图所示: 发布者发布消息到频道,订阅了频道的订阅者可以收到消息,订阅 ...

  2. mongo分布式锁Java实现

    一.分布式锁使用场景: 代码部署在多台服务器上,即分布式部署. 多个进程同步访问一个共享资源. 二.需要的技术: 数据库:mongo java:mongo操作插件类 MongoTemplate(mav ...

  3. 爬取快代理的免费IP并测试

    各大免费IP的网站的反爬手段往往是封掉在一定时间内访问过于频繁的IP,因此在爬取的时候需要设定一定的时间间隔,不过说实话,免费代理很多时候基本都不能用,可能一千个下来只有十几个可以用,而且几分钟之后估 ...

  4. shell中数字大小的比较

    [整数之间的比较] 示例脚本: #!/bin/bash if [ $1 -gt $2 ] then echo "参数$1大于参数$2" else echo "参数$1小于 ...

  5. python-嵌套函数

    python-嵌套函数 定义:在函数体内用def定义一个函数,它的作用域只在该函数体内有效. def outside(): print("int the outside") def ...

  6. Runtime.getRuntime.exec()执行linux脚本导致程序卡死问题

    rumtime程序执行中出现卡住,执行成果达不到预期的标准.查看输出流以及错误流程是否内存占满了.开两个线程来运行输出流程和错误流程. rumtime运行windows脚本执行是要添加执行环境 cmd ...

  7. IList,List<T>转换为DataTable 常用收藏

    List<info> infos = Dal.GetInfos(); DataTable dt = new DataTable(); dt.Columns.Add("cName& ...

  8. ftp上传下载功能实现

    该程序分为客户端和服务端,目前已经实现以下功能: 1. 多用户同时登陆 2. 用户登陆,加密认证 3. 上传/下载文件,保证文件一致性 4. 传输过程中现实进度条 5. 不同用户家目录不同,且只能访问 ...

  9. 标准C语言(2)

    字符类型名称是char,这个类型里一共包含256个不同的整数,每个整数代表一个字符(例如'a', '&'等),这些整数和字符可以互相替代,ASCII码表记录了所有整数和字符之间的对应关系 'a ...

  10. 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)

    链接:https://ac.nowcoder.com/acm/contest/894/C 来源:牛客网 华华跟奕奕玩游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...