admin管理员组文章数量:1579914
字节跳动2021提前批测试开发
---------------------------------------面经1 2020-07-03--------------------------------------
-
接口测试中遇到的问题怎么解决
接口测试:测试系统组件间接口的测试,用于检测外部系统与系统之间以及内部各子系统之间的交互点。重点检查数据的交换,传递和控制管理过程,以及系统间的交互逻辑依赖关系等。
接口有两种:
(1)内部接口:方法与方法、模块与模块之间的交互
(2)调用对外包装的接口:
接口参数数据类型:数值型,字符串型,数组/链表,结构体
接口测试常见问题:
(1)特殊值处理不当导致程序异常退出或崩溃;
(2)类型边界溢出,导致数据读出和写入不一致;
(3)取值边界外值未返回正确的错误信息;
(4)参数为null或空字符串“”等;
(5)权限未处理,可以访问其他用户的信息; -
TCP和UDP的区别及应用场景
TCP和UDP是传输层的协议
面向连接 VS 无连接
TCP建立一个连接需要3次握手IP数据包,断开连接需要4次挥手。而且断开连接时发起方可能进入TIME_WAIT状态长达数分钟,此状态下连接无法被释放;
UDP不需要建立连接,可以直接发起
可靠 VS 不可靠
TCP利用握手,ACK和重传机制,UDP没有
1)校验和,校验数据是否损坏;
2)定时器,分组丢失则重传;
3)序列号,检测丢失的分组和重复的分组;
4)确认应答ACK,接收方告知发送方正确接收分组以及期望的下一个分组
5)否定确认,接收方通知发送方未被正确接收的分组;
6)窗口和流水线,用于增加信道的吞吐量,窗口大小:无需确认应答可以继续发送数据的最大值
有序性
TCP利用seq序列号对包进行排序,UDP没有
面向字节流 VS 面向报文
1)面向字节流:应用程序和TCP的交互是一次一个数据块,TCP把应用程序看成一连串的无结构字节流;
2)面向报文:应用层交给UDP多长的报文,UDP就照样发送,一次发送一个报文
TCP有流量控制,UDP没有
TCP头部有20字节,UDP有8字节
应用场景
1)TCP:效率要求相对低,但准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等:文件传输、接收邮件、远程登录
2)UDP:效率要求相对高,对准确性要求相对低的场景:QQ聊天、在线视频、网络语音电话等即时通讯、广播通信 -
进程和线程的区别
进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位
线程:是进程的一个执行单位,是进程内的调度实体,比进程更小的独立运行的基本单位,线程也称轻量级进程。一个程序至少一个进程,一个进程至少一个线程
区别:
1)地址空间:同一进程的线程共享本进程的地址空间,而进程之间是独立的地址空间
2)资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、CPU等,但进程之间的资源是独立的
3)独立执行:每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
4)线程是处理器调度的基本单位,但进程不是
5)两者均可并发执行 -
了解哪些数据结构?数组与链表的区别
数据结构:相互之间存在一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成的。数据结构包括数据的逻辑结构(反应数据元素之间的逻辑关系)、存储结构(数据的逻辑结构在计算机存储空间中的存放形式)和运算结构。
线性表:顺序表、链表、栈、队列
树结构:普通树、二叉树、线索二叉树
图结构数据
数组与链表的区别:
1)存储区间连续 VS 不连续
2)存储数据 VS 存储数据的数据域和指向下一个节点地址的指针域
3)随机访问性强O(1) VS 查找效率低O(n)
4)插入删除效率低O(n) VS 插入删除效率高O(1)
5)数组空间从栈分配 VS 链表空间从堆分配 -
进程的死锁、进程的状态有哪些?
死锁:指多个进程在执行过程中,由于竞争资源或者彼此通信而造成的一种阻塞的现象(相互挂起等待),若无外力作用,它们都将无法推进下去,称产生了死锁
死锁产生的原因:
1)系统的资源不足
2)进程(线程)推进的顺序不对
3)资源的分配不当
死锁产生的四个必要条件
1)互斥条件:进程申请的资源在一段时间中只能被一个进程使用;
2)请求与等待条件:进程已经拥有了一个资源,但是又申请新的资源,拥有的资源保持不变
3)不可剥夺条件:在一个进程没有用完,主动释放资源的时候,不能被抢占
4)循环等待条件:多个进程之间存在资源循环链
处理死锁的方法:
1)预防死锁:破坏死锁产生的四个条件之一,互斥条件不能破坏
2)避免死锁:合理分配资源
3)检查死锁:利用专门的死锁机构检查死锁的发生,采取相应方法
4)解除死锁:一般是强行剥夺资源
进程的状态:一个进程的生命周期可以划分为一组状态
1)就绪状态:进程已经具备运行条件,但是CPU还没有分配过来
2)运行状态:进程占用CPU,并在CPU上运行
3)阻塞状态:进程因等待某件事发生而暂时不能运行
状态装换:
1)运行–>就绪:1. 系统分配给进程占用CPU的时间片完成;2. 抢先式优先级调度算法的系统中,有更高优先级的进程要运行,进程被迫让出CPU,转为就绪状态;
2)就绪–>运行:运行的进程的时间片用完,调度到就绪队列中选择合适的进程分配CPU
3)运行–>阻塞:正在执行的进程因发生某等待事件而无法执行,转为阻塞状态,如I/O请求
4)阻塞–>就绪:进程所等待的事情已经发生,进入就绪队列 -
断点续传
从文件上次中断的地方开始重新下载或上传。实现断点续传需要客户端记录下当前的下载或上传进度,并在需要续传的时候通知服务器本次需要下载或上传的内容片断。否则每次出现异常或用户主动的暂停,都要重头下载,浪费时间 -
数据库的索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息
索引包括:1)主键索引:特殊的唯一索引,不允许有空值;2)普通索引:最基本的索引,没有任何限制;3)唯一索引:索引值必须唯一,允许有空值;4)复合索引:多个字段上建立索引 -
表A插入表B的语句
若两表字段一致:INSERT INTO TB SELECT * FROM TA
若只导入指定字段:INSERT INTO TB(WORD1, WORD2) SELECT WORD1, WORD2 FROM TA 字段顺序必须一致 -
HTTP请求过程
HTTP:HyperText Tansfer Protocol,超文本传输协议,基于TCP的关于数据如何在万维网中通信的协议
1)对网址www.baidu进行DNS域名解析,得到对应的IP地址
2)根据IP找到对应的服务器,发起TCP三次握手
3)建立TCP连接后发起HTTP请求
4)服务器响应HTTP请求,浏览器得到HTML代码
5)浏览器解析HTML代码,请求HTML代码中的资源(如图片、CSS等)
6)浏览器对页面进行渲染呈现给用户
7)服务器关闭TCP连接
DNS如何找到域名:递归查询方式,先找DNS缓存->找根域名服务器->根域名再找下一级
为什么HTTP协议基于TCP实现连接:TCP是端到端可靠的面向连接的协议,HTTP基于传输层TCP协议不用担心数据传输不准确等问题
发起HTTP请求:HTTP请求报文由三部分组成:1)请求行:描述客户端的请求方式(GET/POST等),请求的资源名称(URL,统一资源定位符)以及使用的HTTP协议版本号;2)请求头:描述客户端请求哪台主机及其端口;3)空行;4)请求正文:使用POST方法时,需要客户端向服务器传递数据,数据存储在请求正文中(GET方式保存在URL地址后,不放在这里)
HTTP的请求方法:GET和POST的区别
1)GET从服务器上获取数据,POST向服务器传送数据。它们都是传递数据的方式,本质上都是发送请求和接收结果,只是组织格式和数据量上有差别;
2)GET和POST都是TCP连接,GET产生一个数据包,POST产生两个TCP数据包;
3)GET把HTTP HEADER和DATA一并发送过去,服务器响应200(返回数据),而POST方式下,浏览器先发送HEADER,服务器响应100 continue&
版权声明:本文标题:字节跳动抖音 测试工程师 视频面试 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727863735a1134237.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论