三四月份,正是挺多公司开放招聘的时候,个人经历了一些大厂或小厂的面试也总结了一些信息,罗列一下权当抛砖引玉,希望能够稍微帮到一些准备或者正在找工作的朋友。
前期准备:
关于投简历
需要意识到:一旦开始投简历,就是正式的开始找工作期了,你可能在投简历之后,时刻都能收到公司的面试邀请和电面邀请。所以,在开始投简历之前,就应该做一些基本知识的准备,避免仓促的接到电面和面试,因为没有表现好错过了好公司的机会
面试的有些问题是需要临时突击背诵加强的,因为甚至日常工作涉及不到,涉及面也比较广,建议还是要提前做三到四个月的准备,如果是在职状态的话,这个时间其实并不是特别充裕,所以给自己做个计划时间表,选择一个开始投简历的合适时间。
设置个人的目标
确认自己的目标,自己有意向的公司以及可以接受的公司类型,针对性的做准备;不要海投,尤其对于已经工作一段时间的人,海投会导致你收到一些没有必要的电话。
当然目标也不一定是哪个具体的公司,所以要分析清楚自己的想法:关于薪资范围,工作强度、公司规模,行业方向,将来的职业发展等,这些也可以在面试过程中逐渐清晰,你可能在这些元素里需要接受一些东西放弃一些东西,要清楚完美的工作的是不存在的,大部分人里只能从自己能力范围里选择一个相对好的,当然能力越强,可选范围就越大
总结提炼自己的经历
你要审视一下自己的过去的工作,了解自己的优势在哪里,了解哪些是你对项目对公司做出的比较大的贡献,哪些项目值得一说,面试时有理有据说清楚自己的优势。
总结一下自己的工作优点,基于工作事实去诉说优点,更加使人可信。
裸辞or骑驴找马?
不到万不得已不建议裸辞,主要原因是对于你找的下一份工作有影响,从情绪上说,无工作状态下,人的焦虑感很容易增加,陷入自我怀疑,影响个人精神面貌进而影响面试状态,从而可能最后仓促定一个工作,另外,对于裸辞的人,谈薪的时候公司容易压价。
建议还是找准几个自己有意向的单位,集中几天请假面试,目前很多公司还是能够一下午走完全部面试流程的。
技术类准备
目前对于招测试来说,知识覆盖面比较广,以下做列举
建议在面试之前记一下,不要轻视这些基本理论,我之前看到一些人去面试,连基本的网络协议都答不上来,哪怕可能个人能力技术比较强,但是在这种题目上被减分实在没必要
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指令
adbdevices查看连接计算机的设备
adbinstallapkfile安装apk
adbinstall-rapkfile覆盖安装
adbinstall-sapkfile把apk安装到sd卡
adbuninstallpackagename卸载APK
adbuninstall-kpackagename卸载app但保留数据和缓存文件
adblogcat查看log
adblogcat-c清空日志
adblogcat*:ED:\log.txt输出到某文件
adblogcatActivityManager:I*:s查看应用包名
4、常用Linux指令
cd命令:切换到某个目录
ls命令:列出当前目录的所有文件、文件夹
pwd命令:列出当前目录的路径
cp命令:复制
mv命令:剪切
grep命令:管道
find命令:查找
rm命令:删除
ps命令:查看进程
kill命令:杀掉某个进程
cat命令:查看某文件
tar命令:打包
chmod命令:赋权限
chown命令:改变文件的所有者
vim命令:文本编辑
5、SQL
基本的增删改查语句,对于select语句考察多一些
子查询
多表联合查询(joinon)
groupby与having基于聚合函数的使用
去重,排序,模糊查询
MySQL中的join有几种有什么区别
延伸:索引和视图
列举几个常用的关系型数据库和非关系型数据库
(以上建议做题熟悉,leetcode或者搜索一些题目,面试考察方式一般也是面试官口述一个表,让搜索某种结果,所以要熟悉这种模式,而不是只是记忆语法)
6、移动端测试的基础知识
目前各个公司的测试工程师定义可能不一样,有的是全部涉及,有的是只做移动端,或者只是后台接口测试开发,如果个人发展方向以及找工作更多的是移动端测试方向,那么移动端的基础知识是必须要记的
安卓系统四层架构
安卓四大组件
什么是安卓activity,activity的生命周期
首页跳转某页面后返回到首页,activity经历了怎样的过程
APP发生crash测试需要怎么处理(区分IOS/Android)
你常见的发生crash的日志是什么
什么是安卓ANR,如何避免
安卓crash和ANR的区别
Android手机和IOS手机,系统有什么区别
App测试中ios和Android有哪些区别
7、场景测试题,给你一个登录/支付/列表等场景,如何测试
面试常驻问题,基本不管大厂小厂都会问这个问题,考察面试人的思维考虑广泛度,对于这个问题,每个测试人员可能都有自己思路和方法,回答的时候可以保证全面性的基础上体现自己分析问题解决问题的步骤,可以按照自己的想法,这里仅做列举
确认大前提:需求内容,需求背景,需求目标,对象用户,使用设备,使用环境
可大略概括为:功能,界面,性能,安全
1)基本的功能逻辑测试:等价类,边界值,数据类型,正常逻辑,异常逻辑,异常逻辑的良性提示,流程失败,各种场景,易用性等
2)设备兼容性:IOSAndriod,不同系统版本,不同屏幕
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自动化方面谈及不太多,所以权当基础性的参考。
找工作的过程必然是一个疲惫的过程,可能会经历很多否定和压力,以及焦虑,保持良好的心态,相信自己,在每次面试之后总结并且提升,就变得十分重要。反过来想,在找工作的过程中,求职者更能清晰的了解到现在的市场上对测试的要求是什么,对于自己将来的发展也十分有利,凡是经历过的,都不失为对自己的一种提升,希望还在找工作的朋友能够坚持下去。
最后,祝大家能拿到心仪的offer
Xmind