前言:
没有绝对的天才,只有持续不断的付出。对于我们每一个平凡人来说,改变命运只能依靠努力+幸运,但如果你不够幸运,那就只能拉高努力的占比。
2022年11月,我有幸成为了字节跳动的一名测试工程师,正如标题所说,我从外包辞职了,10000小时后,走进字节跳动拿下了offer。相信同行都清楚,从外包进大厂有多难,运气之余,也离不开我自己的脚踏实地,所幸每踏出的一步都留下了厚厚的脚印。
因为我个人有复盘的习惯,所以在面试字节跳动时,基本是做到了每一轮结束就把面试题给总结出来,当然总结出来的可能跟实际情况有细微出入,但相差不大,基本上是我记忆里的极限,我把每一个知识点所问到的问题分别总结出来,供大家参考。
个人信息
- 自我介绍 项目(重要)
- 项目中最大的挑战,花费最长时间的项目,比较有成就感的事情
- 项目中印象最深的bug
- 有什么想问的吗
- 适合业务测试还是技术测试
- 为什么选择字节
- 分别用3个词描述自己的优缺点
测试
- 对测试开发的认识,为什么想做测试开发,测试测开的理解
- 软件的分类
- 什么是接口测试
- 微信红包的测试用例
- 微信评论功能的测试用例
- 测试一下支付宝付款码,设计测试用例
- 黑盒测试的方法
- 白盒测试的方法
- 软件测试的流程
- 登录功能怎么设计测试用例?
- 网上银行转账是怎么测的,设计一下测试用例。
- 给你一个网站,你应该如何测试?
- 一个有广告的纸杯子,请设计测试用例?
- 想象一个登录框,包括ID、密码、登录、取消,记住密码(复选框),尽可能的写出你想到的测试点?
- 测试淘宝购物车的测试案例
- 设计一下抖音上下滑动视频的测试用例
- 设计抖音app用户登录测试
- 中断测试
- 测试在一个场景下,推荐滤镜
- 朋友圈点赞评论测试用例
情景问题
- 如果抖音一个地区的许多用户无法下载视频的原因
- 如果用户收到了银行短信提示已经扣款成功了,但是商家没有收到钱,你觉得会是什么问题
- 输入一个url,请问发生了什么?
- 如何实现一个用户登录功能
- 高并发下减少事务带来的性能消耗?
- 如果一个API接口出现一个不稳定出现的bug,如何去确定?
- 如果提交bug,开发告诉你不存在,如何处理?
- 访问页面加载缓慢的原因以及如何解决
- 如何你和你的领导意见不一致,你会怎么做
- 如果图片上传失败,分析原因
- 针对评论功能,你如何设计接口,主要回答需要传递的参数有哪些?
- app页面白屏了什么原因
- 全链路压测中,找到了某一个服务器CPU负载率100%,磁盘和内存使用率正常,请问你会怎么去分析可能的原因
- 设计买火车票的系统,输入出发站和到达站,返回所有可能的结果
- 添加购物车请求后发生了什么
- 淘宝用户支付失败的原因
Python基础
- python的内存池机制
- python数组和列表的区别
- python你常用哪些包,标准库
- 面向过程和面向对象的语言区别
- 反射
- python的数据结构
- dict和list的底层实现
- python装饰器,作用,用法
- 编译型语言和解释型语言 解释型语言的优点
- 垃圾回收机制
- GIL锁
- is和==
- __new__和__init__区别
- 用python写出多线程,循环打印123
操作系统
- 读写锁,不同点,应用场景
- 线程和进程的区别是什么
- 什么是死锁,死锁的条件
- 如何预防死锁,!避免死锁,死锁发生的检查
- 堆和栈的区别以及存储模式有什么区别
- 内存泄漏和内存溢出
- 多线程和多进程,以及应用场景
- 进程通信方式
- 多线程如何实现的
- 计算机内存管理的方式
- 进程调度方法
- 什么是Linux用户态和内核态
- 进程的状态,进程状态就绪和等待状态的区别是什么
- 虚拟内存是干嘛的
- 线程池
- 线程安全的实现方式
- 进程和线程的上下文切换
- 协程
计算机网络
- TCP三次握手,四次挥手的过程
- 为什么客户端要在TIME_WAIT状态等待一段时间
- CLOSING状态
- 如果server端没有收到第三次ack,但是收到了client端发送的数据,server端会怎么处理
- 讲一讲get和post
- http状态码
- TCP和UDP
- 一次HTTP请求的过程(输入URL到返回的全过程)
- http和https
- 无状态和无连接
- OSI七层模型,各层有哪些协议
- HTTP协议 请求报文结构
- TCP如何保证可靠传输,丢包怎么办
- 讲一下滑动窗口
- TCP三次握手中SYN和ACK包有什么不同,包含什么
- UDP想要可靠怎么实现 RUDP
- 半连接攻击
- TCP粘包和拆包
- cookie和session是什么,为什么要用cookie和session
- DNS协议和作用
- DNS的查询方式
- ARP协议作用、工作方式
- 以太网数据包的大小最大为多少
- 三次握手过程中是否存在安全问题?描述一下存在什么样的安全问题?针对这样的安全问题如何防御?
- web攻击,CSRF攻击
- TCP如何进行拥塞控制?拥塞控制如何判断发生拥塞?
- TCP快重传如何判断丢失?
- https证书在哪存放
- 长连接和短连接以及他们分别适用的场景
数据库
- sql语句 取一个月内的id分组 取一个年级中每个班级年龄最小的同学名字 成绩表输出前三名的成绩,后三名呢 拷贝A表的数据到B表 查询每门科目都大于80分的学生名字 筛选出每个小时的记录 考察where 考察聚合函数 where和having的区别 一个数据库sql查询重复个数 在学生成绩表中查询平均分不及格(低于60)的学生id及平均分 查询总成绩最高的人的姓名 user表中在一个时间段内登陆三次的用户id limit的用法
- 数据库引擎及他们之间的区别 InnoDB MyISAM MEMORY:
- mysql的日志怎么查询
- (多次)查询速度慢的原因,如何解决
- 数据库的事务是什么?怎么使用
- 主键、外键、索引的各自的含义以及区别
- 事务的特性(ACID),讲一下每个特性的意思
- 索引的类型
- 什么是聚簇索引、什么是非聚簇索引
- 索引的数据结构是什么
- 前缀索引
- MySQL/MongoDb 端口号
- 数据库有几种表之间的连接形式(左连接,右连接,内连接,完全连接)
- 说说redis中的数据结构和应用场景
- 三大范式
- 数据库隔离等级
- 为什么要用b+树索引而不用hash
Linux
- 常见命令 查看进程ps 查看所有进程长格式ps -ef 打印当前文件夹文件 ls -al a所有文件 l详细信息 软链接 ln -s a target 硬链接 ln 创建目录 mkdir 修改权限 chmod 查看文件: 移动文件mv 也可以重命名 复制文件cp 删除文件 rm -r 递归删除 -f删除只读文件 通配符?单个字符,*多个字符,[a-z]字符集 grep 正则搜索 显示行号-n 查询个数-c 反选-v 查看指定进程 ps -ef | grep pid 查看命令历史 history 查看磁盘空间df -hl 查看文件大小du 查找文件 find [目录] 以名字查找-name “h*”以h开头 终止一个进程 kill -9 pid
- 如何防止新人误操作rm -rf
- 找进程号为199的进程 ls -ef|grep 199
- 某文件中含关键词的行数 grep -c "key" ./file
- 该目录下以.log结尾的文件中包含关键词a但不包含关键词b的行数 grep "a" ./file | grep -cv "b"
智力题
- 一根金条,需要一周每天都发工资,切割两次,请问怎么切割 把金条切分为1/7, 2/7, 4/7,每天找零
- 100个足球队两两比赛角逐出一支冠军队伍,请问至少比赛几次 每场比赛淘汰一只队伍,所以需要99场比赛
- 25匹马5个赛道,求前三名
- 100个豆子,五个囚犯,拿的豆子最多或者最少都要被处死,求谁的生存概率大一点
基本上就是这些了。
我为什么想要去字节跳动?(字节跳动的优势)
①福利待遇
我不是hr,也不是给字节打广告,这里真的要提一下字节跳动的福利待遇绝对是一线厂子里数一数二的。加上我是外包出身,这种待遇给我造成的落差感就更明显,让我觉得能够进字节跳动工作算是我最大的幸运了。
至于福利待遇,这里随便提及几点:
- 弹性打卡
- 房补(额度算很高了,算很人性化)
- 免费的三餐、下午茶(吃胖了)
- 免费健身房
- 顶配16寸MacBook
- 各种节日礼包
②巨大的知识库
字节跳动对于我来说,算是一个巨大的知识库,之所以这么说,从面试的流程及细节,到后来我入职之后工作上面的安排,都让我有不一样的触动。从这几方面,我们都能够感受到公司对于员工的职业规划非常重视,你的主管和导师都会主动去找你沟通这方面的,这对比我之前的外包,是截然不同的地方。而在这个交流过程中,我获得到的,不是一星半点。
最让我佩服的是,字节有统一的入口可以导航到海量的指南和知识沉淀,甚至是其他各个产品线整理的技术和业务文档等等。
③我看到了认同
来到字节,我看到了认同,收获了归属感。字节跳动虽然年轻,但在做事上有共同一致的目标,这里的人讲“字节范儿”,它不是条条框框的束缚,它是一种精神食粮,实质是一种价值认同。恰好,拥有同一种价值认同的人走到了一起。
④虽辛苦,但不感觉累
字节跳动是一家非常年轻化的公司,对于一线的互联网公司来说,996是常态,字节跳动也脱离不开“加班”二字。但是字节给我最大不同的感受是,忙碌且生机勃勃。在字节工作一段时间了,我也算是跟上了这里的节奏,虽然辛苦,但我却一点也不感觉累,因为在充实的工作环境中,我是有所收获的,在公司野蛮生长的同时,我个人也得到了快速的成长。
另外,别以为一线大厂的“打工人”只会死工作,字节人最大的特点就是年轻,他们同样会玩,每个人都有自己的爱好,骑行、狼人杀、健身、摄影、瑜伽等等,这与我之前对大厂人的印象显然不同,我也一点一点在慢慢被影响着。
⑤反思:关注工作效率
以前觉得自己的工作效率和时间管理做得还不错,至少能拿出时间做一点大家想做却没有做的事情,但现在才发现这也许只是错觉,你总做容易的事情,当然不会感觉到时间的压力,即便是项目进度比较紧的时候,加加班,搞搞996似乎也就那么回事。我们通常都会愿意延长时间,而不是考虑如何提高效率,在同样的时间内完成更多的工作,当然也有很多不言自明的客观原因。
来字节后,我才从身边同事的工作细节中看到了什么才是“效率”。
面试题分享(附答案)
最后在入职字节几个月之后,我也是整理了一些软件测试技术资料和面试题集,供大家提升进阶,不管你是要入门学习还是想面试跳槽巩固基础,都可以免费领取一份。
下面展示部分截图,文末附免费下载方式。
- 测试基础(38页)
- 功能测试(183页)
- linux(221页)
- Mysql(216页)
- 接口测试(338页)
- Jmeter(41页)
- 测试工具(35页)
- web自动化测试(50页)
- selenium(55页)
- python编程(27页)
- app自动化测试(66页)
- 性能测试(40页)
- 安全测试(21页)
- 测试开发(31页)
- 简历模板(38页)
注:篇幅有限,资料已整理成文档,整体的内容知识点也是偏多的,截图是截取不完的,所以请各位朋友注意:若是需要下载整个软件测试面试宝典,有需要的读者朋友们可以帮忙三连支持一下,点击文末小卡片传送门即可入手~
一、基础知识--2023版
(包含计算机基础、测试理论、HTML基础、CSS基础、JS基础常见的面试题)
二、Linux和数据库 --2023版
(包含 linux、数据库介绍、SQL语言(重点)、数据库高级功能常见的面试题)
三、编程+数据结构--2023版
(包含 Python基础、面向对象、异常处理、模块和等等常见的面试题)
四、WEB自动化--2023版
(包含 WEB自动化入门、WEB自动化基础、WEB自动化中级、WEB自动化高级、项目实战等等常见的面试题)
五、移动自动化 --2023版
(包含 移动自动化基础、移动自动化中级、移动自动化高级等等常见的面试题)
六、接口测试--2023版
(包含 接口基础、postman实现接口测试、数据库操作、代码实现接口测试、持续集成、接口测试扩等等常见的面试题)
七、接口自动化--2023版
(包含 接口自动化脚本编写、接口自动化测试执行、接口自动化测试报告分析等等常见的面试题)
八、性能测试--2023版
(包含 性能测试基础、性能测试工具、项目-接口性能测试、项目-web性能测试、性能测试调优等等常见的面试题)
九、安全测试--2023版
(包含 数据库安全测试、网络安全测试、应用程序安全测试、安全性能测试、社会工程学测试等等常见的面试题)
内容太多,篇幅有限,所有文档、PDF的知识体系以截图形式展示,所有的教程学习PDF这边也只是大致介绍一番,不过可提供全部教程的原件给大家免费下载。
整理不易,白嫖太易!获取方式很简单:有需要的读者朋友们可以帮忙三连支持一下,点击下方小卡片入自行领取即可入手~