JAVA三年面试题(Web篇)不定期更新

JAVA三年面试题(Web篇)

1.什么是Servlet?

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

2.Servlet生命周期

(1)加载和实例化
当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。
(2) 初始化
实例化后,Servlet容器将调用Servlet的init()方法进行初始化(一些准备工作或资源预加载工作)。
(3)服务
初始化后,Servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法。
(4)销毁
当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)。

3.什么是Socket?

Socket(套接字):在TCP/IP网络环境中,可以使用套接字来建立网络连接,实现主机之间的数据传输。

4.常用套接字类型?

●流式套接字(SOCK_STREAM)。流式套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收,数据传输可以是双向的字节流。

● 数据报套接字(SOCK_DGRAM)。数据报套接字用于提供无连接的数据传输服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或重复,且无法保证顺序地接收到数据。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。

● 原始套接字(SOCK_RAW)。当使用前两种套接字无法完成数据收发任务时,原始套接字提供了更加灵活的数据访问接口,使用它可以在网络层上对Socket进行编程,发送和接收网络层上的原始数据包。

5.套接字通信过程?

1)建立一个Socket。

2)配置Socket。

3)连接Socket(可选)。

4)通过Socket发送数据。

5)通过Socket接收数据。

6)关闭Socket。

6,三次握手和四次挥手?

三次握手:

1)请求端(通常称为客户)发送一个SYN报文段指明客户打算连接的服务器端口号,以及初始序号(Initial Sequence Number,ISN),SYN请求发送后,客户进入SYN_SENT状态。

2)服务器启动后首先进入LISTEN状态,当它收到客户发来的SYN请求后,进入SYN_RCV状态,发回包含服务器的初始序号的SYN报文段作为应答,同时将确认序号设置为客户的初始序号加1,对客户的SYN报文段进行确认。一个SYN将占用一个序号。

3)客户接收到服务器的确认报文后进入ESTABLISHED状态,表明本方连接已成功建立,客户将确认序号设置为服务器的ISN加1,对服务器的SYN报文段进行确认,当服务器接收到该确认报文后,也进入ESTABLISHED状态。

四次挥手:
1)客户的应用进程主动发起关闭连接请求,它将导致TCP客户发送一个FIN报文段,用来关闭从客户到服务器的数据传送,此时客户进入FIN_WAIT_1状态。

2)当服务器收到这个FIN,它发回一个ACK,进入CLOSE_WAIT状态,确认序号为收到的序号加1。与SYN一样,一个FIN将占用一个序号。客户收到该确认后进入FIN_WAIT_2状态,表明本方连接已关闭,但仍可以接收服务器发来的数据。

3)接着服务器程序关闭本方连接,其TCP端发送一个FIN报文段,进入LAST_AC状态,当客户接收到该报文段后进入TIME_WAIT状态。

4)客户在收到服务器发来的FIN请求后,发回一个确认,并将确认序号设置为收到的序号加1。发送FIN将导致应用程序关闭它们的连接,服务器接收到该确认后,连接关闭。这些FIN的ACK是由TCP软件自动产生的。

7. Servlet和Socket的区别 ?

Servlet工作在基于Tcp/ip应用层,Socket基于传输层;
Servlet运行于web容器中,Socket是集成于操作系统内核;
Servlet底层使用Socket,Socket是通信基础。

8. 转发与重定向的区别?

转发在服务器端完成的,重定向是在客户端完成的;
转发的速度快,重定向速度慢;
转发的是同一次请求,重定向是两次不同请求 ;
转发不会执行转发后的代码,重定向会执行重定向之后的代码;
转发地址栏没有变化,重定向地址栏有变化 ;
转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成。

8. jsp 有哪些内置对象?作用分别是什么?

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

request:用户端请求,此请求会包含来自GET/POST 请求的参数;

response:网页传回用户端的回应;

pageContext:网页的属性是在这里管理;

session:与请求有关的会话期;

application:servlet 正在执行的内容;

out:用来传送回应的输出;

config:servlet 的构架部件;

page:JSP 网页本身;

exception:针对错误网页,未捕捉的例外。

10. 谈谈mvc?

基于java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。

Model:处理业务逻辑的模块。

View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。

Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。

11. cookie和session的区别?
  1. cookie数据保存在客户端,session数据保存在服务端。

  2. cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,相当重要的数据,应该使用session保存到服务端。

  3. session会在一定时间内保持在服务器上,但是会占用内存资源,当访问的用户过多,会加重服务器的负载,考虑到减轻服务器的压力,可以将不重要的数据放在cookie中持久的保存。

  4. 单个cookie保存的数据不能超过4k,很多浏览器都限制站点最多保存20个cookie。

12. 如何防止表单重复提交?

要能够防止表单重复提交,就要标识用户的每一次访问请求,使得每一次访问对服务端来说都是唯一确定的。为了标识用户的每次访问请求,可以在用户请求一个表单域时增加一个隐藏表单项,这个表单项的值每次都是唯一的token。

当用户在请求时生成这个唯一的token时,同时将这个token保存在用户的Session中,等用户提交请求时检查这个token和当前的Session中保存的token是否一致。如果一致,说明没有重复提交,否则用户提交上来的token已经不是当前的这个请求的合法token。

13. 一次http请求过程?

1.根据输入网址,进行DNS域名解析获取IP地址

2.根据IP,与对应服务器进行三次握手。

3.建立TCP连接后发起HTTP请求

4.服务器响应HTTP请求,浏览器得到html代码

5.浏览器解析html代码,并请求html代码中的资源(如js、css图片等)

6.浏览器对页面进行渲染呈现给用户

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值