想要面试过的去,必须每日一刷题!
关于Android面试这里我就不多讲了,直接上题。
一、面试题:网络型
1、常用的HTTP方法有哪些?
GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。
**POST:**用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
**DELETE:**删除文件,与PUT方法相反,删除对应URI位置的文件。
**OPTIONS:**查询相应URI支持的HTTP方法。
2.TCP/IP协议的工作流程 :
●在 源主机上,应用层将一串应用数据流传送给传输层。
●传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。
●在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。
●链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器。
●在 目的主机,链路层将MAC帧的帧头去掉,并将IP数据包送交网络层。
●网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP数据包;若校验和与计算结果一致,则去掉IP报头,将TCP段送交传输层。
●传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求重发信息。
●在目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。
3.TCP的三次握手理解:
第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
4.网页中输入url,到渲染整个界面的整个过程,以及中间用了什么协议?
过程:
- DNS解析
- TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
协议:
-
DNS:获取域名对应IP
-
TCP: 与服务器建立TCP连接
-
IP: 建立TCP协议时,需要发送数据,发送
数据在网络层使用IP协议 -
0SPF : IP数据包在路由器之间,路由选择使
用OSPF协议 -
ARP:路由器在与服务器通信时,需要将ip
地址转换为MAC地址,需要使用ARP协议 -
HTTP:在TCP建立完成后,使用HTTP协议
访问网页
5.TCP和UDP的区别?
- 安全方面的区别。tcp的安全性没有udp的安全性高,并且udp的漏洞比较少,不容易被一些不法分子利用。
- 传播速度的区别。 udp的传送速度也比tcp的快。因为tcp在传送的时候要先建立连接建立连接的时候是比较耗时的,而且在传送数据的时候还要确认一些东西而udp无连接传送数据的。
- 连接对象数量的区别。tcp是一对一 的连接而udp是一对多个或多对多个连接的。
6.HTTP的几种请求方法具体介绍
- HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的 *** 作方式
- HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
- HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
1.OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2.HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3.GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的 *** 作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
4.POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5.PUT
向指定资源位置上传其最新内容
6.DELETE
请求服务器删除Request-URL所标识的资源
7.TRACE
回显服务器收到的请求,主要用于测试或诊断
8.CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7.HTTP请求和响应报文的格式,以及常用状态码 ?
HTTP请求报文结构:
第一部分是请求行, 有3个字段:
- 请求方法:(get,post,move,delete等)。
- URL字段:(访问的URL信息)。
- HTTP协议版本(主要有http1.0 http1.1 http2.0三种,其中http1.0属于TCP短连接类型协议,http1.1属于TCP长连接类型协议)。
第二部分是请求头部:
由关键字和值配对组成,每行一对,关键字和值用英文冒号:分隔,请求头部的作用是客户端把请求的详细信息告诉服务端,比如:
- Accept:Image/gif (媒体类型)
- Accept-Language:zh-cn(语言类型)
- Host:www.***.com(服务端主机名)
第三部分是空行:
空行的作用是通过发送回车符和换行符,告诉服务端请求头部结束。
第四部分是请求报文主体:
主体包含了客户端要发送给服务端的信息,所以一般post类型的请求报文会有报文主体,get类型是没有的。
HTTP响应报文结构:
第一部分是起始行,用来说明服务端响应客户端的情况,一般由协议版本号, 数字状态码, 状态情况组成.在linux系统中可以用curl命令测试 。
上面所述就是常常被问到的网络型面试题;后续还有算法、数据结构、Java面试、Android面试题。[想了解更多Android面试可以点击链接免费领取https://shimo.im/docs/1d3aV7zG5gF6Eyqg/ 《Android技术进阶手册丶面试题纲丶核心笔记资料》](https://shimo.im/docs/1d3aV7zG5gF6Eyqg/%20%E3%80%8A%E8%85%BE%E8%AE%AFT12%E4%B8%93%E5%AE%B6Android%E6%8A%80%E6%9C%AF%E8%BF%9B%E9%98%B6%E6%89%8B%E5%86%8C%E4%B8%B6%E9%9D%A2%E8%AF%95%E9%A2%98%E7%BA%B2%E4%B8%B6%E6%A0%B8%E5%BF%83%E7%AC%94%E8%AE%B0%E8%B5%84%E6%96%99%E3%80%8B)
咱们下期见!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)