前言

最近有收到一些不同公司的面试题,像字节跳动、网易、美团等,趁着有时间,给大家梳理下,说不定面试能派上用场,大概给大家从以下几个方面来做了整理:

个人信息:(工作/实习经验,所做的项目,态度素养)
测试思维
情景问题
计算机网络
操作系统
代码/算法题
语言(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

完整版面试笔记,我已经整理好了,文章篇幅问题就不一一展示了,需要备战金九银十的可以领取一下,刷刷大厂最新面试题,希望对大家有帮助,对了面试题一定不要死记硬背,理解理解理解,最重要!

如果你是小白,或者需要跳槽,想往软件测试发展,可以先领取一套系列学习资料,自学看看,需要免费系列全套资源分享可以:

金九银十面试季,字节跳动面试题拿走不谢(附详细答案解析)相关推荐

  1. 金三银四、金九银十 面试宝典 JAVASE八股文面试题 超级无敌全的面试题汇总(接近3万字的面试题,让你的JAVA语法基础无可挑剔)

    JavaSE八股文 - 面试宝典 又到了 金三银四.金九银十 的时候了,是时候收藏一波面试题了,面试题可以不学,但不能没有!

  2. 2021金九银十面试季!如何化身BAT面试收割机

    前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员 ...

  3. 金九银十面试整理:BAT大厂最爱问的Android核心面试百题详细解析!

    Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发.这里会不断收集和更新Android基础相关的面试题 ...

  4. java输入输出流_金九银十准备季:Java异常+Java IO与NIO面试题(含答案)

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:abel-max/Java-Study ...

  5. 金九银十面试怒拿6个offer——测试开发面试题整理

    金九银十面试怒拿6个offer--测试开发面试题整理 1.软件测试的流程是什么? 2.测试用例主要有哪些元素? 3.软件测试有什么策略和阶段? 4.黑盒测试和白盒测试是什么?二者有什么区别? 5.软件 ...

  6. 与基础事务管理器的通信失败 存货申请_金九银十跳槽季,恶补分布式事务

    随着微服务架构在各个企业的渗透,大家都在纷纷的将技术架构转型,从单体式应用变成微服务架构式,从单机部署变分布式部署,我们的应用也变成了分布式应用.在分布式应用中,一切就变得复杂了,如何保障数据的一致性 ...

  7. 金九银十跳槽季,恶补分布式事务

    随着微服务架构在各个企业的渗透,大家都在纷纷的将技术架构转型,从单体式应用变成微服务架构式,从单机部署变分布式部署,我们的应用也变成了分布式应用.在分布式应用中,一切就变得复杂了,如何保障数据的一致性 ...

  8. 备战金九银十,阿里P8师兄指导完整攻略(附:学习资料+面试宝典+项目实战笔记)

    前言 还剩下两个月就到了金九银十,一般来说,秋招的含金量明显是高于春招的. 那么如何准备即将到来的面试热潮呢?运筹帷幄之后,决胜千里之外! 坚决不打毫无准备的仗是小编的原则:不论是笔试还是面试都是有章 ...

  9. 金三银四、金九银十 面试宝典 SpringBoot 面试题 超级无敌全的面试题汇总

    SpringBoot框架 - 面试宝典 又到了 金三银四.金九银十 的时候了,是时候收藏一波面试题了,面试题可以不学,但不能没有!

  10. 金三银四、金九银十 面试宝典 Spring、MyBatis、SpringMVC面试题 超级无敌全的面试题汇总(超万字的面试题,让你的SSM框架无可挑剔)

    Spring.MyBatis.SpringMVC 框架 - 面试宝典 又到了 金三银四.金九银十 的时候了,是时候收藏一波面试题了,面试题可以不学,但不能没有!

最新文章

  1. 用C++开发Web应用
  2. java怎么输出集合_Java 输出集合中的元素
  3. 关掉magiskhide_Magisk v20.4 – The Magic Mask for Android 安裝流程
  4. c语言万历年系统设计报告,C语言编写单片机万历系统课程设计报告分.doc
  5. 五分钟教你在Go-Bigger中设计自己的游戏AI智能体
  6. eclipse 中自定义EL表达式时创建tld文件
  7. rabbitmq报错:PRECONDITION_FAILED - parameters for queue ‘test-1‘ in vhost ‘/‘ not equivalent
  8. 【JAVA 第五章 】课后习题 奇数排前
  9. Android 的主题的演变
  10. 慧荣科技亮相2017纽伦堡国际嵌入式应用展览会,主推采用3D NAND的BGA SSD新产品...
  11. plsql command window create function
  12. 电脑硬件测试软件哪一个准一点,什么软件测试cpu温度准确_测试cpu温度准确软件汇总 - 系统家园...
  13. docker知识:docker update (更新参数)
  14. 介绍GBase 8C核心技术
  15. 我支持平板能代替笔记本电脑
  16. ArcGIS水文分析实战教程(5)细说流向与流量
  17. 阴阳师辅助(基于按键精灵)
  18. cesium绘制卫星
  19. linux dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
  20. 截止到20190828的前沿汇总

热门文章

  1. Java Web(九) 用户管理系统
  2. html表单查重,毕业论文的表格会被查重吗?
  3. 华为云计算IE面试笔记-云磁盘和普通磁盘的区别。
  4. Android多国语言缩写(全)
  5. matlab如何设全局变量,请问MATLAB中如何修改全局变量
  6. 相机模型与坐标转换!
  7. Java期末复习——知识点+题库
  8. excel 汇总运算后生成柱状图
  9. 利用DHT网络原理制作bt采集蜘蛛,开源版
  10. 多尺度地理加权回归(MGWR)软件官网下载