1、cookie 和 session 的区别
http 请求无状态
session 在服务器端,cookie 在客户端(浏览器)
session 默认被存在在服务器的一个文件里(不是内存)
session 的运行依赖 session id(随机字符串),而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
session 可以放在 文件、数据库、或内存中都可以。维持 session 以及多机器同步 session 需要耗费大量资源。
token(令牌) 用算法对用户数据进行加密,返回给客户端一个 token,下次用户请求的时候放到 http header 里面传给服务器。服务器进行解密使用。
2、简述 http 请求中 get 和 post 的区别,常见的 post 提交数据类型以及区别
HTTP 定义了与服务器交互的不同方法,常用的有 4 种,Put(增),Delete(删),Post(改),Get(查),即增删改查。最常用的是 get 和 post。
get 请求 url,可以带参数,参数用?与 url 分开,多个参数以&拼接 形式 http://url?key=value&key2=value2... (url 过长会提示 414 错误)
post 向指定的 url 提交数据
常见 3 种提交方式
application/x-www-form-urlencoded,key1=val1&key2=val2
application/json,son 格式
form-data,生成了一个 boundary 用于分割不同的字段,可以上传文件
3、app 性能测试
关注一些参数 FPS、Jank、FTime、CPU、GPU、Memory、Battery 、Network、CTemp等性能参数
4、用 python 获取请求的状态码,常见的状态码有哪些
import requests
r = requests.get('https://www.baidu.com')
print(r.status_code)
常见状态码: 200,301,400,404,500,503等
不应以状态码判断业务是否正常,在性能或者接口测试中,状态码返回 200,业务可能已经错误。
5、描述 tcp/ip 协议的层次结构,以及每一层中的协议
1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路。
3.运输层:主要为两台主机上的应用提供端到端的通信。
4.应用层:负责处理特定的应用程序细节。

6、常见的 http 协议调试代理工具有哪些,怎么抓取 https 协议
fiddler、charles 等
简单的说安装工具带的证书,导入的信任证书栏,工具里开启抓取 https 选项。
7、fiddler 怎么抓 app
fiddler抓取手机app数据
8、简述一次完整的 http 事务过程
• 域名解析
• 发起TCP3次握手
• 建立TCP连接后发起http请求
• 服务器响应请求,返回结果
• 浏览器得到html标签代码
• 浏览器解析html代码中的资源,例如js,css,img等
• 浏览器对页面进行渲染并呈现给用户
9、http 请求 header 中有哪些常用的 tag
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cookie": "UM_distinctid=173b70175043d8-0eab64d97191f6-43450521-1fa400-173b7017505807; CNZZDATA1256793290=1446484856-1596499673-%7C1597822838",
"Dnt": "1",
"Host": "httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-5f58cae5-9dceb360c71bbe3c8cf56c8e"
}
10、为什么 tcp 需要第三次握手,而不是两次或者四次?
在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认;
第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器 进入 SYN_RECV 状态;
第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。
通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。
三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。
(全双工:指可以同时(瞬时)进行信号的双向传输(A→B且B→A)。指A→B的同时B→A,是瞬时同步的。
半双工:指一个时间内只有一个方向的信号传输(A→B或B→A)。)
两次握手只能保证单向连接是畅通的。
Step1 A -> B : 你好,B。
Step2 A <- B : 收到。你好,A。
这样的两次握手过程,A 向 B 打招呼得到了回应,即 A 向 B 发送数据,B 是可以收到的。
但是 B 向 A 打招呼,A 还没有回应,B 没有收到 A 的反馈,无法确保 A 可以收到 B 发送的数据。
只有经过第三次握手,才能确保双向都可以接收到对方的发送的 数据。
Step3 A -> B : 收到,B。
这样 B 才能确定 A 也可以收到 B 发送给 A 的数据。
第二次握手,服务器接受并发送(相当于两次) ,可以提高连接的速度与效率 。所以不是 2 次和 4 次