测试开发:基础知识部分

python基础知识

1、闭包及装饰器作用及实际应用?

闭包:就是在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。
装饰器(本质就是闭包):主要作用为已经存在的对象添加额外的功能,例如日志记录、数据校验等。

2、常用模块及内置函数

常用模块:
time 、os、 os.path、 random、 sys、 hashlib、 string、 urllib、 re、 json
内置函数:
int() 、type()、 abs()、 max()、 len()、 range()

3、进程线程区别

1、进程是操作系统资源分配的基本单位,线程是任务调度和程序执行的基本单位
2、运行时系统为每个进程分配不同的内存空间,除cpu外系统不会为线程分配内存,线程组只能共享资源
3、线程是进程的一部分,同一个进程可以有多个线程同时执行(通过cpu调度,每个时间片只有一个线程执行)
4、io操作频繁时候用多线程,cpu耗用过多用多进程

4、如何创建多线程

创建线程对象(继承threading.Thread),并重写run()函数,线程的启动通过实例化线程对象并调用start()函数进行启动(多线程循环start()即可),结束线程通过join()函数

5、协程的概念

协程:协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行
协程优势:生产者生产消息后,直接通过yield跳转到消费者开始执行,待消费者执行完毕后,切换回生产者继续生产

常用linux命令

1、linux 查找某个文件:find / -name nginx.conf find / -name “1*”
2、linux 打包: tar cvf proxy_ent_browser_admin.tar proxy_ent_browser_admin 解包:xvf
.tar.gz: 打包:zcvf 解包 zxvf
3、清空文件:echo “”>ddddddd
4、查看文件内容: head -10 a.log 查看前10行 tail -10 a.log 查看后10行
5、查看进程:ps -ef | grep java
6、查看端口占用情况: netstat -anp |grep 9649
7、磁盘使用空间: df -hl
8、翻页查看大文件:cat file_name.txt | more 显示前3行内容:more -3 qconf.log.2019-12-17-02
9、查看内存:free
10、包含其他使用者的进程,和PID,CPU占有率,记忆体使用情况,运行状态等,可以输入:ps -aux
11、软连接:ln

网络相关

1、tcp/udp区别:

TCP 是传输层的协议,也是一种封包格式,TCP 协议按这个格式封装成 IP 包,发送到网络中进行传输

TCP 是面向连接的,UDP 是面向无连接的
UDP程序结构较简单
TCP 是面向字节流的,UDP 是基于数据报的
TCP 保证数据正确性,UDP 可能丢包
TCP 保证数据顺序,UDP 不保证
HTTP 是 TCP 协议之上的一层封装

什么是面向连接,什么是面向无连接?
在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会

TCP 为什么是可靠连接
通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
TCP 报文头里面的序号能使 TCP 的数据按序到达
报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
TCP 拥有流量控制及拥塞控制的机制

2、socket

Socket 其实是操作系统提供的用于操作网络传输协议 (TCP,UDP 等) 的 API, 相当于操作系统负责把 TCP,UDP 等协议翻译成 IP 包发送和接收
socket只是一种连接模式,不是协议,socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),

通过Socket,我们才能使用TCP/IP协议。tcp、udp,简单的说(虽然不准确)是两个最基本的协议,
很多其它协议都是基于这两个协议如,http就是基于tcp的,.用socket可以创建tcp连接,也可以创建udp连接,
这意味着,用socket可以创建任何协议的连接,因为其它协议都是基于此的

Socket传输适用范围
基于Socket传输的特点:Socket 传输方式适合于对传输速度,安全性,实时交互,费用等要求高的应用中,如网络游戏,手机应用,银行内部交互等

基于Http协议传输的适用范围
基于http协议传输的特点:基于http协议传输方式适合于对传输速度,安全性 要求不是很高,且需要快速开发的应用。如公司OA系统,互联网服务等。

3、 总结

TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。
网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
传输层中有TCP协议与UDP协议
应用层有HTTP,FTP、TELNET、SMTP、DNS等协议。

描述

4、在网页输入一个网址,会发生什么

DNS解析

输入一个网址并按回车的时候浏览器会根据输入的URL去查找对应的IP

例如"mp3.baidu.com",域名先是解析出这是个.com的域名,然后跑到管理.com域的服务器上进行进一步查询,然后是.baidu,最后是mp3, 所以域名结构为:三级域名.二级域名.一级域名。

所以DNS根据域名查询IP地址的过程为:浏览器缓存 --> 操作系统缓存 --> 路由器缓存–>本地(ISP)域名服务器缓存 --> 根域名服务器。

进行TCP连接

浏览器终于得到了IP以后,向服务器发送TCP连接,TCP连接经过三次握手

浏览器发送HTTP请求

et请求包含了主机(Host)、用户代理(User-Agent),用户代理就是自己的浏览器,它是你的"代理人",Connection(连接属性)中的keep-alive表示浏览器告诉对方服务器在传输完现在请求的内容后不要断开连接,不断开的话下次继续连接速度就很快了。可能还会有Cookies,Cookies保存了用户的登陆信息,一般保存的是用户的JSESSIONID,在每次向服务器发送请求的时候会重复发送给服务器。

在建立连接发送请求时每个服务端需要和客户端保持通信,有很多客户端都会和服务器进行通信。服务器为了识别是哪个客户端与它通信,就必须用一个标识记录客户端的信息。客户端首次访问服务器,服务端返回响应时通过附带一个记录的客户端信息的标识来返回给客户端,这个标识就是JSESSIONID,JSESSIONID就放在了客户端的Cookies里。当客户端再次向服务器发送请求时上就使用上次记录的Cookies里面的JSESSIONID,这样服务器就知道是哪个浏览器了。这样他们之间就能保持通信了

服务器处理请求

会解析这个请求(读请求头),然后生成一个响应头和具体响应内容。接着服务器会传回来一个响应头和一个响应,响应头告诉了浏览器一些必要的信息,例如重要的Status Code,2开头如200表示一切正常,3开头表示重定向,4开头是客户端错误,如404表示请求的资源不存在,5开头表示服务器端错误。响应就是具体的要请求的页面内容

浏览器解析渲染页面

浏览器显示HTML
浏览器向服务器发送请求获取嵌入在HTML中的对象:如图片,视频,css样式,JavaScript文件等等
浏览器发送异步(AJAX)请求:对于那些动态的请求,动态网页等就必须要从服务器获取了。对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存。对于这些动态请求,Nginx可能会专门设置一些服务器用来处理这些访问动态页面的请求。

关闭TCP连接

TCP的断开与连接不一样,断开可以分为主动关闭和被动关闭,需要经过4次握手

5、tcp三次握手,四次挥手

三次握手

第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。
第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。
第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常。

四次挥手

第一次:客户端请求断开
第二次:服务器确认客户端的断开请求
第三次:服务器请求断开
第四次:客户端确认服务器的断开

为什么三次握手和四次挥手

三次握手时,为了防止已经是小的连接请求报文连接突然又传送到了服务端,从而产生错误
四次挥手时,TCP是全双工模式,接收方接收到FIN意味着没有数据再发来,但是还可以继续发送数据。即在CLOSE-WAIT阶段,服务器仍可以继续向客户端发送数据。

数据库

1、mysql的连表查询

select * from student join course on student.ID=course.ID

2、数据库索引的作用

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

3、表中的数据如何保持唯一性

例如,user表中有user_id,user_name两个字段,如果不希望有两条一摸一样的的user_id和user_name,我们可以给user表添加两个字段的联合唯一索引:
alter table user add unique index(user_id,user_name)

4、 数据库事务的概念?事务的四个特性?

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。 事务是恢复和并发控制的基本单位。 事务应该具有4个属性:**原子性、一致性、隔离性、持续性。**这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响器。

接口测试内容

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值