lukaliou123 / lukaliou123.github.io

lukaliou123在2022年的面试用知识点总结
Other
5 stars 0 forks source link

字节测试开发面经补充 #22

Open lukaliou123 opened 2 years ago

lukaliou123 commented 2 years ago

1.什么是单元测试、集成测试、系统测试、验收测试、回归测试

1.单元测试:是对软件中最小可测试单元(人为规定的最小必测功能模块)进行检查和验证。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 2.集成测试:也叫组装测试或联合测试。在单元测试的基础上将所有模块按照要求设计组装成为子系统或系统,进行集成测试。 3.系统测试:对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不复合系统说明书的地方。系统测试可以发下系统分析和设计中的错误。 4.验收测试:是部署软件之前的最后一个测试操作。在上述步骤完成之后,产品发布之前所进行的测试活动。验收测试是技术测试的最后一个阶段,也称交付测试。目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。 5.回归测试:修改了了旧代码之后重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

lukaliou123 commented 2 years ago

2.软件测试用例六大类型

功能性测试(Functionality):关注功能是否正确。 可用性测试(Usability):关注产品是否好用。 兼容性测试(Compatibility):关注产品是否适用多种平台。 可靠性测试(Reliability):关注产品是否稳定可靠。 安全性测试(Security):关注产品是否存在漏洞。 性能测试(Performance):关注产品是否能够高效运行。

例子:微信红包测试用例

功能测试 1.红包最多可以输入的金额; 2.红包一次性可以发送的最大个数; 3.在输入红包的钱数和个数时只能输入数字; 4.当余额不足时,红包发送失败; 5.发送的红包自己是否可以领取;

性能测试 1.发红包成功后的跳转时间; 2.红包超时未领取后的退款时间; 3.网速较差时,发红包的时间;

安全测试 1.红包发送成功后,微信是否会收到通知; 2.红包发送失败,余额不会产生变化;

兼容 1.苹果,安卓是否都可以发送红包 2.电脑端可以抢微信红包

UI界面测试 1.输入界面是否清晰可见; 2.红包界面颜色搭配是否美观; 3.输入金额界面是否有错别字

易用性测试 1.是否可以选择默认支付方式; 2.余额不足时,是否可以切换支付方式; 3.是否支持密码支付和指纹支付;

lukaliou123 commented 2 years ago

3谈谈对索引的理解

见目录20的8 9 https://github.com/lukaliou123/lukaliou123.github.io/issues/20#issuecomment-1105397754

4.Java中进程线程并发,协程

一个程序可以包含多个协程,线程相对独立有自己的上下文,协程也是,但是协程由自己控制,不受操作系统控制,可以不加锁的访问全局变量,所以上下文的切换非常快,可以说是轻量级的线程,也可以说称之为用户级别的线程就叫协程,一个线程可以有多个协程,一个进程也可以单独拥有多个协程,线程进程都是同步机制,而协程则是异步。 协程(Coroutine)最直观的解释是线程中的线程、轻量级线程或者用户态线程,一个线程可以拥有多个协程,且不被操作系统内核管理,完全由程序所控制(即协程的调度、切换都发生在用户态)。

5.数据库的几种连接方式,是干什么的

**交叉连接(CROSS JOIN)

内连接(INNER JOIN)

外连接(LEFT JOIN/RIGHT JOIN)

联合查询(UNION与UNION ALL)

全连接(FULL JOIN)** image

lukaliou123 commented 2 years ago

6.拥塞控制四个算法

见目录2的 8 https://github.com/lukaliou123/lukaliou123.github.io/issues/2#issuecomment-1047724057

7.滑动窗口的原理

窗口滑动协议是TCP使用的一种流量控制方法。该协议允许发送方在停止并等待接收确认报文前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。

8.输入URL的过程和SSL握手过程

见目录2的 9和16 https://github.com/lukaliou123/lukaliou123.github.io/issues/2#issuecomment-1047760842
https://github.com/lukaliou123/lukaliou123.github.io/issues/2#issuecomment-1047850672

9.http请求报文结构

见目录2的 18 https://github.com/lukaliou123/lukaliou123.github.io/issues/2#issuecomment-1062950265

10.http常见的响应码,301和302什么区别

https://www.cnblogs.com/starof/p/5035119.html 301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

11.DNS作用是什么?几种实现方式?

DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。

举例来说,如果你要访问域名math.stackexchange.com,首先要通过DNS查出它的IP地址是151.101.129.69。 DNS查找网页详细参考 https://github.com/lukaliou123/lukaliou123.github.io/issues/2#issuecomment-1047760842

12.网络的七层模型,路由器和交换机分别在哪层

七层模型见 https://github.com/lukaliou123/lukaliou123.github.io/issues/2#issuecomment-1047609628 工作层次不同: 交换机主要工作在数据链路层(第二层) 路由器工作在网络层(第三层)。 转发依据不同: 交换机转发所依据的对象时:MAC地址。(物理地址) 路由转发所依据的对象是:IP地址。(网络地址) 主要功能不同: 交换机主要用于组建局域网,而路由主要功能是将由交换机组好的局域网相互连接起来,或者接入Internet。 交换机能做的,路由都能做。 交换机不能分割广播域,路由可以。 路由还可以提供防火墙的功能。 路由配置比交换机复杂。 价格不同 交换机是看门大爷,路由是邮差

补充:不错的网络通信文章

https://mp.weixin.qq.com/s/jiPMUk6zUdOY6eKxAjNDbQ

lukaliou123 commented 2 years ago

13.索引失效原理

13.1.失效的场景

违反最左前缀法则,索引失效 范围查询右边的列,不能使用索引 以 % 开头的 like 模糊查询,索引失效 字符串不加单引号,导致索引失效 索引列上进行运算操作,索引将失效 用 or 分割开的条件,如果 or 前条件中的列有索引,而后面的列中没有索引,那么前面的列索引失效 如果 mysql 评估使用索引比全表慢,则不使用索引

13.2.具体分析一下索引失效原理

image 1. 为什么违反最左前缀法,索引会失效? 答:如果不遵循最左前缀法则,相当于把 a 干掉了,那么在没有 a 的情况下,b 肯定是无序的,因为 b 有序的条件是 a 相等的情况下。这时在无序的 B+ 树上找到需要的值就用不到索引,只能进行全表扫描

  1. *为什么范围查找的右边为什么索引会失效,如:explain select from user where a>1 and b=1? 答:查找 a>1 & b=1 的数据,我们首先根据这个 a 的索引顺序能找到 a 大于 1 的这些数据**,然后再去找 b = 1 的数据,这时发现 a>1 对应的这些 b 的数据是无序的,所以右边的索引失效了。 image

  2. 为什么以 % 开头的 like 模糊查询,索引会失效? 答:如果 %a,去查找以 a 结尾的[字符串],可以看到字符串尾部是没有顺序的,所以查询时只能进行全表扫描,就用不到索引。 image

lukaliou123 commented 2 years ago

14.chmod,chown,chgrp命令

chmod: https://github.com/lukaliou123/lukaliou123.github.io/issues/14#issuecomment-1063679178

chown: Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令 Z~)YB8`EM)ZA@W}OH@ 2~DP

chgrp: Linux chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。 与 [chown] 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员 1651056603(1)

15.find命令

1651058883(1)

lukaliou123 commented 2 years ago

16.算法集合

1.最长无重复字符串 https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/

2.代码题:一个山峰型数组(先单调增后单调减),对数组去重排序并输出,比如 输入[1,3,5,6,4,3,2,1],去重并排序后输出[1,2,3,4,5,6],要求时间复杂度O(n),空间复杂度O(1),我的解法是先找到最大值对应下标,从而把数组分成前半段与后半段,然后从右向左的顺序取后半部分数组每个数字,并将其依次插入到前半部分,遇到重复则丢弃

3.驼峰子串的去除 https://www.nowcoder.com/questionTerminal/3c9ab7db31b442a8b1b06d26f15922dc

4.整数反转 https://leetcode-cn.com/problems/reverse-integer/

5.寻找逆序对 https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/