文章目录
一、preface
本次面试的是测试开发实习生,本来面试前准备了很多关于测试开发的知识,但是整个面试过程中几乎没有问到,还是以基础知识为主,甚至可以直接说,就是在考核我的计算机网络的掌握情况。但是吧😅,网络这块没有系统学过…,所以下面的问题自我感觉回答的一般般,打算写一个面经。下一阶段还有3个面试需要准备,需要抓紧复习一下基础知识。
二、基础知识
1. 简述一下 HTTP
HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网的数据通信的基础,定义了客户端(如浏览器)如何向服务器请求资源以及服务器如何响应这些请求。不要忘了传输端口是80。
主要特点:
- 无状态:每个HTTP请求都是独立的,与之前的请求没有直接关系。每次请求都会带上必要的所有信息,因此服务器不需要保留请求上下文。
- 灵活:可以传输任意类型的数据,通过Content-Type头来区分数据类型。
- 简单:设计简单,易于实现和扩展。
2. HTTP请求类型
- GET:请求指定资源的表示形式。使用GET的请求应该只用于获取数据,不应有副作用。我一般记作获取资源。
- POST:向指定资源提交数据进行处理请求。数据包含在请求体中,并且POST请求可能会导致服务器状态的改变(如提交表单或上传文件)。我一般记作提交资源。
- PUT:上传指定资源的最新内容。我一般记作更新资源。
- DELETE:删除指定资源。
- HEAD:与GET方法类似,但只请求资源的头部信息,不返回具体内容。
- OPTIONS:返回服务器支持的HTTP方法。
- PATCH:对资源进行部分修改。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
3. GET() 和 POST() 的区别
- 用途:
- GET:主要用于获取资源或数据。请求参数通过URL传递。
- POST:主要用于提交数据或创建资源。请求参数包含在请求体(request body)中。
- 安全性:(POST > GET)
- GET:参数显示在URL中,可能暴露敏感信息,可以出现在浏览器的历史记录中,也可以出现在日志中。
- POST:参数在请求体中,不直接暴露在URL中,可以进行加密,相对更安全。
- 幂等性:
- GET:是幂等的,多次执行相同的GET请求应该有相同的结果。
- POST:不是幂等的,多次执行相同的POST请求可能会导致不同的结果(如多次提交表单)。
- 数据大小:
- GET:由于URL长度限制,GET请求的参数有大小限制。
- POST:可以传输大量数据,因为数据在请求体中。
4. Cookie 和 Session 的区别
Cookie:
- 存储位置:
- Cookie:存储在客户端浏览器中。
- Session:存储在服务器端。
- 安全性:
- Cookie:较不安全,容易被窃取和伪造。
- Session:相对更安全,因为数据存储在服务器端。
- 生命周期:
- Cookie:可以设置过期时间,持久化存储。
- Session:一般会话结束或关闭浏览器时过期,