Java面试每日十题(十)

版权声明:欢迎来玩呀~ https://blog.csdn.net/Javaxiaobaismc/article/details/82902322

91、用Java写一个折半查找。

答:折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组已经为空,则表示找不到指定的元素。这种搜索算法每一次比较都使搜索范围缩小一半,其时间复杂度是O(logN)。

 


92、阐述Servlet和CGI的区别?

答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。

 


93、Servlet接口中有哪些方法?

答:Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关: 
- void init(ServletConfig config) throws ServletException 
- void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException 
- void destory() 
- java.lang.String getServletInfo() 
- ServletConfig getServletConfig()

Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化;请求到达时调用Servlet的service()方法,service()方法会根据需要调用与请求对应的doGet或doPost等方法;当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet的destroy()方法。

 


94、转发(forward)和重定向(redirect)的区别?

答:1、 请求转发request封装的对象是可以取到的,而重定向是取不到request封装的属性。

2、 url地址:请求转发是服务器请求资源,服务器把请求url的响应内容读取过来,url不变。重定向是服务端根据url,(响应数据、跳转页面),url改变。

3、 请求转发的path只能是当前项目中的path,而重定向location可以是项目外的地址。

4、 请求转发到servlet中,和先前的请求方式有关,dopost到servlet中,servlet中的dopost执行,doget请求到servlet中,servlet中的doget执行。重定向到servlet中,都是doget执行。

5、forward更高效。

 

 

95、JSP有哪些内置对象?作用分别是什么?

答:JSP共有以下9种基本内置组件

1、request对象 客户端请求,此请求会包含来自GET/POST请求的参数通过它才能了解到客户的需求,然后做出响应。

2、response对象 响应客户请求的有关信息

3、session对象 它指的是客户端与服务器的一次会话,从客户端连到服务器的一个 WebApplication开始,直到客户端与服务       器断开连接为止。

4、out对象   它是JspWriter类的实例,是向客户端输出内容常用的对象

5、page对象   它是指向当前JSP页面本身,有点象类中的this指针,它是 java.lang.Object类的实例

6、application对象 它实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭

7、exception对象 它是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。

8、pageContext对象 它提供了对JSP页面内所有的对象及名字空间的访问

9、config对象 它是在一个Servlet初始化时,JSP引擎向它传递信息用的

 


96、get和post请求的区别?

答:1.get和post都是http协议中的一种请求方式,不同的请求方式有不同的特点,工作模式也不一样。

2.get请求没有请求正文部分,而post有,所以get方式不能使用正文提交数据,但是可以使用queryString的方式来提交,注意:queryString是url的一部分,和请求方式无关,所以不论是什么请求方式都是可以有queryString的,需要再次注意的是,queryString的长度(url的长度)是有限制的,所以如果请求方式是get,那么通过queryString提交的数据的话,注意长度不要超出url的长度限制范围,(范围:2000多个,不同浏览器的url长度限制不一样,标准浏览器一般要再多点)

3.使用queryString方式传输数据的时候需要对传输的数据进行转码(url编码)-encodeURI()

4.使用http的正文发送(post),那么是通过send方法把数据添加到正文中,同时还需要设置发送头信息,设置content-type的类型,这个类型必须和后端的解析类型保持一致,当数头信息设置成application/x-www-form-urlencoded的时候,不需要手动进行编码

5.get方式会缓存页面,需要通过随机数或时间戳解决缓存问题,而post不会缓存所以没有该问题

6.因为get方式会缓存,同时缓存文件名中有提交的数据,所以get方式传递数据有一定隐私安全上的隐患,所以敏感数据通过post提交.

 


97、常用的Web服务器有哪些?

答:Web服务器,也称为WWW(WORLD WIDE WEB)服务器,HTTP服务器,主要功能是提供网上信息浏览的服务。  Unix和Linux下,常用的Web服务器有Apache、Nginx、Lighttpd、Tomcat、IBM WebSphere等,应用最广泛的是Apache。Windows下最常用的是微软公司的IIS(Internet Information Server)。

 

 

98、JSP和Servlet是什么关系?

答:1.JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
2.JSP编译后是"类servlet"。
3.Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

 


99、讲解JSP中的四种作用域。

答:JSP中的四种作用域包括page、request、session和application,具体来说:
- page代表与一个页面相关的对象和属性。
- request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。
- session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。
- application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

 


100、如何实现JSP或Servlet的单线程模式?

答:对于JSP页面,可以通过page指令进行设置。

<%@page isThreadSafe=”false”%>

对于Servlet,可以让自定义的Servlet实现SingleThreadModel标识接口。

说明:如果将JSP或Servlet设置成单线程工作模式,会导致每个请求创建一个Servlet实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。

猜你喜欢

转载自blog.csdn.net/Javaxiaobaismc/article/details/82902322