博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web面试题整理
阅读量:3906 次
发布时间:2019-05-23

本文共 5193 字,大约阅读时间需要 17 分钟。

目录

 

■​​​​​​​ 谈谈你对http协议的理解,http 常见的状态码有哪些

1. http:超文本传输协议,是无状态协议,对于事务处理没有记忆能力。也就是说,当客户端一次http请求完成后,客户端再发送一次http请求,http并不知道当前客户端是一个“老用户”。使用cookie来解决无状态问题。

2. 常见的http方法有

       GET:通过URL传参给服务器

        POST:用于传输信息给服务器

        PUT:传输文件,保存到对应URI位置

        DELETE:删除文件,删除对应URI位置的文件

        HEAD:获得报头首部,一般用于验证URI是否有效

        OPTIONS:查询相应URI支持的http方法

        当然也不是绝对的,比如可以使用POST新增数据,PUT修改数据,GET获取数据,DELETE删除数据

3. 一次完整的http流程(7个步骤)

1) 建立TCP连接

2) web浏览器向web服务器发送请求行

       一旦建立了TCP连接,web浏览器就会向web服务器发送请求命令

        如:GET/sample/hello.jsp

3) web浏览器发送请求头

       浏览器发送其请求命令后,还要以头信息的形式向web服务器发送一些别的信息,之后浏览器发送一空白行来通知服务器,它已经结束了该头信息的发送。

4) web服务器应答

       应答的第一部分是协议的版本号和应答状态码

5) web服务器发送应答头

       正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据。

       web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息发送到此结束。

6) web服务器向浏览器发送数据

       接着,它就以Cotent-Type应答头信息所描述的格式发送用户所请求的实际数据。

7) web服务器关闭TCP连接

4. URIURL

URI:统一资源标识符,用来唯一的标识一个资源

URL:统一资源定位符,是一种具体的URI。即URL可以用来标识一个资源,而且还指明如何定位这个资源

5. 常见的http相应状态码

200:请求被正常处理

400:请求报文语法有错,服务器无法识别

404:服务器无法找到对应资源

500:服务器内部错误

301:永久重定向

302:临时重定向

 

1XX系列:代表请求已被接受,需要继续处理;

2XX系列:代表请求已成功被服务器接收、理解并接受;

3XX系列:用来重定向;

4XX系列:表示请求错误;

5XX系列:代表服务器在处理请求过程中有错误或者异常发生。

 

■​​​​​​​ GET 和 POST 的区别

 

GET

POST

请求参数的位置上

请求参数放在URL地址后面,以?的形式进行拼接

请求参数放在http请求包中

数据携带上

在URL地址后附带的参数是有限的,其数据容量通常不能超过1k

在请求的实体内容中向服务器发送数据,传输的数据量无限制

用途上

一般用来获取数据

一般用来提交数据

传输的数据类型

只能传输字符串类型

可以传输各种类型的数据,包括对象

速度

GET方式比POST方式快

 

 

■​​​​​​​ http 中重定向和请求转发的区别

 

重定向:redirect

请求转发:forward

用法不同

Response.sendRedirect(“地址”)

Request.getRequestDispatcher(“地址”).forward(request,respose);

发送位置不同

发生在浏览器

发生在服务器,转发对浏览器透明,浏览器不知道转发的动作

地址栏

变化

不变

速度

跳转的时间不同

整个页面执行完之后才执行跳转

执行跳转语句时就会立即跳转

是否是同一个请求

否,request域对象无效

能够去往的URL的范围不一样

是服务器跳转,可以去往任何资源

必须在同一台服务器下完成

传输的数据类型不同

只能传递字符串

可以传输各种类型的数据,包括对象

 

■​​​​​​​ Cookie 和 Session
区别

 

Cookie

Session

从存储方式上

只能存储字符串,如果要存储非ASCII字符串还要对其编码

可以存储任何类型的数据,可以把session看作是一个容器

从隐私安全上

cookie存储在浏览器中,对客户端是可见的。信息容易泄露出去,如果使用cookie,最好将其加密

session存储在服务器上,对客户端是透明的。不存在敏感信息泄露问题

从有效期上比较

保存在硬盘中,只要设置maxAge属性为比较大的正整数,即使关闭浏览器,cookie仍然存在

保存在服务器,设置maxInactiveInterval属性值来确定session的有效期。并且session依赖名为JSESSIONID的cookie,该cookie默认的maxAge属性为-1,如果关闭浏览器,session失效

从对服务器的负担比较

不占用服务器资源

像baidu,Sina这样大型的网站,一般使用cookie进行会话跟踪

每个用户都会产生一个session,当很多用户并发访问时,会消耗大量内存

从浏览器的支持上比较

如果浏览器禁用了cookie,那么cookie就是无用的了

如果浏览器禁用了cookie,session可以通过URL地址重写来进行会跟踪

从跨域名上比较

可以设置domin属性来实现跨域名,Servlet中通过setDomain()设置

只在当前域名内有效

大小限制

Cookie最多有50个,一个Cookie 4kb

 

 

■​​​​​​​ 什么是 jsp?什么是 Servlet?jsp 和 Servlet 有什么区别?

1. jsp:全称为java server pages,是一种动态网页开发技术

它使用JSP标签在HTML网页中插入Java代码,标签通常以<%开始%>结束;

Jsp本质上是一个servlet,jsp编译时,会首先编译成servlet文件,然后编译成class文件。

包含9大内置对象,4大域对象

       内置对象:request,response,session,application,page,pageContext,config,exception,out

       作用域:request,session,application,pageContext

2. Servlet:是一个web容器,是一种独立于平台和协议的服务端的java技术,可以动态生成web页面

Servelt生命周期

       1)加载servlet

              当tomcat第一次访问servlet的时候,tomcat会负责创建servlet实例

       2)初始化

              当servlet被实例化后,tomcat会调用init()方法初始化这个对象,只会初始化一次

       3)处理服务

              当浏览器访问servlet的时候,调用service()方法处理请求

       4)销毁

              释放servlet所占的资源,销毁方式有:手动销毁和关闭服务器销毁

3. 区别

        JSP是servlet技术的扩展,本质上就是servlet的简易方式

        最大的不同点在于

                Servlet的应用逻辑在java文件中,并且完全从表示层中的HTML里分离出来;

                JSP可以是java和html组合成一个扩展名为.jsp的文件

        JSP侧重于视图,servlet主要用于控制逻辑

 

■​​​​​​​ jsp 有哪些域对象和内置对象及他们的作用

jsp9大内置对象和4大域对象

1. 4大域对象

        request,作用于同一个请求之内

        session,作用于一个会话的生命周期内

        application,作用于整个应用,为所有会话所共享

        pageContext,作用于当前页面

        作用范围从大到小依次为:application>session>request>pageContext

2. 9大内置对象

        request,对应servlet中HttpServletRequest

        response,对应servelt中HtppServletResponse

        session,对应servelt中HttpSession

        application,对应servlet中ServletContext

        config,对应servlet中ServletConfig

        注:这5个对象和servletAPI是一样的

        page,代表当前JSP页面,相当于普通java类的this

        pageContext,代表JSP页面编译后的内容,封装了对其他8大内置对象的引用,可通过它获取其他8大内置对象

        exception,是java.lang.Exception类的对象,封装了JSP页面抛出的异常信息

        out,用于向浏览器输出数据,out对象的类型是JspWriter(可理解为是带缓存的PrintWriter)

 

■​​​​​​​ 过滤器和监听器是什么,有什么用

1. 过滤器(filter)

        过滤器是一个驻留在服务器端的web组件,它可以截取客户端和服务器之间请求与响应信息,并对这些信息进行过滤。

        常见的过滤器用途主要包括:对用户请求进行统一认证,对用户的请求进行记录和审核,对响应内容进行压缩以减少传输量等

2. 监听器(listener)

        监听器就是application、session、request三个对象的创建、销毁或者往其中添加修改属性时自动执行代码的功能组件。

        常见的有:

                监听对象创建于销毁,有:

                ServletContextListener,HttpSessionListenerServletRequestListener

                监听对象属性添加删除和替换,有:

                ServletContextAttributeListener;

                HttpSessionAttributeListener;

                ServletRequestAttributeListener

        常见的监听器用途主要包括:网站在线人数技术以及监听用户的行为(管理员踢人)

3. 区别

        过滤器依赖底层web容器

        监听器不依赖容器

 

■​​​​​​​ 谈谈你对 ajax 的认识?

        Ajax,是异步javascript和xml,是一种创建交互式应用的网页开发技术,实现客户端与浏览器,可以在不必刷新整个浏览器的情况下,与服务器进行异步通讯的技术。

        Ajax的底层原理是基于XMLHttpRequest对象

 

        Ajax实现流程:

        1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象

        2.创建一个新的http请求,并指定该http请求的方法、url及验证信息

        3.设置回调函数

        4.发送请求

        5.使用异步调用返回的数据

        6.将数据渲染到页面上,使用javasrcipt和dom实现局部刷新

 

        XMLHttpRequest对象详解

        属性

        1. onreadystatechange:请求状态改变事件触发器(readyState变化时会调用此方法),一般用于指定回调函数。

        2. readyState:请求状态readyState一改变,回调函数被调用

                5个状态:0,1,2,3,4

                0:未初始化

                1:open方法成功调用以后

                2:服务器已经成功应答客户端的请求

                3:交互中。http头信息已经接收,响应数据尚未接收

                4:完成,数据接收完成

        3. responseText:服务器返回的文本内容

        4. responseXML:服务器返回的兼容DOM的XML内容

        5. status:服务器返回的状态码

        6. statusText:服务器返回状态码的文本信息

 

        方法(常用)

        1. open(),创建http请求

        2. setRequestHeader(),设置消息头

        3. send(),发送请求给服务器,传递数据

 

案例

        
        @RequestMapping("/ajax.action")public void ajax(String username,HttpServletResponse response) throws IOException {    System.out.println("AjaxTest.ajax()");    PrintWriter writer = response.getWriter();    writer.write("success");}

 

■​​​​​​​ HTTP的方法有哪些?HTTP的状态码200、302、403、500、503含义分别是什么?

get/post/put/delete/head/options

200:一切正常

301:永久重定向

302:临时重定向

403:表示资源不可用。服务器理解客户的请求,但拒绝处理它,通常由于服务器上文件或目录的权限设置导致的WEB访问错误。

404:找不到资源

500:服务器内部错误

503:HTTP状态码,是服务器出错的一种返回状态

转载地址:http://xsqen.baihongyu.com/

你可能感兴趣的文章
Python List Comprehensions
查看>>
Python 递归 list不正确
查看>>
Python copy a list
查看>>
Iteration Vs Recursion Java
查看>>
What are some of the differences between using recursion to solve a problem versus using iteration?
查看>>
subsets
查看>>
Python Nested List Operation
查看>>
Python Binary Search
查看>>
How to append list to second list
查看>>
Write a program to print all permutations of a given string
查看>>
递归回溯
查看>>
穷举递归和回溯算法终结篇
查看>>
Exhaustive recursion and backtracking
查看>>
递归算法的时间复杂度终结篇
查看>>
全排列算法的递归与非递归实现
查看>>
Python Division and Remainders
查看>>
Python Division //
查看>>
BinarySearch
查看>>
二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现
查看>>
Arithmetic Progression
查看>>