毕业季,字节跳动面试题拿走不谢!(附答案)

news2024/11/16 10:42:20

 

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

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

个人信息

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

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

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

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

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

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

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

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

测试思维

1.纸杯子做什么测试?

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

面试官:没有限制

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

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

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

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

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

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

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

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

2.发红包测试用例?

3.微信点赞如何测试?

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

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

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

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

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

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

情景问题

1. 视频卡顿如何排查

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

答案:

  1. 先确保网络正常、输入的URL地址是正确的
  2. 通过浏览器调试工具或者抓包工具例fiddler,查看控制台的请求和响应,
  3. 查看请求地址和参数等是否正常;后台返回状态码、响应数据等是否正常
  4. 一般经过以上步骤,基本能够定位到问题,例控制台报js异常之类的,则前端问题;若返回状态500,则后端问题,可同步查看服务器日志来定位

3. 为微信的点赞功能设计测试用例,假如点赞了但是点赞数没有加一,可能报错在哪里?

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

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

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

  1. 无法在所请求的端口上访问Web站点。
  2. Web服务扩展锁定策略阻止本请求。
  3. MIME映射策略阻止本请求
  4. 网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。
  5. 跟踪访问的各类脚码或CSS文件无效但调用代码依然存在。
  6. 某个目录直接删除
  7. 网页URL生成规则改变
  8. 网页文件更名或移动位置
  9. 导入链接拼写错误等

5. A给B发送消息后,A看见消息发送出去了,但是B没有收到,怎么排查问题?

6. 网页加载慢的原因?

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

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

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

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

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

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

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

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

计算机网络

1.介绍OSI模型

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

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

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

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

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

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

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

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

3.TCP与UDP区别

  1. 基于连接与无连接;
  2. 对系统资源的要求(TCP较多,UDP少);
  3. UDP程序结构较简单;
  4. 流模式与数据报模式 ;
  5. 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)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

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

3. 进程通信方式 ?

4. 内存泄漏?

5. 堆和栈?

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

6. 堆内存和栈内存?

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

8. 产生死锁的原因?

可归结为如下两点:

a. 竞争资源

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

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

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

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

b. 进程间推进顺序非法

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

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

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

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

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

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

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

代码题、算法题

1.装饰器并写一个装饰器例子

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

3.哈希表的空间复杂度

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

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

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

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

Python/Java基础

  1. 面向对象语言的特性?
  2. 深拷贝与浅拷贝?

数据类型分为两种基础类型和引用类型

  1. 基础类型:像Number、String、Boolean等这种为基本类型
  2. 引用类型:Object和Array

浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())

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

  1. python元祖和列表的区别

a=[] 这是一个列表

b=() 这是一个元组

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

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

  1. python去重用什么 ?
  2. python用过哪些库函数?
  3. selenium用到什么程度了?
  4. python装饰器,作用,用法
  5. java:多态说一下,接口类和抽象类的区别;
  6. Java/Python的垃圾回收机制?
  7. 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、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。

数据库

  1. mysql存储引擎如何实现?
  2. 事务概念及其特性?

概念:

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

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

  1. 为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
  2. 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
  3. 多表查询、普通sql和存储过程的区别?
  4. 索引的底层、底层为什么要采用B树或B+树?
  5. B树和B+树区别?
  6. 熟悉数据库吗:学生选课系统怎么建表,查询一个老师教的所有学生的名字?
  7. 取一个年级中每个班级年龄最小的同学名字?
  8. 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 子句用来从分组的结果中筛选行

  1. 内连接和外连接?

内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。

外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。

左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL 来填充。右外连接,也称右连接,右表为主表,右表中的所有记录都会出现在结果集中。左连接和右连接可以互换,MySQL 目前还不支持全外连接。

  1. 数据库字段去重?
  2. sql语句 查询每一门课程分数都大于80分的学生姓名?

SELECT 姓名 FROM Student GROUP BY 科目 Having MIN(成绩)>=80

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c#调用串口报“连到系统上的设备没有发挥作用”的解决

如下图所示,当C#打开串口报如下错误: 这是因为在Win11上安装了多个驱动造成的,需要切换回旧的驱动。 解决方法: 打开设备管理器,找到串口设备,点击更新驱动程序: 选择浏览我的电脑以查找驱动程…

uview的折叠面板扩展

第一个:首先要安装uview UI框架 (已发布如何安装) 第二个:使用uview 中的折叠面板(Collapse 折叠面板 | uView 2.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架) 第三点:明白一个插槽使用…

uniapp生命周期全解析

我们学习uniapp的时候会学到uniapp的生命周期,uniapp做到了三端适配,但在学uniapp的时候最好有vue和微信小程序的基础,这样理解起来会非常快。 uniapp 的生命周期和 vue 的生命周期基本相同,但是在 uniapp 中还增加了一些特定的生…

Linux9.进程(下)(僵尸,孤儿,环境变量)

1.僵尸进程 危害 2.孤儿进程 3.进程的优先级 优先级 老的优先级(越小越先被执行) nice值(可以调) 4.几个概念 上下文数据 :一个进程在运行的过程中寄存器中产生的临时数据。 当进程被切下来的时候,需要带走自己的上下文数据,下次回来的时候恢复上去。…

java之路—— 带你了解Struts与其基本的应用

创作不易,各位亲给个免费的呗 文章目录 前言一、什么是Struts,可以用来干嘛二、Struts 与 springmvc三、Struts的开发的基本步骤四、Struts的处理流程 前言 Struts是在2000年由Apache软件基金会首次发布的,自那时以来,它在Java W…

webstorm2022 TS1109: Expression expected.

在使用webstorm2022,加入ESLint(已禁用)的情况下,编写vue3的typescript代码时,报错: TS1109: Expression expected. 原因:2022版本不支持volar,需升级到2023版本。 官方描述为&am…

二叉树题目:单值二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:单值二叉树 出处:965. 单值二叉树 难度 3 级 题目描述 要求 如果二叉树每个结点都具有相同的值&am…

Matlab 校正镜头畸变图像

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 生活中一些针孔相机会给图像带来严重的失真,这主要是由于硬件和环境的因素所示导致的,其中主要的两种畸变是径向畸变和切向畸变。 径向畸变会导致直线看起来弯曲,即点距离图像中心越远,径向畸变就越大。例如,下…

hyperf 学习 一、搭建

docker中ubuntu容器php语言hyperf框架开发环境搭建。 docker地址:Docker tag:20.04 docker pull ubuntu:20.04docker run --name hyperf -v D:\workspace\docker\hyperf:/wj/hyperf -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh ubuntu:20.04步骤…

聊聊ChatGPT是如何组织对话的

为什么要组织对话? 总所周知,ChatGPT的训练大致可分为下图中展示的几个阶段,其中,在Pretraining阶段,模型的训练数据是纯文本,目标是根据上文预测下一个token,而在后面的几个阶段中&#xff0c…

16年38款,iPhone中的哪一款有最深的印象?

6月29日是一个重要的日子,对于智能手机领域来说尤其如此。在16年前的今天,乔布斯发布了第一代iPhone手机,这个举动彻底改变了世界,智能手机从此成为我们日常生活中不可或缺的一部分。 我特意调查了一下,苹果在过去的16…

RocketMQ on openEuler 提供高性能消息队列的稳定性解决方案

RocketMQ on openEuler,是一种将 RocketMQ 消息中间件通过容器化的方式部署在 openEuler 操作系统上运行,借助 openEuler 系统对于 OS 缓存回收效率增强的内核特性,提升消息中间件在面向超大规模高并发、高吞吐量、低延迟场景下稳定性和可靠性…

git常用命令之远程仓库别名

12. 远程仓库别名 12.1 查看远程仓库名称 命令作用git remote查看关联的远程分支$ git remoteorigingit remote -v查看本地仓库关联的远程仓库信息$ git remote -vorigin gitgithub.com:kaku/reading-note-tutorails.git (fetch)origin gitgithub.com:kaku/reading-note-tuto…

Telnet实验、AAA认证实验、 配置文件备份和还原实验

Telnet实验 拓扑 需求 R1远程R2 配置步骤 1&#xff09;配置接口的IP地址 2&#xff09;在R2设备配置telnet远程 3&#xff09;使用R1远程R2 配置命令 第一步&#xff1a;配置R1的IP地址 <Huawei>un t m //关闭消息 <Huawei>sys //进入系统视图 [Huaw…

量化知识点

1&#xff1a;模型量化是将浮点数替换成整数&#xff0c;并进行存储和计算的方法。 原始float数据量化后int数据量化公式 2&#xff1a;非饱和方式量化、饱和方式量化&#xff0c;对称量化、非对称量化&#xff0c;区别与关系是&#xff1f; 这个是tensorRT的量化方案&#xf…

React hooks文档笔记(三) 状态

状态 一、如何设计组件状态的步骤二、状态构造原则1. 组相关状态2. 避免矛盾/互斥状态3. 避免多余状态4. 不要把props放进state&#xff0c;除非你特别想要阻止更新 三、状态保存/重置1. 相同位置的相同组件保留状态2. 同一位置不同元素reset状态 一、如何设计组件状态的步骤 …

如何使用ChatGPT的API(一)大语言模型如何工作

这篇文章介绍大语言模型的一些概念&#xff0c;包括它是如何工作的&#xff0c;什么是Token等等。 大语言模型如何工作 我们从一个示例开始说起。 当我们写一个提示“我喜欢吃”&#xff0c;然后要求一个大型语言模型根据这个提示填写后面可能的内容。它可能会说&#xff0c…

《PyTorch深度学习实践》第三讲 梯度下降

b站刘二大人《PyTorch深度学习实践》课程第三讲梯度下降笔记与代码&#xff1a;https://www.bilibili.com/video/BV1Y7411d7Ys?p3&vd_sourceb17f113d28933824d753a0915d5e3a90 上一讲例子中&#xff0c;初始权重 w w w是随机给的&#xff0c;然后计算每个样本 x x x的预测…

JavaWeb 笔记-1

JavaWeb 笔记-1 初始JavaWeb什么是JavaWeb 一、JDBC1.1、JDBC简介1.2、API详解-DriverManager1.3、API详解-Connection1.4、API详解-Statement1.5、API详解-ResultSet1.6、API详解-PreparedStatement1.6.1、API详解-PreparedStatement-SQL注入演示1.6.2、API详解-PreparedState…

RK3568平台开发系列讲解(外设篇)RFID 模块调试

🚀返回专栏总目录 文章目录 一、RFID 工作原理二、硬件连接三、驱动程序四、设备树五、测试程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解 RFID 模块调试。 一、RFID 工作原理 射频识别技术也就是 RFID,英文名为 Radio Frequency Identificati…