测开面试学习笔记1

1、算法相关:
(1)熟悉常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、堆排序、快排、希尔排序
2.计算机网络相关
1)http协议
http(超文本传输协议)是一个在器客户端和服务器端之间基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。
无状态的含义:无状态协议对于事务处理没有记忆能力。无状态协议解决办法: 通过Cookie 或者通过Session会话保存
常见的状态码的含义:
1**:指示信息–表示请求已接收,继续处理
2**:成功–表示请求已成功接收
3**:重定向–要完成请求必须进行更进一步的操作
4**:客户端错误–请求有语法错误或请求无法实现
5**:服务器错误–服务器未能实现合法的请求

响应报文结构
状态行:包含HTTP版本、状态码、状态码的原因短语
响应首部字段
响应内容实体

请求报文结构:
请求行:包含请求方法、URI、HTTP版本信息
请求首部字段
请求内容实体

(2)http1.0与http1.1的区别
在http1.0中,当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接,当浏览器下次请求的时候又要建立连接,在http1.1中,默认使用长连接,通过这种连接,浏览器可以建立一个连接之后,发送请求并得到返回信息,然后继续发送请求再次等到返回信息,也就是说客户端可以连续发送多个请求,而不用等待每一个响应的到来。长连接有一个保持时间
3)http和https的区别
https的协议需要用到ca申请证书,因而需要一定的费用,http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议,http的默认端口是80,https的默认端口是443, http的连接是简单的,无状态,https是有SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

*HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。 HTTP 默认工作在 TCP 协议
80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。 HTTP
协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

*

HTTPS(Hypertext Transfer Protocol
Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS
来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性

HTTP 与 HTTPS 区别
• HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
• 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
• HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
• http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
• HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源
4)get和post的区别
1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢
(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

post请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应
get请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
(4)服务器返回200 OK响应
也就是说,目测get的总耗是post的2/3左右

为什么get适合查询数据、post用来修改数据,是基于什么决定的、get可以用来修改数据吗
根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态
根据HTTP规范,POST表示可能修改变服务器上的资源的请求。。

(5)cookie机制和session机制的区别
Cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器。Cookies保存在客户端,主要内容包括:名字,值,过期时间,路径等等。
Session是在服务器端保存用户数据。服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户的信息。
区别:Cookie保存在客户端浏览器中,而Session保存在服务器上。Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。Cookie 在客户端(浏览器、易伪造、不安全),Session 在服务器端(会消耗服务器资源)
6)输入一个URL,接下来会发生什么

  1. DNS域名解析
  2. 建立TCP连接
  3. 发起HTTP请求
  4. 接受响应结果
  5. 浏览器解析html
  6. 浏览器布局渲染

查询DNS,获取域名对应的IP->得到目标IP以及端口号后,调用socket,请求一个TCP流套接字,客户端向服务端发送HTTP请求报文(三次握手)->服务端通过五层,解析请求报文,发送http响应报文->关闭连接(四次挥手)->客户端解析响应报文,并在浏览器显示

1、UDP和TCP的特点
用户数据报协议 UDP(User Datagram Protocol):
是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加UDP首部),支持一对一、一对多、多对一和多对多的交互通信。

传输控制协议 TCP(Transmission Control Protocol):
是面向连接的,提供可靠支付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条TCP连接只能是点对点的(一对一)。
a. tcp面向连接,udp是无连接的
b. tcp提供可靠的服务,udp尽最大努力交付
c. tcp是面向字节流的,tcp是把数据看成一连串的无结构的字节流,udp是面向报文的。Udp没有拥塞控制,适用于实时应用
d. 每条tcp连接只支持一对一,udp支持一对一,一对多,多对一,多对多
e. tcp首部开销20字节,udp只有8个字节
f. tcp建立起的是全双工的可靠信道,udp是不可靠的

TCP三次握手
第一次握手:客户端发送带同步标志的数据包给服务端。
——服务端确认对方发送正常,自己接收正常。
第二次握手:服务端发送带有同步/确认标志的数据包给客户端。
——客户端确认:自己发送、接收正常,对方发送、接收正常
——服务端确认:对方发送正常,自己接收正常
第三次握手:客户端发送带确认标志的数据包给服务端
——客户端、服务端都正常。确认双发双收功能正常
TCP四次挥手
a. 客户端A发送一个FIN包,用来关闭客户A到服务器B的数据传送
b. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号
c. 服务器B决定关闭与客户端A的连接,发送一个FIN给客户端A
d. 客户端A发回ACK报文确认,并将确认号设置为收到序号加1
还需要等待一个时间计时器设置的时间2MSL。这么做的理由TIME_WAIT
1、为实现TCP全双工连接的可靠释放。确保最后一个报文能够到达。
如果B没有收到A发来的确认报文,那么A就会重新发送连接释放请求报文。
2、为使旧的数据包在网络中因过期而消失。
等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使下一个新的连接不会出现旧的连接请求报文。
TCP协议如何保证可靠传输?
**1、数据分割:**应用数据被分割成 TCP 认为最适合发送的数据块。
2、数据包编号: TCP 给发送的每⼀个包进⾏编号,接收⽅对数据包进⾏排序,把有序数据传送给应⽤层。
4、丢弃重复: TCP的接收端会丢弃重复的数据。
5、流量控制: TCP 连接的每⼀⽅都有固定大小的缓冲空间, TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收⽅来不及处理发送方的数据,能提示发送⽅降低发送的速率,防止包丢失。 TCP 使⽤的流量控制协议是可变大小的滑动窗⼝协议。 (TCP 利⽤滑动窗⼝实现流量控制)
**6、拥塞控制:**当⽹络拥塞时,减少数据的发送。
**7、ARQ协议:**每发完⼀个分组就停止发送,等待对方确认。在收到确认后再发下⼀个分组。
8、超时重传: 当 TCP 发出⼀个段后,它启动⼀个定时器,等待目的端确认收到这个报⽂段。如果不能及时收到⼀个确认,将重发这个报⽂段。
(10)DNS如何解析出IP地址
a. 浏览器先检查自身缓存有没有解析过这个域名对应的ip,如果有解析结束
b. 浏览器检查系统缓存中有没有对应的解析的结果,hosts文件,如果有解析结束
c. 请求本地域名服务器(LDNS)来解析这个域名,如果命中,则解析结束
d. 请求根域名服务器(Root server),根域名服务器返回给LDNS一个所查询域的name server的地址,这个name server就是网站注册的域名服务器
name server 根据ip域名映射表找到目标ip,返回给LDNS
LDNS缓存这个域名对应的ip
LDNS将解析的结果返回给用户,用户缓存到本地的缓存中,解析结束

七层网络结构
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输
数据链路层:负责建立和管理节点间的链路,通过各种控制协议,将有差错的物理信道编程无差错的,能可靠传输数据帧的数据链路
网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径
传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输
会话层:向两个实体的表示层提供建立和使用连接的方法
表示层:处理用户的表示问题,如编码,数据格式转换或者加密解密等
应用层:直接向用户提供服务

Python中可变数据和不可变数据类型
可变数据类型:列表和字典
不可变数据类型:str bool int float tuple元组 date日期
——不可变数据类型为 一旦值发生改变 id(内存地址)也改变】
列表推导式 variable = [out_exp_res for out_exp in input_list if out_exp=2]
For example multiples = [i for I in range(30) if I %3 = 0] >> multiples=[0,3,6,9,12,15,18,21,24,27]
字典推导式
A = {a:10,b:20} A_value = {v:k for k,v in A.items()} Output = {a:10,b:20}
集合推导式
A = {x2 for x in [1,1,2]} output=set([1,4])
Is 和 ==的区别
Is用于判断两个变量引用对象是否为同一个 ==用于判断引用的值是否相等
Python之装饰器
装饰器
定义**:把一个函数当做参数,返回一个替代版的函数,本质上就是一个返回函数的函数
例:

def decorator(fun):
	def prints():
		print(-----)
		fun()
	return prints
@decorator
def say_hello():
	print(‘hello python’)
say_hello()  
输出为:
-------
Hello python

Python连接数据库的方式
1.使用mysqldb库中的_mysql
2.使用pymysql MongoDB redis

__new__和__init__的区别
__new__是用来创造一个类的实例的(constructor),而__init__是用来初始化一个实例的(initializer)。__new__所接收的第一个参数是cls,而__init__所接收的第一个参数是self。__new__函数首先被调用,构造了一个newStyleClass的实例,接着__init__函数在__new__函数返回一个实例的时候被调用,并且这个实例作为self参数被传入了__init__函数。
Python的特性

  1. Python是一门编程语言,它只是众多编程语言中的一种。
  2. Python语法简洁、优雅。编写的程序容易阅读。
  3. 跨平台,可以运行在Windows、Linux以及MacOS。
  4. 易于学习。站在非计算机专业的角度来讲,如果把编程语言当做解决问题的工具,Python相较于C++、Java、JavaScript等语言要易于学习和掌握。
  5. 极为强大而丰富的标准库与第三方库,比如电子邮件、比如图形GUI界面。
  6. Python是面向对象的语言。

Python的多线程
python的多线程是伪多线程
单线程:

Import time
Start = time.time()
Decrement(100000000)
Cost = time.time() – start
>>>6.54

多线程:

Import threading
Start = time.time()
T1=threading.Thread(target=decrement,args=[50000000])
T2=threading.Thread(targe=decrement,args=[50000000])
>>>6.85

在于 GIL ,在 Cpython 解释器(Python语言的主流解释器)中,有一把全局解释锁(Global Interpreter Lock).GIL
在解释器解释执行 Python 代码时,先要得到这把锁,意味着,任何时候只可能有一个线程在执行代码,其它线程要想获得 CPU执行代码指令,就必须先获得这把锁,如果锁被其它线程占用了,那么该线程就只能等待,直到占有该锁的线程释放锁才有执行代码指令的可能。
CPython的目的是: 通过多线程使得CPU资源可以被高效利用起来

写一个单例
特点

  1. 只能实例化一个对象
  2. 只能通过一个静态方法供其访问实现
  3. 可以读取系统中共享的一些配置信息,数据资源,避免数据的不同步
    适用场合:
  4. 需要频繁的进行创建和销毁的对象
  5. 创建对象时耗时过多或耗费资源过多,但又经常用到对象
  6. 工具类对象
Public class singleton{
	Statice private singleton singleton = new singleton();
	Private singleton(){
}
Static public singleton singleton2(){
Return singleton
}
}

Linux相关
查找某个进程的PID,进程的端口号: ps -a|grep name grep的作用是匹配字符
查看log tail -f test.log查看实时日志 tail -100f test.log查看最后100行日志记录
Tail -n 10 test.log 查看日志最后10行的日志 head -n 10 test.log 查看日志中前10行日志
操作系统相关

  1. 进程和线程
    进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位
    线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源
    进程和线程的关系:线程是进程的一部分
    一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程
    区别:
    进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位;
    在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行;
    系统为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存;
    线程是进程的一部分

  2. 内存分配的几种方式
    静态存储区 栈 堆

  3. 线程间的同步机制:互斥锁, 条件变量、临界区、信号量

  4. 进程间的通信方式:管道通信,消息队列、信号量通信、共享内存

  5. 死锁
    定义:死锁是指多个进程在运行中因争夺资源而造成的一种僵局
    产生死锁的原因:竞争资源、进程间推进顺序非法
    产生死锁的4个必要条件:互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
    请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
    不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
    环路等待条件:在发生死锁时,必然存在一个进程–资源的环形链

  6. 进程间的同步机制:管道,信号量

  7. 进程的五种状态
    运行态、就绪态、阻塞态、新建态、退出态

数据库相关

  1. sql中drop\truncate\delete的区别:
    delete:每次从表中删除一行,删除操作会被记录在redo和undo表中以便进行回滚,可通过rollback撤销操作
    truncate是DDL,会隐式提交,不能通过rollback回滚,不会触发触发器,会删除表中所有记录
    drop是DDL,会隐式提交,不能rollback,不触发触发器,删除表结构和所有数据,并将占用的空间全部释放。
  2. 进行大量查询时,查询方式的优化:建立索引
  3. 数据库事务的特性:原子性、一致性、分离性、持久性
  4. 索引数据结构:hash结构、二叉搜索树、红黑树、B树、b+树

测试相关
1.黑盒测试:等价类划分、边界值分析法、正交实验法、流程分析法、异常分析法
白盒测试:静态测试、动态测试
黑盒和白盒的区别:
黑盒是功能测试,通过测试来检测每个功能能否正常使用。
把程序看做一个不能打开的黑盒子,不考虑内部结构的情况下,在程序接口进行测试,只检查程序功能能否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出
白盒是结构测试,测试逻辑、代码
通过检测软件内部的逻辑结构,对软件的逻辑路径进行覆盖测试。一个模块的所有独立路径至少被测一次
2.测试的相关流程:
需求测试》》概要设计测试》》详细设计测试》》单元测试》》集成测试》》系统测试》》验收测试
4. 软件质量的测试:
功能特征:满足明确或者隐含的需求的那些功能
可靠特征:在规定的一段时间和条件下,软件能够维持其性能水平的能力
易用特征:使用软件所需要的努力
效率特征:软件的性能水平和所使用的资源量的关系
可维护特征:进行制定的修改所需的努力
可移植特征:不同的设备(pc、移动端),不同操作系统(ios、安卓)
Java几种常用的数据结构
Collections List Set ArrayList LinkedList HashSet HaspMap
九、编程题
Q:求最大回文个数
Q:一个数组中有正数有负数(没有0),请将它排成正负相间的数组(多余的全部放后面),时间复杂度不超过O(n);
Q:一道编程题,输入一串由ABCD四个字随机组成的字符串和一个整数k,返回字符串种前k个字的顺序重复了几次。
Q:编程:判断一个字符串是否符合ipv4格式
Q:代码题,给一个句子,只把单词翻转然后输入
Q:【手撕代码】字符串中只出现一次的字符、找出数组中最小的四个数字
Q:代码:一串字符串中最小的整数
Q:写代码,类似高考成绩,一个表中有很多数据(无序的),给你一个成绩,查出在表中的排名
Q:编程题,鸡兔同笼,一半的兔子伸起一半的脚,输入地上有几只脚,列出所有的可能性(兔子是基数则整除2)
Q:判断一个字符串是否是点分十进制的ipv4格式
Q:100万个学生 按照成绩 及对应排名录入 分数查找排名(hashmap)
Q:python的编程题,输入一个字符串然后空格切割在统计每个字母出现的次数

例1.在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数

class Solution:
    def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:
        i,j = len(matrix)-1,0
        while i >= 0 and j < len(matrix[0]):
            if matrix[i][j] > target:
                i -= 1
            elif matrix[i][j] < target:
                j += 1
            else:
                return True
        return False

例2.环形链表 有环返回true 无环返回false

class Solution:
    def hasCycle(self, head):
        if not head or not head.next:   #节点不存在或下一个节点不存在
            return False
        
        slow = head
        fast = head.next                #起点错开,防止下面循环判断有问题
        
        while fast and fast.next:       #快节点和快节点下一个节点不为空
            if slow == fast:
                return True
            slow = slow.next
            fast = fast.next.next
        return False

例3.滑动窗口–最长不含重复字符的子字符串

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        head = 0
        tail = 0
        if len(s) < 2: return len(s) # 边界条件
        res = 1
        
        while tail < len(s) - 1:
            tail += 1
            if s[tail] not in s[head: tail]:
                res = max(tail - head + 1, res)
            else:
                while s[tail] in s[head: tail]:
                    head += 1
        return res

例4.有效的括号-栈的简单应用

class Solution:
    def isValid(self, s: str) -> bool:
        dic = {')':'(',
               ']':'[',
               '}':'{'}
        stack = []
        for i in s:
            if stack and i in dic:#如果栈不空,且i为右括号
                if stack[-1] == dic[i]:#如果栈顶为对应的左括号,则弹出
                    stack.pop()
                else:
                    return False#如果栈顶不是对应的左括号,则不匹配
            else:
                stack.append(i)#如果i为左括号,入栈
        return not stack#最后如果栈不为空,则不匹配

例5.反转链表

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        cur, pre = head, None
        while cur:
            tmp = cur.next # 暂存后继节点 cur.next
            cur.next = pre # 修改 next 引用指向
            pre = cur      # pre 暂存 cur
            cur = tmp      # cur 访问下一节点
        return pre

例6.翻转单词

class Solution:
    def reverseWords(self, s: str) -> str:
        str = s.strip().split()
        str.reverse()
        return ' '.join(str)

分析浏览器页面下拉白屏的原因:

浏览器兼容
vue代码在谷歌中正常使用,但是在ie中显示白屏

js封装问题
js如果有问题,页面就不会显示,也有可能是后端文件编译的时候没有将文件编译过去,导致输入地址访问界面的时候出现空白

URL网址无效或含有中文字符(入门级错误)
APP内展示URL的来源主要是后端返回或前端拼接,甚至前端hardcode,网址存在不确定性,可能是无效或含有中文字符。大部分浏览器是能打开带有中文字符的网络地址,但是iOS的内嵌网页加加载框架无论是UIWebView还是WKWebView,都不能打开带有中文字符的网络地址,需要先对地址字符串做UTF8转码

硬件内存不足、进程崩溃
在 UIWebView 上当内存占用太大的时候,App Process 会 crash;而在 WKWebView 上当总体的内存占用比较大的时候,WebContent Process 会 crash,从而出现白屏现象。在 WKWebView 中加载下面的测试链接可以稳定重现白屏现象

缓存导致的白屏
解决方法有两种。第一,直接在网站后台——关于——缓存系统,清理即可。具体可以查看帮助文档shopex后台缓存清理方法。第二、在后台无法清理的情况下,我们可以直接删除缓存文件。具体操作是连接FTP,找到home/cache文件夹,然后进入里面删除cachedata.php。

朋友圈点赞测试:

  1. 功能测试
    是否可以点赞 是否可以取消点赞 多次点赞 多人点赞的顺序是否按照时间排序
    点赞是否显示头像和昵称 点赞之后能否进行评论 多用户点赞,是否可以按照顺序看到谁谁谁点赞了我
    2.接口测试
    点赞之后相同好友是否能收到提示消息
    3兼容测试:
    电脑端和手机端是否都可以进行点赞和取消点赞
    不同的移动端(ios和安卓)是否可以进行点赞和取消点赞
  2. 可用性点赞
    网络不好的情况下点赞会出现什么情况 网络断开是否还能继续点赞
    5 安全性测试
    点赞是否会泄露用户个人隐私
    6.界面测试
    点赞之后是否显示头像 分辨率 点赞之后是否显示正确的头像 点赞后的名字排版是否顺序正确 点赞后名字排序是否美观(对齐方式 间隔方式 字体 颜色 大小)

测试开发的工作内容:
1、首先针对测试这边的工作有(可以根据测试流程来回答):
需求分析阶段:需求分析与评审、学习业务流程、提取功能点、编写需求分析说明书
测试设计阶段:编写测试计划说明书(5W1H)、编写测试用例(涉及自动化测试的话需要编写测试用例脚本)
测试执行阶段:提交BUG、跟踪BUG修改状态(这里可能会有回归测试,并且在测试执行之前会搭建测试环境)
测试总结阶段:提交BUG表单、编写测试总结报告
2、针对开发这边的工作:
自动化测试:编写测试脚本,执行测试,分析,提交BUG,跟踪BUG状态、总结
对测试工具的开发
软件开发(就是开发的工作)
二次开发(在开发人员开发好的软件上进行二次开发)

你怎么理解测开的?

测开岗其实分两种,以字节为例,测试开发工程师(技术序列),测试开发工程师(测试序列)。

技术序列偏向于测试平台的研发工作,偏向于纯开发,很少涉及具体业务测试,测试序列偏向业务测试,代码开发工作较少,目前各个公司实际上区分不太明显,大部分还是偏向于业务测试,少数分的特别清楚如字节。

但是部门公司面试标准是和开发对齐的,问的问题有时候会和开发没有特别大的区别、手撕算法难度也差不多,所以准备时应以开发岗的要求来做准备。

为什么做测开?

因为我的师兄师姐基本都是做开发或者算法,所以特通过他们了解了一些关于开发和算法岗的情况。测开这个岗位是通过我室友了解到的,后来自己也去了解了一些测开的知识,我觉得相对于开发岗或者算法岗,做测试这个工作更让我有成就感一些,我本身也挺喜欢测开这个工作模式。因为是第一份工作,所以也深入的去了解了一些测开的一些前景,因为现在客户对产品的质量越来越高,所以对产品的测试也越来越重要,比如性能测试和安全测试。因为测开这个岗位需要了解的东西很多,前端、开发、算法都需要了解一些。因此如果需要转岗的话,测开也是比较好转的,人生的第一份工作,我也想有更有可能性一些,不想一开始就把自己定位到某一个岗位上,我也想多学习,多了解一些知识。

怎么理解测试?

首先,测试是验证实际结果与预期结果是否一致的过程。

其次,测试的作用是发现并深层次的定位BUG,在一定程度上协助开发找到解决问题的方案。

再者,测试是为了保证产品的质量,在产品上线之前更可能多的发现产品的缺陷,避免上线后出现出现重大问题。

参考:
1.https://www.nowcoder.com/discuss/511216
2.https://blog.csdn.net/wang_chaochen/article/details/114768737?spm=1001.2014.3001.5501、
3.https://blog.csdn.net/wang_chaochen/article/details/115422558?spm=1001.2014.3001.5501
4.https://blog.csdn.net/wang_chaochen/article/details/115497985?spm=1001.2014.3001.5501

你可能感兴趣的:(测开学习笔记,面试,python)