面试必备:测试基础
部分整理自网络,如有侵权,请联系删除。
架构相关
https://www.cnblogs.com/uncleyong/p/12542838.html
集群、分布式、微服务
集群是一种物理形态,分布式是一个工作方式。 分布式:一个业务分拆多个子业务,部署在不同的服务器上。分布式是以缩短单个任务的执行时间来提升效率的。 集群:同一个业务部署在多个服务器上,集群是通过提高单位时间内执行的任务数来提升效率 好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。
微服务的概念与分布式比较类似。微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。 与分布式的细微差别是,微服务不一定是分散在多个服务器上,他也可以是同一个服务器。
正向代理 & 反向代理
正向:位于客户端和原始服务器之间的服务器,为了从原始服务器获取数据,客户端向代理服务器发送请求并指定请求目标(原始服务器),然后代理服务器将请求转换给原始服务器,并将响应的数据返回给客户端;正向代理是客户端使用的,对客户端进行代理,客户端知道并主动使用代理。
反向:客户端发送请求到服务器(客户端不知道有代理服务器,认为是原始服务器,实际上是一台反向服务器),反向代理服务器接收请求并将请求转发给内部网络中的多台集群服务器,并将响应的数据返回给客户端;反向代理一般用于服务器集群、分布式等,实现负载均衡
web服务器 & 应用服务器
1. Web服务器负责处理HTTP协议,应用服务器既可以处理HTTP内容,也能处理其他协议,比如RPC
2. Web服务器用于处理静态页面的内容,对于脚本语言(比如Python)产生的动态内容,它通过WSGI接口交给应用服务器来处理。
3.一般应用服务器都集成了Web服务器,自带的应用服务器甚至可以支持应用级别的功能,比如连接池、事务支持,消息服务等。虽然集成了Web服务器,主要是为了调试方便,出于性能和稳定性考虑,应用服务器并不能在生产环境中使用。
进程 & 线程 & 协程
进程:
线程:
协程:
GET & POST
get,可以在浏览器中发请求
post,只能借助工具,比如postman、jmeter
1、GET使用URL或Cookie传参。而POST将数据放在BODY中(post请求也可以把数据放到url里面)。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见(其实,通过抓包工具可以抓post请求的数据,所以,也不安全)。
4、一般get请求用来获取数据,post请求用来发送数据。
HTTP & HTTPS
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
参考:https://www.cnblogs.com/zhenguoli/p/8622933.html
http和webservice接口
httpservice通过post和get得到你想要的东西
webservice就是使用soap协议得到你想要的东西,相比httpservice能处理些更加复杂的数据类型
http1.0和http1.1区别
1.0版本,http协议默认是无连接的,即一个http请求申请一个tcp连接,然后http连接断开时,tcp连接也跟着断开。又叫短连接。
1.1版本,http协议默认是长连接的,通过信息头:Connection:keep-alive来实现。效果就是,一个http请求在完成时,可以标注是keep-alive的,这样的话,底层的tcp连接不需要断开,可以供多个http连接使用。
rpc框架原理,和http区别
http响应慢、请求头大,所以在微服务时代,大家都使用rpc来调用服务。
tcp三次握手、四次挥手
参考:https://www.cnblogs.com/uncleyong/p/7611408.html
TCP & UDP
区别一:tcp是可靠的传输(发送方发一个数据,接收方收到数据后要回复确认信息,发送者才会把自己操作系统缓存中的数据清理掉,如果发送方没收到确认信息<接收者没回复确认信息>,就会从操作系统缓存中取出数据再发一次这个数据),udp是不可靠的传输
tcp先建立连接,
udp不建立连接(不需要建立双向连接),直接往目标地址发数据(也不需要管对方是否存在,不管对方是否收到,只管往外发),不需要收到对方的确认信息
区别二:传输效率:upd高(不需要建立连接,不需要确认,开销小),tpc低(要建立连接,需要对方确认,都有开销)
COOKIE & SESSION
1、存储位置不同
cookie的数据信息存放在客户端浏览器上。
session的数据信息存放在服务器上。
2、存储容量不同
单个cookie保存的数据<=4KB,一个站点最多保存20个Cookie。
对于session来说并没有上限,但出于对服务器端的性能考虑,session内不要存放过多的东西,并且设置session删除机制。
3、存储方式不同
cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据。
session中能够存储任何类型的数据,包括且不限于string,integer,list,map等。
4、隐私策略不同
cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。
session存储在服务器上,对客户端是透明对,不存在敏感信息泄漏的风险。
5、有效期上不同
开发可以通过设置cookie的属性,达到使cookie长期有效的效果。
session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果。
6、服务器压力不同
cookie保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie是很好的选择。
session是保管在服务器端的,每个用户都会产生一个session。假如并发访问的用户十分多,会产生十分多的session,耗费大量的内存。
7、浏览器支持不同
假如客户端浏览器不支持cookie:
cookie是需要客户端浏览器支持的,假如客户端禁用了cookie,或者不支持cookie,则会话跟踪会失效。关于WAP上的应用,常规的cookie就派不上用场了。
运用session需要使用URL地址重写的方式。一切用到session程序的URL都要进行URL地址重写,否则session会话跟踪还会失效。
假如客户端支持cookie:
cookie既能够设为本浏览器窗口以及子窗口内有效,也能够设为一切窗口内有效。
session只能在本窗口以及子窗口内有效。
8、跨域支持上不同
cookie支持跨域名访问。
session不支持跨域名访问。
【bak】Cookie、Session、Token究竟区别在哪?为什么都选择token?
https://www.cnblogs.com/uncleyong/p/17086714.html
同步、异步、阻塞、非阻塞
1、根据应用程序是否阻塞自身运行,可以把 I/O 分为阻塞I/O 和非阻塞 I/O,针对的是 I/O 调用者(即应用程序)。
阻塞 I/O,是指应用程序在执行 I/O 操作后,如果没有获得响应,就会阻塞当前线程,不能执行其他任务(挂起)。
非阻塞 I/O,是指应用程序在执行 I/O 操作后,不会阻塞当前的线程,可以继续执行其他的任务。
2、根据 I/O 响应的通知方式的不同,可以把文件 I/O 分为同步I/O 和异步 I/O,针对的是 I/O 执行者(即系统)。
同步 I/O,是指收到 I/O 请求后,系统不会立刻响应应用程序;等到处理完成,系统才会通过系统调用的方式,告诉应用程序 I/O 结果。
异步 I/O,是指收到 I/O 请求后,系统会先告诉应用程序 I/O 请求已经收到,随后再去异步处理;等处理完成后,系统再通过事件通知的方式,告诉应用程序结果。
nio,bio,aio
https://www.cnblogs.com/uncleyong/p/14934748.html
CI & CD
CI,就是持续集成(CONTINUOUS INTEGRATION)。
CD,持续交付(CONTINUOUS DELIVERY),既可以指代码持续交付,也可理解为代码持续部署。
参考:http://www.360doc.com/content/18/0903/11/19960613_783492490.shtml
契约测试
两个角色:消费者(Consumer)和 生产者(Provider)
一个思想:需求驱动(消费者驱动)
契约文件:由Consumer端和Provider端共同定义的规范,包含API路径,输入,输出。通常由Consumber生成。
实现原理:Consumer 端提供一个类似“契约”的东西(如json 文件,约定好request和response)交给Provider 端,告诉Provider 有什么需求,然后Provider 根据这份“契约”去实现。
参考:https://www.jianshu.com/p/e318fadf8553
原文:https://www.cnblogs.com/uncleyong/p/11158806.html
更多笔试题:https://www.cnblogs.com/uncleyong/p/11119489.html
__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!