TCP三次握手与四次挥手
TCP三次握手与四次握手感觉是字节跳动的必问题,之前面过一次字节跳动,也问了这个题。
HTTP连接(浏览器点击搜索之后)
http响应过程
http请求报文
http响应报文
测试用例和BUG书写规范
测试用例书写
BUG书写
bug标题:简明扼要地阐述问题本质
测试设备:使用地设备、操作系统、测试环境、网络类型等
前提条件:明确指出BUg是在什么情况下产生的
测试步骤:简明清晰分步骤描述如何复现Bug,步骤用序号编排(点击用->连接)
期望结果:按照产品需求清晰的填写预期结果
实际结果:实际结果、复现步骤及出现概率
截图和附件:UI类型,上传截图,并增加相应的红框标识;功能类型,视频文件:崩溃类型,视频和log
项目名称:名称+版本号
Bug所属项目和模块
严重等级:紧急、严重、一般、微小
优先级:P1,P2,P3,P4
Bug状态:New,Open,Fixed,Rejected,Delay,Closed,Reopen
怎样判断链表有没有环
判断单向链表是否有环
两种思路
- 设置一个集合(或列表),每次访问将结点放到其中,遍历链表,如果结点已经在集合中,证明已经访问过,存在环。
- 设置两个指针,fast 和slow,fast指针一次走两步,slow指针一次走一步,如果两个指针相遇,证明有环,如果fast都走到null了,还没相遇,则证明无环。
class Node(): # 定义一个Node类,构造两个属性,一个是item节点值,一个是节点的下一个指向
def __init__(self, item=None):
self.item = item
self.next = None
##利用集合判断是否有环
def findbeginofloop_1(head):
"""
:param head: 链表头
:return: True:有环,False 无环
"""
first = head
flag = set()
while first:
if first not in flag:
flag.add(first)
else:
return first
first = first.next
return False
#利用两个指针
def findbeginofloop_2(head):
fastp = head
slowp = head
isloop = False
while fastp and fastp.next and slowp:
fastp = fastp.next.next
slowp = slowp.next
if fastp == slowp: ##有环
isloop = True
break
if isloop == True:
fastp = head
while fastp != slowp: ##找出环的入口
fastp = fastp.next
slowp = slowp.next
return fastp
return False
if __name__ == "__main__":
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
node5.next = node2
print(findbeginofloop_2(node1).item)
性能测试的指标
性能测试参考文章
前端主要关注:
响应时间
加载速度
电量
流量
后端主要关注:
响应时间
并发用户数
内存占用:APP的内存开销
TPS(吞吐率)(Transaction per second,每秒事务数)
错误率
资源消耗:CPU占用率、内存使用率、磁盘I/O、网络I/O
python 复制、深拷贝与浅拷贝
-
复制
直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变。 -
copy浅拷贝 父对象不变,子对象变
-
深拷贝(需要导入copy模块)copy.deepcopy() 父子对象都不变 完全拷贝了父对象及其子对象,两者是完全独立
# 直接赋值 对象的别名 b和list1指向同一个对象
list1 = [1,2,3,[2,3]]
b = list1
print("直接赋值")
b.append("dhuu")
print(list1)
print(b)
## 浅拷贝
print("浅拷贝,父对象不变")
b2 = list1.copy()
list1.append("b2")
print(list1)
print(b2)
print("浅拷贝,子对象会变")
b2[3].append("子对象")
print(list1)
print(b2)
import copy
## 深拷贝
print("深拷贝,a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。")
b3 = copy.deepcopy(list1)
list1.append("b3")
list1[3].append("b3")
print(list1)
print(b3)