最近刚换了一份工作,上周请测试组的同事们一起吃了个饭,饭桌上分享了部分面试经验。饭后,一个同事跟我说:“有空的话,能不能把相关经验梳理成文档发给我参考呀?”。当初回复他:“看吧,我之前是打算把面试题整理出来,后面有时间再整理经验吧”。周末有一个前同事也问我有没有时间,想找我咨询下面试的经验。后来,就谋生了整理的念头了,趁着这几天有空梳理出了今年面试相关的笔试、面试题,总结了部分面试经验,供大家学习参考。
因为笔者找的是自动化相关的测试,所有,很多问题是面试者针对自动化提出的相关问题,另外,自己近几年做的都是web端的测试,所以,app的问题很少,面试官问我又没有做过app方面的测试,我一般都是回复“没有”。当然,这一块也是我竞争的一个弱势,市场上app的测试需求比web的需求多好几倍。笔试题这一次先给出题目,会做的朋友也可以自己先做一下,并不是特别难,考的都是编码基本功。
下一篇会把笔试题答案公布出来。由于面试题没有统一的标准答案,另一方面部分面试题自己回答得也不是特比好,这里,就不给出面试题的答案了。
笔试/面试算法题:
1 # ----------------公司一---------------- 2 #第一道题: 3 str001 = "my love is you do you konw it ? do you love me ?" 4 list001 = str001.split(' ') 5 print(list001) 6 print(str001.count(' ')) 7 print("the number of words is %s" %(len(list001))) # 填空题 8 print("the number of space is %s" %str001.count(' ')) # 填空题 9 print("the number of you is %s" %(list001.count('you'))) # 填空题 10 # 解释一下整个程序的过程? 11 12 #第二道题:一个数的阶层运算,求结果 13 def func001(a): 14 if a == 1: 15 return 1 16 else: 17 return a*(func001(a-1)) 18 19 result = func001(5) 20 print(result) #填空题 21 22 #第三道题目:实现一个数字的斐波那切数列 23 # 8 的菲波那切数列数列为: [1,1,2,3,5,8,13,21] 24 25 26 #第四道题(机试题):将一个列表的负数给删掉,然后再返回最终的列表 27 #错误代码 28 """ 29 def listHandle(a): 30 for i in a: 31 if i < 0: 32 a.remove(i) 33 return a 34 list001 = [1,3,-3,5,-4,-6,10] 35 print(listHandle(list001)) 36 """ 37 38 # ----------------公司二---------------- 39 """ 40 机试题1: 41 读取某个json文件,取出某个key下面所有的值(列表嵌套字典) 42 再拿到嵌套字典里面的value值,然后以第一个value值为key,第二个value值为value追加到新的字典内 43 新字典格式{"fe5f5a07539c431181fc78220713aebein01":"zyy1","73ea2bf70c73497f89ee0ad4ee008aa2in01","zyy2"} 44 json文件内容: 45 { 46 "configuration_id": "cf49bbd7d2384878bc3808733c9e9d8bpr01", 47 "configuration_name": "paramsGroup-bcf9", 48 "apply_results": [ 49 { 50 "instance_id": "fe5f5a07539c431181fc78220713aebein01", 51 "instance_name": "zyy1" 52 }, 53 { 54 "instance_id": "73ea2bf70c73497f89ee0ad4ee008aa2in01", 55 "instance_name": "zyy2" 56 } 57 ], 58 "success": false 59 } 60 61 """ 62 """ 63 机试题2: 64 测试两个接口,一个post,一个为get 65 用Python脚本写出断言httpCode ,msg 等信息的相关代码 66 """ 67 68 # ----------------公司三---------------- 69 """ 70 面试时间:2019/11/26 71 面试题1:1加到N的阶层之和,比如N=4, result = (1! + 2! + 3! + 4!) 72 73 """ 74 75 # ----------------公司四---------------- 76 """ 77 78 面试题1:实现一个数字的反转,比如输入123,输出321 79 """ 80 81 """ 82 83 面试题2:用awk命令将日志里面的时分秒,日期取出来 84 日志文件内容: 85 181014 21:48:01 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 2019-12-13 86 181014 21:48:02 InnoDB: Initializing buffer pool, size = 8.0M 2019-12-13 87 181014 21:48:02 InnoDB: Completed initialization of buffer pool 2019-12-13 88 """ 89 90 # ----------------公司五---------------- 91 """ 92 写一个快排的算法程序 93 """ 94 95 # ----------------公司六---------------- 96 """ 97 写一个冒泡排序的算法程序 98 """ 99 100 # ----------------公司七---------------- 101 """ 102 递归实现统计列表1~9999中3出现的次数 103 """ 104 """ 105 统计列表1~9999中包含3的元素的总个数 106 """
面试题:
技术面试:
- 自我介绍一下吧。
- 能说一下你之前一天的工作内容吗?
- 你怎么判断你的用例覆盖率是比较高的?
- 知道怎么去保证软件的质量吗?
- 平时常用的设计测试用例的方法?
- QA和测试的区别?
- 用过Linux命令吗?
- Linux环境下查看某个端口是否占用知道什么命令吗?
- Linux下面查看日志里面某个应用错误日志的最近十条日志知道用什么命令吗?
- 对数据库熟吗?工作中为啥要用到数据库?
- 对数据库掌握到什么样的程度?
- 查询数据库里面的前十条数据,知道怎么查嘛?
- 知道fiddler的工作原理嘛?
- 你怎么去设计你的自动化用例的?
- 你具体是怎么去实施自动化的?
- 你的自动化框架是怎么样的,能画出来吗?
- 使用这套自动化框架之前有调研过吗,考虑过它的普适应和可靠性吗?
- 了解进程和线程的区别吗?
- 了解装饰器吗?
- 听过分层自动化吗?
- 什么是数据驱动测试?
- 什么是测试驱动开发?
- HTTP报文包括些什么?
- 我有一个列表,知道怎么把里面重复的元素给去掉吗?
- Pychon内置的排序函数知道是啥吗?
- 你常用的Python库?
- 你用Python做接口测试会用到哪个库知道吗?
- Python读取数据库会用到哪个库知道吗?
- 平时怎么去定位一个元素的?
- 一个元素定位不到,可能的原因是啥?
- 知道怎么去处理弹框吗?
- 自动化的覆盖率是多少?
- 自动化的成功率是多少?
- 自动化用到什么的测试场景中?
- 接口自动化什么时候引入,UI自动化什么时候引入?
- 有一个日志文件,我要查询出"你好"的次数,知道会用到Python哪些函数吗?
- 知道在怎么样可以提高自动化的执行效率吗?
- 自动化脚本用到过多线程、多进程吗?
- 了解排序有哪几种吗?
- 你这边有什么问题吗?
管理面试:
- 了解过我们公司吗?知道我们公司有哪些投资方吗?
- 你之前带的团队多少人,平时怎么去管理他们的呢?
- 听说过移动互联网测试开发大会嘛?知道它是由哪一家公司主办吗?
- 有做过APP测试吗?
- 有做过服务端测试嘛?
- 做过性能测试吗?
- 做过安全测试吗?
- 听过敏捷测试吗?
- 听过微服务吗?
- 听过容器吗,工作中用过它吗?
- 工作中用过TDD嘛?
- 听过WebSocket嘛?
- 了解过端到端测试吗?
- 如果新工作不是纯自动化测试,你会做吗?
- 写过测试报告吗?测试报告包含哪些内容?
- 用英文交流,你觉得自己可以吗?用例也要用英文写喔?
- 你期望进入什么样的公司?
- 你工作之余会做些什么?
- 你平时怎么学习的?
- 自动化遇到的比较大的问题是啥?
- 你的优缺点是啥?
- 你理想的人生是怎样的?
- 你做过的最自豪的一件事是啥?
- 你这边有什么问题吗?
HR面:
- 知道普通测试工程师和合格测试工程师的区别吗?
- 开发延迟转测导致测试加班加点赶工后产品上线,针对这个问题,你怎么处理呢?
- 离职原因是啥?
- 怎么看待加班呢?
- 接受出差吗?
- 接受996吗?
- 最快的到岗时间是啥?
- 对我们公司期望多大呢?
- 目前拿到了几个offer了呢?
- 你这边有什么问题吗?
面试总结:
- 简历很重要:之前投过好几家公司,最后告知简历筛选未通过,说我的自动化经验不足,最后发现是上一家公司的自动化经验未写进去;自从改完简历后,最近一个月一个星期的面试次数跟上一个月的面试次数差不多了,当然,这个也是大意导致的,之前的简历只在技能方面罗列出自己的相关技能,没怎么在意项目经验也要进行体现。
- 把握好简历包装的度:外贸公司很注重诚信,所以,投给外包公司的简历需确保自己的工作经验,职位,入离职时间是准确的;之前面过一家外贸公司,前两轮都没问题,就剩最后一轮“客户面试”了,最后因为虚构了3年的工作经验,公司接受不了,错过了该公司。针对被第一次问到的问题:有些面试问题可能是第一次被问及,即使第一次没回答好,通过观察面试官的反应,也可以做一些补充性的回答。
- 面自研公司的建议:自研公司比较在意你对他们公司的了解程度,所以面试前最好提前了解他们的产品、投资方之类的,之前面过一次公司,属于腾讯系的创业型公司,面试官问我有没有百度过他们公司,我回答“没有,只是浏览过他们的官网,大致了解他们的产品线”。面试官继续问:“有了解过我们的投资方吗?”,我也回答“没有。o(╥﹏╥)o”。此刻 ,已经看得出面试官有点失望了。。
- 如何摆脱外包测试的刻板印象:自研公司对外包公司出来的测试都会有刻板印象“觉得在外包公司待机久了,对业界很多新技术了解甚少”。之前面试一家自研公司,问我工作之余会做些啥,有了解过“移动互联网测试开发大会吗?”,我回答“有了解过”,对方继续问“有参加过吗?”,我回答“没有”。所以,想摆脱他们的刻板印象的话,平日可以多关注一些领域内的公众号,相关的各种论坛也可以考虑参加一下,当然,这个也看自己的兴趣和目标了。
- 关于算法题:自动化测试或者高级测试都会考一些算法题(leetcode上面简单级别的题),平时要把编码基本功打扎实,有空也可以去上面刷刷题。
- 关于是否准备好的问题:长期没换工作的人,面对目前低迷的大环境,又听到某某说工作不好找之类的,对于跳槽可能会有种恐惧感,总担心自己没准备好,导致跳槽的决心不大之类的;这是一种正常的心里状态,我们面对不确定性,都会感到恐惧和焦虑;有时候是真的未准备好,有的时候,自己已经准备的差不多了,只是自己觉得自己未准备好而已,这个时候需要你需要大胆地走出去,了解市场的反馈,这种反馈才是客观的、真实的反馈。即使自己前面几轮面得不好也不要气馁,多复盘,做总结,相信等你面完50家公司的时候,一定可以对所有面试官的问题,都能对答如流了。
- 目前的市场现场:目前的市场现状大致是面试高级测试,都需要懂自动化,编程语言等,自动化测试更不用说了;测试开发的话一般也需要你有开源框架的二次开发、自动化平台、自动化工具开发的经验;APP、小程序测试的需求比Web端的更多,之前了解到腾讯招聘的APP测试跟Web端测试的比例为3:1;学历门槛也越来越高,很多稍微大一点的自研公司,包括华为外包都要统招二本学历,很多公司(包括外包公司)都要求统招学历。自研公司对一个候选人的面试通知期比外包公司的更长,之前好几家自研公司的面试都没啥大问题,一面、二面面试官对我的印象都不错,说3~5天内给答复之类的,最后就不了了之了,这种很大可能是找到了更合适的人选,亦或是找到了同样能胜任该岗位但是薪资要求比你更低的人员了。
- 关于求职平台:刚开始找工作的时候,在前程无忧,智联招聘,拉勾网上面都有投递过简历,最后发现回应效果最好的是boss直聘,其他平台投完后基本都是石沉大海,于是过段把其他几个app个卸载了。
- 薪资应该开高点还是低点:这里涉及到谈判技巧了,谈判高手跟对方谈判时,往往开高价,然后跟对方慢慢谈,慢慢降价。建议起初面试的时候,可以开高点,面了10家左右,发现都给不了自己期望薪资,再考虑降低要求;曾经自己面上一家公司,因为是自己面的第一家公司,也担心行情不好等因素,就开地保守点,最后,面试通过,自己又反悔,跟对方要求更高的薪资,最后,对方也没答应,只愿意给我当初的要价。当然,这个规则并不是死,面试者也可以根据自己面试表现情况,适当地调整,表现得好,开高一点,表现不好,开低一点。当然,薪资也跟年终奖情况、是否996、是否有加班费、五险一金、税前税后等因素息息相关,所以,在开价钱需问清楚相关情况。
- 怎么看待运气:找一份好的工作跟找一个好的对象一样,有时候是可遇不可求的,有时候,你能拿到一个offer,很有可能你无意投了简历,然后顺利地面试通过了;有时候,你跟公司双方都觉得比较合适,前面几轮面试还比较顺利,最后因为一些突发事件,导致最终没拿到offer,注定你们之间的缘分还是差那么一点点。个人觉得运气能够占到3层的样子,剩下的7层是靠自己的能力的。所以,对面试存有侥幸心理,是不切实际的。
- 面试前的突击效果多大:其实,面试好比一场考试,突击当然有部分效果,可以让你对长时间没用到的一些命令,语句快速熟悉一遍;但是,部分能力短期内是无法快速提升起来的,例如编码能力、linux命令、复杂的sql语句编写等,也有部分问题是自己实践过才知道如何回答的。所以,更多的是在于平日的累积和学习,做一个终身学习者,才能不惧于任何面试,不被行业所抛弃。