Java常考面试题整理(六)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31840023/article/details/80188988

101.HTTP相应的结构是怎么样的?

参考答案:

    HTTP相应由三个部分组成:

    1.状态码(status code):描述了相应的状态,可以用来检查是否成功的完成了请求.请求失败的情况下,状态码可以用来找出失败的原因.如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK.

    2.HTTP头部(HTTP Header):它们包含了更多关于响应的信息.比如:头部可以指定认为响应过期的过期日期,或者是指定用来给用户安全的传输实体内容的编码格式.

    3.主题(Body):它包含了相应的内容.他可以包含HTML代码,图片.等等.主题是由传输在HTTP消息中紧跟在头部后面的数据字节组成的.

102.什么是cookie?session和cookie有什么区别?

参考答案:

    cookie是web服务器发送给浏览器的一块信息.浏览器会在本地文件中给每一个web服务器存储cookie.以后浏览器在给特定的web服务器发请求的时候,同时会发送所有为该服务器存储你cookie,下面列出session和cookie的区别:

    无论客户端浏览器做怎么样的设置,session都应该能正常工作.客户端可以选择禁用cookie,但是,session仍然是能够工作的,因为客户端无法替用服务端的session.

    在存储的数据量方面session和cookies也是不一样的,session能够存储任意的java对象,cookie只能存储String类型的对象.

扫描二维码关注公众号,回复: 5014477 查看本文章

103.浏览器和Servlet通信使用的是什么协议?

参考答案:

    浏览器和Servlet通信使用的是HTTP协议.

104.什么事HTTP隧道?

参考答案:

    HTTP隧道是一种利用HTTP或者是HTTPS把多种网络协议封装起来进行通信的技术.因此,HTTP协议扮演了一个打通用于通信的网络协议的管道的包装器角色.把其他协议的请求掩盖称HTTP的请求是HTTP隧道.

105.sendRedirect()和forward()方法有什么区别?

参考答案:

sendRedirect()方法会创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上.重定向(redirect)以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwardding)以后,之前请求作用域范围以内的独享还是能访问的.一般认为sendRedirect()比forwar()要慢.

106.什么事URL编码和URL解码?

参考答案:

    URL编码是负责把URL里面的空格和其他的特殊字符替换成对应的十六进制表示,反之就是解码.

107.什么事JSP页面?

参考答案:

    JSP页面是一种包含了静态数据和JSP元素两种类型文本的文本文档.静态数据可以用任何基于文本的格式来表示,比如:HTML或者XML.JSP是一种混合了静态内容和动态产生的内容的技术.

108.JSP请求是如何被处理?

参考答案:

    浏览器首先要请求一个以JSP扩展名即为的页面,发起JSP请求,然后,Web服务器读取这个请求,使用JSP编译器把JSP转化成一个Servlet类.需要注意的是,只有当第一次请求页面或者是JSP文件发生改变的时候JSP文件才会被编译,然而服务器调用servlet类,处理浏览器的请求,一旦请求执行结束,Servlet会把相应发送给客户端.

109.JSP有什么优点?

参考答案:

    下面列出了使用JSP的有点:

    JSP页面是被动态编译成Servlet的,因此,开发者可以很容易的更新展现代码.

    JSP页面可以被预编译.

    JSP页面可以很容易的和静态模块结合,包括:HTML或者XML.也可以很容易的和产生动态内容的代码结合结合起来.

    开发者可以提供让页面设计者以类XML格式来访问的自定义的JSP标签库.

    开发者可以在组件层做逻辑上的改变,而不需要编辑单独使用了应用逻辑的页面.

110.什么是JSP指令(Directive)?JSP中有哪些不同类型的指令?

参考答案:

    Driective是当JSP页面被编译成Servlet的时候,JSP引擎要处理的指令.Directive用来设置页面级别的指令.从外部文件插入数据,指定自定义的标签库.Directive是定义在<%@和%>之间的.下面列出了不同类型的Directive:

        包含指令(include Directive):用来包含文件和合并文件内容到当前的页面.

        页面指令(page directive):用来定义JSP页面的特定属性,比如错误页面和缓冲区.

        Taglib指令:用来声明页面中使用的自定义标签库.

111.什么是JSP动作(JSP action)?

参考答案:

    JSP动作以XML语法的结构来控制Servlet引擎的行为.当JSP页面被请求的时候,JSP动作会被执行.它们可以被动态的插入到文件中.重用JavaBean组件,转发用户到其他的页面,或者是给Java插件差生HTML代码,下面列出了可用的动作:

    jsp;include-当JSP页面被请求的时候包含一个文件

    jsp:useBean-找出或者是初始化JavaBean.

    jsp:setProperty-设置javaBean属性.

    jsp:getProperty-获取JavaBean属性.

    jsp:forward-把请求转发到新的页面

    jsp:plugin-产生特定浏览器代码.

112.什么事Scriptlets?

参考答案:

    JSP技术中,scriptlet是嵌入在JSP页面种的一段Java代码.scriptlet是位于标签内部的所有的东西,在标签与标签之间,用户可以添加任意有效的scriptlet.

113.声明(Decalaration)在哪里?

参考答案:

    声明跟Java中的变量声明很相似,它用来声明随后要被表达式或者scriptlet使用的变量.添加的声明必须要用开始和结束标签包起来.

114.什么是表达式(Expression)?

参考答案:

    JSP表达式是web服务器把脚本语言表达式的值转化成一个String对象,插入到返回给客户端的数据中,表达式是在<%=和%>这两个标签之间定义的.

115.隐含对象是什么意思?有哪些隐含对象?

参考答案:

    JSP隐含对象是页面的一些Java对象,JSP容器让这些Java对象可以为开发者所使用.开发者不用明确的声明就可以直接使用他们,JSP隐含对象也叫做预定义变量,下面列出了JSP页面中隐含对象:

    application,page,request,response,session,exception.out,config,pageContext

116.面向对象软件开发的优点有哪些?

参考答案:

    代码开发模块化,更易维护和修改.

    代码复用. 

    增强代码的可靠性和灵活性.    

    增加代码的可理解性.

    面向对象编程有很多重要的特性,比如;继承封装多态和抽象.

117.封装的定义和好处有哪些?

参考答案:

    封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在Java当中,有3种修饰符:public,private和protected。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。
下面列出了使用封装的一些好处:
通过隐藏对象的属性来保护对象内部的状态。
提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
禁止对象之间的不良交互提高模块化。

参考这个文档获取更多关于封装的细节和示例。
或:

一是用private把类的细节与外界隔离起来,从而实现数据项和方法的隐藏,而要访问这些数据项和方法唯一的途径就是通过类本身,类才有资格调用它所拥有的资源(方法,数据项属性等等)。所以第一个好处就是数据的安全性提高了。

二是通过隐藏隔离,只允许外部对类做有限的访问,开发者可以自由的改变类的内部实现,而无需修改使用该类的那些程序。只要那些在类外部就能被调用的方法保持其外部特征不变,内部代码就可以自由改变,各取所需,利于分工。

三就是提高了代码的重用性,封装成工具类以后能够减少很多繁琐的步骤。

118.多态的定义?

参考答案:

    多态是编程语言给不同的底层数据类型做相同接口展示的一种能力,一个多态类型上的操作可以应用到其它类型的值上面.

119.继承的定义?

参考答案:

    继承给对象提供了从基类获取字段和方法的能力.继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加特性.

120.抽象的定义?抽象和封装的不同点?

参考答案:

    抽象把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类.Java支持创建只暴漏接口而不包含方法实现的抽象的类.这种抽象技术的主要目的是把类的行为和实现细节分离开.    

    抽象和封装是互补的概念.一方面,抽象关注对象的行为,另一方面,封装关注对象行为的细节.一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略.

猜你喜欢

转载自blog.csdn.net/qq_31840023/article/details/80188988