目前对于招测试来说,知识覆盖面比较广,以下做列举。
建议在面试之前记一下,不要轻视这些基本理论,我之前看到一些人去面试,连基本的网络协议都答不上来,哪怕可能个人能力技术比较强,但是在这种题目上被减分实在没必要。
1.网络基础知识
-
TCP/IP协议四个层次组成,以及每个层的常用协议
-
OSI七层模型
-
TCP协议三次握手
-
TCP协议四次挥手
-
TCP和UDP的区别
HTTP和HTTPS的区别
-
一次完整的HTTP请求过程(即浏览器输入url到看到网页过程会发生什么)
-
HTTP不同的状态码的代表意义
-
HTTP的请求方法有哪些,作用是什么
-
HTTP 请求方法GET 和 POST的区别
2、测试工具相关
-
以Charles为例
-
Charles的工作原理是什么
-
Charles如何抓Https网页,IOS需要特殊注意些什么
-
如何设置弱网(弱网速度具体设置值)
-
如何设置断点,修改接口数据
-
如何指定网络请求重定向到本地
3、常用ADB指令
-
adb devices 查看连接计算机的设备
-
adb install <apkfile> 安装apk
-
adb install -r<apkfile> 覆盖安装
-
adb install -s <apkfile>把apk安装到sd卡
-
adb uninstall <packagename> 卸载APK
-
adb uninstall -k <packagename> 卸载app但保留数据和缓存文件
-
adb logcat 查看log
-
adb logcat -c 清空日志
-
adb logcat *:E >D:log.txt 输出到某文件
-
adb logcat ActivityManager:I *:s 查看应用包名
4、常用Linux指令
-
cd命令:切换到某个目录
-
ls命令:列出当前目录的所有文件、文件夹
-
pwd命令:列出当前目录的路径
-
cp命令:复制
-
mv命令:剪切
-
grep命令:管道
-
find命令:查找
-
rm命令:删除
-
ps命令:查看进程
-
kill命令:杀掉某个进程
-
cat命令:查看某文件
-
tar命令:打包
-
chmod命令:赋权限
-
chown命令:改变文件的所有者
-
vim命令:文本编辑
5、SQL
-
基本的增删改查语句,对于select语句考察多一些
-
子查询
-
多表联合查询(join on)
-
group by 与 having基于聚合函数的使用
-
去重,排序,模糊查询
-
MySQL中的join有几种有什么区别
-
延伸:索引和视图
-
列举几个常用的关系型数据库和非关系型数据库
(以上建议做题熟悉,leetcode或者搜索一些题目,面试考察方式一般也是面试官口述一个表,让搜索某种结果,所以要熟悉这种模式,而不是只是记忆语法)
6、移动端测试的基础知识
目前各个公司的测试工程师定义可能不一样,有的是全部涉及,有的是只做移动端,或者只是后台接口测试开发,如果个人发展方向以及找工作更多的是移动端测试方向,那么移动端的基础知识是必须要记的。
-
安卓系统四层架构
-
安卓四大组件
-
什么是安卓activity,activity的生命周期
-
首页跳转某页面后返回到首页,activity经历了怎样的过程
-
APP发生crash测试需要怎么处理(区分IOS/Android)
-
你常见的发生crash的日志是什么
-
什么是安卓ANR,如何避免
-
安卓crash和ANR的区别
-
Android手机和IOS手机,系统有什么区别
-
App测试中ios和Android有哪些区别
7、场景测试题,给你一个登录/支付/列表等场景,如何测试
面试常驻问题,基本不管大厂小厂都会问这个问题,考察面试人的思维考虑广泛度,对于这个问题,每个测试人员可能都有自己思路和方法,回答的时候可以保证全面性的基础上体现自己分析问题解决问题的步骤,可以按照自己的想法,这里仅做列举
确认大前提:需求内容,需求背景,需求目标,对象用户,使用设备,使用环境
可大略概括为:功能,界面,性能,安全
1)基本的功能逻辑测试:等价类,边界值,数据类型,正常逻辑,异常逻辑,异常逻辑的良性提示,流程失败,各种场景,易用性等
2)设备兼容性:IOS Andriod,不同系统版本,不同屏幕
3)获取设备权限
4)网络环境:wifi/弱网/断网,以及这几种情况切换下,发起请求与缺省页面
5)FPS,正常情况下资源加载速度,打开速度
6)流量测试,和电量测试
7)cpu 和内存资源占用情况
8)负载测试、压力测试:程序的健壮性,并发量用户量比较大的时候是否会有崩溃之类的问题
9)安全测试:涉及安全性的数据不可以被挟持,攻击,密码不可明文存储
10)是否调用第三方,与第三方软件的协调配合
8、一门计算机编程语言
根据公司招聘要求,大部分公司会让手写算法题,但一般来说不会特别难,视工作经验而定。语言这方面可能理论性的东西可以短期记忆,但是真的能流畅的书写还是要系统性的学习,不管是书或者视频,基础还是要打好,然后刷一些算法题,而且对一个测试来说,精通一两门语言对于工作是很有益处的,如果不想一直点点点的话,还是多在前期打好语言基础
会一门脚本语言的话锦上添花。
9、之前工作的工作内容
这里大致分成三个模块
1)你们公司的测试流程是什么
基本算是必问问题,可能各个公司会有一些流程简化,但是建议还是实际情况结合正统流程,丰富成更完整的测试流程
2)项目细节
会仔细询问简历上的项目,最好对项目了解到代码架构层面,经得起询问,同理,不要在简历上写自己不太熟悉的东西,如果写了就要做好准备会被问
3)你遇到的印象最深的bug,怎么解决的
可提前准备,这个问题不是说完了bug就完事了,绝大多说面试官会问你问题根源是什么,开发为什么会出这个问题,建议说到代码层面的问题
10、软实力
由于测试工作的实际内容,各部门沟通比较常见,也经常会遇到冲突处理的情况,所以面试的时候很多面试官会考察面试者的沟通协调能力,事务处理能力,这个问题出现的频率很高,场景可能各不相同。比如,即将上线,产品临时加需求的情况;开发没有按期完成需求影响上线的情况,这些场景下问你需要怎么处理
这些问题其实没有准确的答案,其实如果有测试经验的同学可以直接结合自己经验,说出自己觉得合适的处理方案,可以提前自己做一个总结。
11、你需要向公司了解什么
一般面试官最后会给一些时间问你想要了解什么,如果你觉得已经到了可能会发offer的时候,就不要问一些虚的东西了。
-
公司测试团队有多少人
-
测试的主要工作内容是什么(很重要)
-
公司的发展方向
-
上下班时间和加班情况
-
月薪和年终奖以及其他福利(hr谈薪期间)
掌握清楚这些,对后续可能的offer对比很有帮助
12、一些有用的参考APP
-
互联网求职:拉钩,boss直聘(ps,有内推途径优先走内推)
-
公司信息查询:看准网,天眼查,脉脉-职言区,牛客网(针对应届)
-
刷题:leetcode
-
信息检索:github
(对于大厂面试建议提前查下各网站得面试题和反馈,针对性面试)
以上是个人的一些总结,可能也有些不太全面,对于个人不太涉猎的比如UI自动化方面谈及不太多,所以权当基础性的参考。