相信大多数人都经历过面试,然后面试完就在怀疑人生,发现自己啥也不会,这是绝大多数人都会有的感觉,不单单只是测试开发工程师,因此,这几天抽空将之前朋友面试时遇到的面试题做了个汇总,一方面自己以后回顾学习用,一方面为大家奉送上一份福利。

很多软件测试开发工程师面试之前,可能没有较长的工作时间或者较为丰富的工作经验,所以不知道互联网公司或者一线互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨败收场。所以我找这位朋友要来了他当时去字节面试时的面试题,我把它整理好了,还有一些他自己平常复习的学习 资料以及笔记,获取方式在文末哈!!在这分享给大家参考,让即将面试或是有想法跳槽的朋友们了解一下一线大厂面试时都喜欢问那些问题。

面试内容:
个人信息:(工作/实习经验,所做的项目,态度素养)
测试思维
情景问题
计算机网络
操作系统
代码/算法题
语言(Python/Java)
Linux
数据库
个人信息

  1. 公司测试流程?/测试工作怎么开展的?/怎么展开测试?

考察是否熟悉测试过程中各个环节。具备知识:软件生命周期、bug 生命周期、测试流程。

大概流程为需求评审会议 —> 测试计划(测试范围、时间节点、任务分配、测试策略、环境,风险评估)—> 测试用例编写(测试思维)、内部/项目组评审 —> 测试执行(开发编译完成,提测):发现 bug 定位 bug,提交并跟踪 bug,多轮回归测试,测试结束 —> 整理测试报告–> 发布线上,线上问题跟踪。

可依据自己公司做适当调整。

2.做过什么项目,负责什么?

3.项目中每个业务扣细节?

4.个人规划、如何理解测试岗位

5.在最近生活或者工作上,遇到的最有挑战的事

测试思维
1.纸杯子做什么测试?

反问面试官:这个水杯容量、材质、大小、形状、功能有无限制?

面试官:没有限制

我:假设这个水杯 100ml 办公室一次性的纸质水杯

功能测试、界面测试、易用性测试、兼容性测试、安全测试、性能压力来思考

功能测试:水杯能否正常装水,不漏水?100ml 边界值? 装冷水开水热水?能否降解?…

界面测试:外观颜色、设计、logo、界面文字是否正确?.

易用性测试:隔热、易握?杯口是否毛刺?设计是否符合人体工学?…

兼容性测试:装气体/固体/液体? 不同环境下是否正常?

安全测试:材质质量,是否防止腐蚀能力?防止碰撞,割手?抑制细菌?…

性能压力:摔多次?是否耐摔?(不同高度) 挤压(不同角度),是否变形?..

2.发红包测试用例?

3.微信点赞如何测试?

  1. 设计发朋友圈测试用例

5.领取优惠券的页面如何设计?

6.设计抖音视频播放页面测试用例?

7.针对抖音搜索界面,设计测试用例?

8.如何测试一瓶矿泉水?

9.一个项目,有增删改查接口等,做接口测试,怎么测?

情景问题

  1. 视频卡顿如何排查

2.打开 APP 后页面空白,怎么排查问题?

答案:

先确保网络正常、输入的 URL 地址是正确的
通过浏览器调试工具或者抓包工具例 fiddler,查看控制台的请求和响应,
查看请求地址和参数等是否正常;后台返回状态码、响应数据等是否正常
一般经过以上步骤,基本能够定位到问题,例控制台报 js 异常之类的,则前端问题;若返回状态 500,则后端问题,可同步查看服务器日志来定位
3. 为微信的点赞功能设计测试用例,假如点赞了但是点赞数没有加一,可能报错在哪里?

答案:url 定位错误、代码错误、断网操作网络不好、未更新、次数限制

  1. 网络良好的情况下,发现数据传输过程出现 404 的情况,你认为是什么问题。

原因一般来说有几种情况:

无法在所请求的端口上访问 Web 站点。
Web 服务扩展锁定策略阻止本请求。
MIME 映射策略阻止本请求
网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。
跟踪访问的各类脚码或 CSS 文件无效但调用代码依然存在。
某个目录直接删除
网页 URL 生成规则改变
网页文件更名或移动位置
导入链接拼写错误等
5. A 给 B 发送消息后,A 看见消息发送出去了,但是 B 没有收到,怎么排查问题?

  1. 网页加载慢的原因?

  2. 与开发人员冲突的处理方法及遇到问题的解决方法

  3. 一个 bug 开发不认同是 bug 你该怎么做 ?

首先确认开发环境是否跟自己测试环境一致(有时候开发是在他们已更新代码的环境上验证 bug 的,所以 bug 就没出现,但在测试环境上面会出现),确认在测试环境能重现,如果确认是缺陷跟开发保持有效的沟通,

如果是级别较低的建议性 bug,可以先记录到 bug 平台,先保留沟通;

如果是 bug 级别较高的问题,对应需求文档的预期结果跟开发说明,更有说服力;耐心讲解 bug 的危害,不行就找产品确认,确认是 bug 注明情况并再次指派给开发

  1. 你正在测试,产品组拿来一个紧急测试让你测,你该怎么办?

  2. 如果同事进度不能符合预期,影响整体进度怎么办

  3. 如果领导给你一个不熟悉的事件,但很紧急怎么办?

计算机网络
1.介绍 OSI 模型

第一层:物理层,功能:利用传输介质为通信的主机之间的建立、管理和释放物理连接,实现比特流的透明传输,为数据联立层提供数据传输服务

第二层:数据链路层,功能:在物理层提供比特流的基础上通过建立数据链路连接,采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据链路

第三层:网络层,功能:通过路由选择算法为分组通过通信子网选择适当的传输路径,实现流量控制,拥塞控制与网络互联的功能

第四层:传输层,功能:为分布不同地理位置计算机的进程提供可靠的端对端链接与数据传输服务;传输层向高层屏蔽了底层数据通信的细节

第五层:会话层,功能:负责维护两个会话主机之间连接的建立、管理和终止,以及数据的交换

第六层:表示层,功能:负责通信系统之间的数据格式变换、数据加密与解密、数据压缩与恢复

第七层:应用层,功能:实现协同工作的应用程序之间的通信过程控制

2.为什么 TCP 消耗系统资源多

3.TCP 与 UDP 区别

基于连接与无连接;
对系统资源的要求(TCP 较多,UDP 少);
UDP 程序结构较简单;
流模式与数据报模式 ;
TCP 保证数据正确性,UDP 可能丢包,TCP 保证数据顺序,UDP 不保证。
4.TCP 怎么保证可靠连接

5.http 会话保持功能如何实现?

6.http 状态码?

1XX:通知。1XX 系列响应代码仅在与 HTTP 服务器沟通时使用。

2XX: 成功。2XX 系列响应代码表明操作成功了。

3XX 重定向。3XX 系列响应代码表明:客户端需要做些额外工作才能得到所需要的资源。

4XX:客户端错误。这些响应代码表明客户端出现错误。不是认证信息有问题,就是表示格式或 HTTP 库本身有问题。客户端需要自行改正。

5XX 服务端错误。这些响应代码表明服务器端出现错误。

7.http 长连接和短连接以及他们分别适用的场景 ?

8.get 和 post 区别?

Get:

a.一般对于从服务器取数据的请求可以设置为 get 方式

b.Get 方式在传递参数的时候,一般都会把参数直接拼接在 url 上(例如:http://xxx?id=1&type=2)

c.Get 请求方法可以传递的参数数据量是有限的(因为一般参数是拼接在 url 上,而浏览器对于 url 的长度是有限制的)

d.Get 请求因为是直接将数据拼接在 url 上,所以安全性不如 post 强(相对),但是 get 的执行效率要快于 post

Post:

a.一般往服务器提交数据的请求会设置为 post 方式

b.Post 方式传递参数一般都会把参数放在请求体,而不会拼接在 url

c.Post 请求方法可以提交的数据量不受限制

Post 请求传参相对于 get 要安全(相对不是绝对),但是 post 的执行效率不如 get。

9.post 主体的格式?

10.http 协议的 header

11.cookie 和 session 是什么,为什么要用 cookie 和 session ?

12.DNS 协议和作用?

13.Https 中的 CA 证书在客户端还是在服务端?

操作系统

  1. 进程和线程的区别?

进程是资源分配的最小单位,线程是程序执行的最小单位。
进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此 CPU 切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

  1. 多线程和多进程,以及应用场景?

  2. 进程通信方式 ?

  3. 内存泄漏?

  4. 堆和栈?

栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收 。

  1. 堆内存和栈内存?

  2. 什么是死锁,死锁的条件?

  3. 产生死锁的原因?

可归结为如下两点:

a. 竞争资源

系统中的资源可以分为两类:

可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,CPU 和主存均属于可剥夺性资源;

另一类资源是不可剥夺资源,当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机等。

产生死锁中的竞争资源之一指的是竞争不可剥夺资源(例如:系统中只有一台打印机,可供进程 P1 使用,假定 P1 已占用了打印机,若 P2 继续要求打印机打印将阻塞)
产生死锁中的竞争资源另外一种资源指的是竞争临时资源(临时资源包括硬件中断、信号、消息、缓冲区内的消息等),通常消息通信顺序进行不当,则会产生死锁

b. 进程间推进顺序非法

若 P1 保持了资源 R1,P2 保持了资源 R2,系统处于不安全状态,因为这两个进程再向前推进,便可能发生死锁

例如,当 P1 运行到 P1:Request(R2)时,将因 R2 已被 P2 占用而阻塞;当 P2 运行到 P2:Request(R1)时,也将因 R1 已被 P1 占用而阻塞,于是发生进程死锁

  1. 如何预防死锁,!避免死锁,死锁发生的检查?

资源一次性分配:一次性分配所有资源,这样就不会再有请求了:(破坏请求条件)

只要有一个资源得不到分配,也不给这个进程分配其他的资源:(破坏请保持条件)

可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)

资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)

代码题、算法题
1.装饰器并写一个装饰器例子?

2.找出 数组中出现次数超过一半的数字

3.哈希表的空间复杂度

4.算法题:给你一个字符串,查找出所有的重复子字符串。

5.算法题:树的深度遍历:while 循环:栈,先入右子树节点,后入左子树节点。

6.算法题:给你一个字符串找出其中的回文字符串,对你的算法设计用例

7.算法题:二叉树的前序遍历

Python/Java 基础
面向对象语言的特性?
深拷贝与浅拷贝?
数据类型分为两种基础类型和引用类型

基础类型:像 Number、String、Boolean 等这种为基本类型
引用类型:Object 和 Array
浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())

深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝

python 元祖和列表的区别
a=[] 这是一个列表

b=() 这是一个元组

区别:列表可以修改而元组不能修改,例如可以往列表中用 append()添加元素,由于元组是不可修改的所以不存在添加元素的问题。

相同点:列表和元组都是容器,包含了一些列的对象,二者都可以包含任意类型的元素甚至包含序列。

python 去重用什么 ?
python 用过哪些库函数?
selenium 用到什么程度了?
python 装饰器,作用,用法
Java:多态说一下,接口类和抽象类的区别;
Java/Python 的垃圾回收机制?
Java 和 python 创建多线程和多进程的方式 ?
Linux
1.常见命令

2.打印当前文件夹文件 ls -al a 所有文件 l 详细信息

3.查询 CPU 等情况的命令

答案:free 命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。

top 命令提供了实时的运行中的程序的资源使用统计

atop 命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注

htop 命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。列表可以水平及垂直滚动。

ps 命令可以实时的显示各个进程的内存使用情况。

smem 命令允许你统计基于/proc 信息的不同进程和用户的内存使用情况。内存使用情况的分析可以导出图表(如条形图和饼图–图形界面窗口才提供)。

vmstat 命令显示实时的和平均的统计,覆盖 CPU、内存、I/O 等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。

nmon 是一个基于 ncurses 的系统基准测试工具,它可以监控 CPU、内存、I/O、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。

数据库
MySQL 存储引擎如何实现?
事务概念及其特性?
概念:

1.数据库事务: 数据库事务通常指对数据库进行读或写的一个操作序列。

它的存在包含有以下两个目的:

为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
多表查询、普通 SQL 和存储过程的区别?
索引的底层、底层为什么要采用 B 树或 B+ 树?
B 树和 B+ 树区别?
熟悉数据库吗:学生选课系统怎么建表,查询一个老师教的所有学生的名字?
取一个年级中每个班级年龄最小的同学名字?
where 和 having 的区别?
答案:

用的地方不一样

where 可以用于 select、update、delete 和 insert into values(select * from table where …)语句中。 having 只能用于 select 语句中

执行的顺序不一样

where 的搜索条件是在执行语句进行分组之前应用

having 的搜索条件是在分组条件后执行的

即如果 where 和 having 一起用时,where 会先执行,having 后执行

子句有区别

where 子句中的条件表达式 having 都可以跟,而 having 子句中的有些表达式 where 不可以跟;having 子句可以用集合函数(sum、count、avg、max 和 min),而 where 子句不可以。

总结

1.WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
2.GROUP BY 子句用来分组 WHERE 子句的输出。
3.HAVING 子句用来从分组的结果中筛选行

内连接和外连接?
内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合

条件的记录不会出现在结果集中,即内连接只连接匹配的行。

外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个

表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。

左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,

对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以

NULL 来填充。右外连接,也称右连接,右表为主表,右表中的所有记录都会出现

在结果集中。左连接和右连接可以互换,MySQL 目前还不支持全外连接。

数据库字段去重?
SQL 语句 查询每一门课程分数都大于 80 分的学生姓名?
SELECT 姓名 FROM Student GROUP BY 科目 Having MIN(成绩)>=80

总结:
以上就是字节跳动的面试全部内容,接下来给大家看看平常他复习的资料都有哪些。

获取方式:更多软件测试面试资料关注公众号:‘IT互联网二狗子’

400页软件测试面试题核心知识点:

这份面试题内容涉及:测试理论、Linux基础、MySQL基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等。

其他
其余一些视频,项目实战,测试报告模板,软件测试工具包等等,都看了看。

他整整复习了三个月,金三成功上岸字节,面试题及答案分享相关推荐

  1. 金三银四Java面试题及答案整理(2023最新版) 持续更新

    作为一名优秀的程序员,技术面试是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识. 如果你参加过一些大厂面试,肯定会遇到一些这样的问题: 1.看你项目都用的框架 ...

  2. SpringBoot:三十五道SpringBoot面试题及答案!

    SpringBoot面试 前言 今天博主将为大家分享三十五道SpringBoot面试题及答案,不喜勿喷,如有异议欢迎讨论! Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成 ...

  3. 2022金三银四前端面试题预告

    2022金三银四前端面试题预告 马上就到了面试季了,今天整理了一下前端常见的一些面试题.虽说面试的时候造火箭,需要你背好八股文,不过很多基础还是应该掌握的,就算不面试,也应该多看一些基础,内功深厚了, ...

  4. 耗时118天爆肝【1296页】的“Android高级开发面试题”,终于成功上岸字节

    前言 本人16年毕业于一家普通二本,考研裂开了且没有实习经验,只做过两个项目,每天就是不断地投简历.刷面经,感觉自己都要抑郁了,最后勉强进入了一家学校合作的互联网公司,后面陆陆续续也换了几家公司,毕业 ...

  5. 拼多多终面竟被“Out”了?春节宅家复习,备战金三银四拿offer

    前言 随着互联网的发展,近两年来也涌现了越来越多的新兴互联网企业,除了BAT三巨头以外,其他互联网公司的表现力和实力也不容小觑,拼多多就是其一,如果要说拼多多是发展最快的新兴互联网公司之一,应该是没有 ...

  6. 金三银四求职季来了!分享几道最常见的app面试题,帮助您更好准备面试求职!

    目录:导读 引言 一.Web 端测试和 App 端测试有何不同? 二.App是如何测试的? 三.app闪退的可能原因? 四.给你一个登录页面,你要如何测试? 五.测试过程中遇到app出现crash或者 ...

  7. 最全java面试题,整整1000道,助你们成功上岸。

    前言 ​直接上干货,请往下看. 整理了铜三铁四的Java面试题内容,包含:Java.MyBatis.ZooKeeper.Dubbo.Elasticsearch.Memcached. Redis.MyS ...

  8. 微型计算机原理第三版考试,微机原理试题及答案

    微机原理试题及答案 一.填空题(每空1分,共15分) 1. 在计算机中,对带符号数的运算均采用补码.带符号负数1100 0011的补码为_10111101_. 2.单片机通常采用"三总线&q ...

  9. 金三银四季节前端面试题复习来了

    vue3和vue2的区别有哪些 Diff算法的改进+Tree Sharing优化主要的API 双向绑定改为es6的proxy 原生支持ts composition API 移除令人头疼的this 说说 ...

最新文章

  1. [转载]SQL注入***之 mysql_set_charset(版本要求p
  2. Linux进程防杀/防崩溃monitor的实现
  3. php珠心算源码,深度解析珠心算的“开智”功能
  4. linux下sqlmap安装教程,(转)Sqlmap官网下载与安装教程[windows/linux版本]
  5. zabbix agent安装_OpenSUSE RPM安装 zabbix-agent
  6. 【数据结构笔记20】图的定义,图的表示:邻接矩阵与邻接表
  7. 基于springboot的贫困帮扶系统
  8. iOS gif加载视图
  9. 云服务器搭建京东签到,在路由器上实现jd京东每日自动签到、自动领京豆,并将签到结果推送至微信...
  10. win7系统服务器修改文件权限,Windows7系统修改Trustedinstaller权限文件的方法
  11. matlab心理学函数包,心理学研究方法:基于MATLAB和PSYCHTOOLBOX
  12. find命令查找包含指定内容的文件
  13. 假设检验1——理论基础
  14. 思科Cisco交换机运维手册
  15. 科普:手机电池的保护电路
  16. Java 10年回顾:世界各地开发高手谈Java
  17. erp软件的主要功能
  18. 遗忘曲线艾宾浩斯规律
  19. 专访 | 外媒看FAST:刘慈欣说的黑暗森林法则成立吗
  20. python绘制太阳系模型_制作一个太阳系模型

热门文章

  1. uni-app里的拓展组件uni ui与UI框架uView UI的Popup 弹出层的区别!
  2. 要闻:2016胡润百富榜昨天发布 宝能姚振华从炸油条到千亿身家“大黑马”
  3. 为什么邮件发的邮箱会进垃圾箱?企业邮箱进垃圾箱有什么处理方法?
  4. 还在担心图片的版权吗?分享11个无版权、高清、免费图片素材网站给你!
  5. 期末总结——Spark
  6. 利用 WAAPI 实现百叶窗切页效果
  7. 如何避免干井校准操作的常见误区?有效执行温度校准
  8. 名编辑电子杂志大师教程 | 添加购物车
  9. 当没有接口文档时候,测试人员如何测试?
  10. js 斐波那契—卢卡斯数列 例子 以及 变态青蛙