今天正式推掉了一份心仪很久的offer,打算去一家更有活力的创业公司,希望在多年之后回想起来不要怪自己,当初真是瞎了眼!
自2018年下半年开始,我就一直听到一个词叫"互联网寒冬",其实像我这种互联网行业的底层人员没有见过互联网春天,所以也就感受不到什么寒冬,我所能看到的,想到的就是我现在的这份工作已经不适合我了,尤其是看到分给我的task里已经变得按部就班,todolist里沉积了太多让我反感的事情时,我知道It’s time to go!
在当了两年多的程序媛后,我渐渐的知道自己不适合做码农,再干下去也是食物链的底端,所以我决定要趁早逃脱这个魔障,但是也不想离开互联网这个浪潮,所以我认真比对了互联网里的其他行业,再加上我的经验背景、兴趣优势等等,我决定了转行做一名测试开发。
既然是跨行找工作,难度也是不小的,这期间吃过的苦我也是默默忍受了,以下是我总结的一些面试经验和面试题目,希望于你于我都有所启发:
一、找工作前一定要深思熟虑,当前工作是不是真的不适合自己了?是不是真的到了非走不可的地步?尽量把时间跨度拉大点,不要一时不悦就想着跳槽,伤神又伤身!
二、先看下网上的招聘信息,了解下市场上需要哪些测试技术,什么样的测试人才是比较有优势的。
三、查漏补缺,该背的背,该敲代码的赶紧敲,把自己塑造成那类的优秀人才,这一点作为开发去转测试还是比较有优势的。
四、个人觉得先不用着急写简历,先总结思考下过去的工作经验,这个时候如果还在职的话就要多看看旁边同事的工作,看看有什么时候可以"拿来"塑造自己的。
五、整理好工作内容后,再找一个好的模板填写,这里比较推崇五百丁的简历模板,整洁亮眼,虽然是收费的,但是一劳永逸啊,以后可以继续使用。这里我不止一次听到面试官说过我的简历排版很好,所以给他留下了一个好印象。
六、开始写简历,写简历是一个很漫长的过程,我曾经一整天把自己关在家里就是为了磨简历,一字一句的考究,一个字体一个字体地试,甚至标点符号都不放过,直到自己满意为止。
七、先投几家小公司或者是创业公司试试水,只有真正要面试了才会逼自己去学习,去总结。在面试前半小时,一定要反复的琢磨自我介绍,既能让自己快速进入面试的状态,又能缓解心情不至于太紧张。
八、面试完后要总结,总结面试官的问题,总结自己的状态,最好都写下来。每面完一轮,修改一次简历,完善一次自我介绍。
九、找自信,个人认为最好的方式是拿offer,哪怕那家公司不是自己特中意的,但是有一份offer在手,也会让你更有底气一些。
十、坚持,经过几轮的面试下来,对自己的实力有了一个清晰的定位,也知道自己能去哪些公司了,这时也要坚持去参加面试,直到找到那个Mr.right。
面试题目
测试技术类:
一、说一下HashMap,谈谈你对它的了解。
要答到的点:HashMap的基本概念、底层数据结构,数据是如何查询和插入的,最好能谈到与ConcurrentHashMap和Hashtable的区别。
二、Java多线程的实现方式?分布式情况下怎么保证线程安全?
多线程的三种实现方式一个不能漏。
分布式情况下可能出现线程不安全的点在哪,前后端到数据库都要考虑到,以及采用对应措施后带来的影响是怎样的。这道题比较偏实际工作经验,没做过的编都不好编。
三、内存泄漏和内存溢出的区别
理解了泄漏和溢出这两个词就秒懂了。我记得当时这个问题我直接就给答反了,真是白当了这么多年开发。
四、垃圾回收机制
这个当开发的时候就没搞懂,所以也是胡乱说了一通,后来特意买了本书《深入理解Java虚拟机》来恶补一下,强推!
其实这个只要答到JVM的分代空间,以及每个空间回收频率,还有JVM命令行参数的调优应该就差不多了。
五、你熟悉的设计模式有些哪些?
工厂模式、装饰模式、代理模式、单例模式…
最好现场手写代码,这样面试官会对你刮目相看。
六、synchronized与Lock的区别,以及你还知道哪些锁
synchronized和LockLock的区别还是挺大的,但是关键要答到synchronized不需要用户去手动释放锁,Lock则必须要用户去手动释放锁;Lock可以让线程响应中断,synchronized则需要一直等待。
还有的锁:ReentrantLock、ReadWriteLock、ReentrantReadWriteLock等等,这个知道就知道,不知道就不知道,不然坑挖大了埋的就是自己。
五、常用的linux命令有哪些?
这就要靠平时的积累了,个人觉得还是记一些高大上的命令比较好,不能上来就cd,cp,remove,mkdir…
六、写过shell脚本吗?
加分项来了,如果有shell,直接说,如果没有,背一两篇。
七、写一个你熟悉的排序算法
选择排序,冒泡排序,快速排序…个人觉得选择排序比较简单,所以直接背了下来。
八、mysql题目以及SQL怎么进行优化
这也算是基本功,但是由于我工作中很少触及数据库,所以SQL语句知识只剩下增删改查的命令了,大家在面试前一定要把这块捡起来。
测试理论类:
一、一个登陆页面,只有用户名密码和登陆按钮,你会写哪些测试用例。
类似的题目还有很多,主要从正常功能、异常场景、并发情况、兼容性测试等几个方面去考量。如果能想到性能测试并且还能给出对应优化方案,那基本上一只脚已经跨进公司了。
二、白盒测试的方法有哪些?
由于我没有做过专门的测试,当时直接懵了,随便说了几个口语化的方法搪塞过去。这也是一个教训,自己不会的东西千万不要写进简历,哪怕是一个很小的细节。
白盒测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法等等。
三、Bug的生命周期
提交->确认->分配->修复->验证->关闭,结合实际项目说比较好。
四、你所在项目的完整开发流程
流程越规范越好,不规范也要说的规范。细节要说好。
五、你是怎么做性能测试的?
先讲解一下基本功能流程是怎样的,再说一下要测哪些性能指标,含义分别是什么,测的过程是怎样的,最后挑一个性能压测的结果并分析。
六、破坏性测试中出现了问题你是怎么分析解决的?
先讲解一下我是怎么做破坏性测试的,再挑一个出现过的异常情况,再根据流程一步一步的定位问题,每一步都要有理有据,最后得出每个问题的解决方案。
七、遇到的最大的问题和挑战是什么?
这个因人而异哈,其实对我而言,最大的问题出在开始阶段,熟悉这套功能流程需要学很多东西,准备很多知识,在熟悉的过程中又要快速的产出,这个时候挑战最大。
八、你理解的QA是怎样的?
QA即质量保证,就从质量和保证这两个词来展开,回答的尽量有深度一些,再加上自己的职业规划,会让面试官觉得你对测试这个职业是认真的。
九、为什么开发转测试
这个问题我是逢面必问,不仅面试官问,HR也问,问到最后我都可以脱口而出了。
总结为两点:
①开发的要求是深度,测试的要求是广度
②自身性格特点
以上就是我还记得的一些面试题目和感受,几轮面试下来一个测试小白都会成长为测试大神,所以多出去看看吧,收获和惊喜总是会有的。