前言
大概一个月没写博客了吧,这段时间事情比较多(家里有事,请了一段时间假,正好利用剩余几天时间面了几次试),也没抽出来时间写博客,还好所有的事情已经处理完了,今天闲来无事就整理一下这几次面试过程中遇到的问题吧
我大概面试了6,7家公司吧,有大公司也有小公司,最后拿到4家offer,可能有的人看到这样的数据,会说我在吹牛*,我想说的是你做不到的事情不代表别人做不到。现在把我是如何在一周内拿到4份offer的经验和经历做个简单的介绍,分享一下自己的心得,希望对即将找工作的你有些帮助。
面试准备
简历
简历是面试者的敲门砖,只有通过HR的初步筛选你才能有机会得到面试,所以简历还是一大关。说实话我也不确定我的简历是否写的标准,是否符合用人单位的要求,但是我面试的这几家公司有那么2,3家是主动找上我的,而且这几天每天都能接到面试邀请,所以我觉得我的简历应该不会有太多问题,ok,我简单的说一下我的简历有哪些内容,哪些内容可能得到了HR的青睐
1. 自我介绍
自我介绍部分我写的比较多吧,大概有8条,大多是关于测试工具,测试理论,用例设计方法,数据库操作,Linux系统,以及编程语言与测试框架的掌握程度。这里我个人建议每一条可以按照掌握程度依次排序,这样会很工整,HR看到之后也会对你的技能有一个大体的评估
2. 项目经验
项目经验这里就很重要了,如果你做过的项目比较多的话,可以选择2-4个做典型,并把项目中用到的技术穿插到项目中,不建议写太多项目,而且你写的项目一定要是你非常了解,亲自参与过的且能够概括你技术的项目。比如我写了4个项目,其中包括功能测试,ui自动化测试,接口自动化测试的项目以及一个关于敏捷测试的项目,因为项目经验是技术最看重的地方,所以尽量把项目写清楚,包括项目的简单介绍,你需要让面试管看到这个介绍后大概能够知道这个项目是做什么的,然后你再针对这个项目展开写你用到的技术。
3. 附加信息
附加信息我觉得比较重要,你可以把你的专业证书(这里的专业证书不是说你的毕业证书,而是能够证明你在这个行业的专业性的说明)或者有一定行业影响力的论文(比如:专利,不过一般人这东西都没有),如果你有技术博客,开源项目,最好都写上,绝对会给你加不少分,我就把我的博客和GitHub的连接放到了附加信息中
总体来说,简历中的最重要内容就这3项(自我介绍和项目经验是非常重要的,而附加信息是你的加分项),其他都是辅助内容,当然比如教育经历,个人基本信息等虽然不是很重要,但也是不可缺少的,你还可以选择性的加入一些对你的工作有帮助的信息
面试
自我介绍
自我介绍是面试中不可缺少的一个环节,无论是HR还是技术都可能会先让你做一个简单介绍,通过自我介绍可以让面试官对你有一个大概了解,也会通过你的介绍来问一些技术性问题。个人观点:建议你提前写好自我介绍,可以背下来,这样会避免由于紧张语无伦次没有逻辑性,自我介绍内容可以包括你的工作经历,经验以及你的项目介绍,包括项目的流程以及使用到的技术,最后可以简单说一下自己的兴趣爱好或者自己的开源项目技术博客等内容
技术面试
技术面试除了自我介绍,几乎都是关于对你掌握的技术和公司对技术的要求是否匹配的考察,一般包含笔试题和面试题,其实我面了这些公司也只有2家公司有真正的笔试题,而其他公司全部是面试官当场出的笔试题叫我做,当着面试官做题会比直接做笔试题会有更大的难度,因为面试官会看着你写,这样会增加你的紧张感,很容易脑子空白,所以建议大家一定提前做好这样的心里准备,不要因为紧张什么都写不上来,那就比较尴尬了,也有很大几率措施机会,同时技术面试有很大部分是关于你的项目,面试官会从你的项目中挖掘一些问题点,所以项目一定要够了解。接下来是我面试过程中遇到的所有面试题,供大家参考
(1) 登录窗口如何设计测试用例?
1 我相信这种问题对于从事测试的我们来说应该不会有很大问题
(2) 接口自动化测试的流程是怎么样的?你遇到过哪些比较难解决的问题?怎么解决的?
1 接口项目的搭建流程,如果你简历中写了接口自动化的项目,回答流程应该也不是问题
2 比较难的问题我当时说的是接口依赖,这里我觉得一定不要给自己挖坑,一定说一个自己能够解决的问题,但是也不要是太简单的问题
(3) PO设计模式的原理?哪些地方能够改善?
1 原理我觉得都能回答上来 ,即使你不太会,百度都有答案
2 改善的地方我说的是封装,简单的说了自己的项目做了几层封装,每一层封装 都干了什么,其次就是元素的定位,我会把元素定位单独抽离出来放到配置文件中,方便后期维护
(4) Unittest框架有什么缺点?
1 不够灵活,比如进行 ui 自动化设计时,会多次打开浏览器,增加脚本运行时间(当然这个也不是绝对的)
2 测试报告不够全面,没有 pytest 的 allure 测试报告清晰美观
3 实在说不出来其他的,就把 pytest 的优点说说,这样也会有一个对比,也能够表现你懂unittest 和 pytest
4 答案肯定不唯一,主要考察你使用的程度,是否真的了解这个框架,所以可以把你遇到的问题说出来
(5) Ui 自动化测试中定位方式有哪些?哪些是你常用的?
1 这个也简单,随便答
(6) Ui 自动化测试有哪些缺点?如何改进?
1 其实主要就是不稳定
2 页面经常变,不好定位
3 不适合业务复杂和频繁变动的项目
4 改进:可以根据自己的实际情况说明一下,实在没经验可以说一下项目中尽量 使用显示等待,然后对比的和隐士等待和强制等待说一下
(7) 性能测试懂吗?可以简单说一下有哪些性能指标吗?
1 这个题真的是,所有单位都问到了,可是我是真的不会,所以我都实话实说的, 但是性能指标我知道,所以最后只回答了一些指标
(8) 会使用哪些测试工具?使用到什么程度?
1 会用postman和jmeter做接口测试,多数我都是用来调试接口,因为我在单位做接口测试都是自己使用代码搭建框架,自己手动写,使用工具不够灵活
(9) 接口自动化框架和ui自动化测试框架都是自己搭建的吗?遇到过哪些难点?
1 这个就实事求是回答就好了
2 Ui 部分可以说定位的难度以及稳定性的问题
3 接口就可以说一下接口依赖的问题(如果你不知道那千万别说,因为你说了肯 定会问你解决办法的)
(10) 遇到过印象深刻的bug吗?
1 我从来没想过我也会遇到这样的问题,但是还好我提前准备了,所以我觉得我回答的也算可以(就一家单位问了,最后没要我,但是这家单位是我觉得我所有面试里面面的最好的一家,可惜了!)
2 我的思路:简单描述了一下这个 bug 所在系统的架构,比如分为前台,后台和 移动端,bug 出现的位置是移动端,然后描述了一下 bug 的表象,最后说了一 下 bug 的产生原因和解决思路
(11) linux命令?
1 Linux命令的问题,大多都有,全部存在笔试题中
2 查看系统log的命令(过滤文件内容的,不太记得了)
3 还有一些关于查看系统性能的命令
4 基础命令以及常用命令一定要会
(12) 数据库
1 面试必考,没啥难的,但是很容错,我经历过的数据库题几乎都是面试官当场出的,最难只涉及到多表关联查询,所以其实不必担心,自己多练习一下完全ok
(13) 求两个集合的差集
1 这个题相当容易,但是如果基础不好真的会想不出来
2 当时这个题也是面试官临时出的,我当时想到了使用最简单的方法就是使用集合做减法,但是我犹豫了,没敢写,最后使用列表实现的(哎,当时脑子有点空白了, 很烦当着面试官的面写代码,而且还是在纸上)
(14) 使用 JS 实现一个登录功能
1 这个同样是当着面试管的面写的,没写出来,但是我用html写了个登录页面
2 写完我脸都红了,还好最后拿到这家的 offer
(15) 你们的项目是使用 Jenkins 集成的吗?用过哪些插件?用例的执行策略是怎么样的?
1 实际用过什么插件说出来可以了
2 策略应该问的是整个项目多久执行一次,或触发构建条件是什么,所以我当时回答的是:因为我们项目迭代不是很频繁,最开始框架搭建完时我是每天固定时间执行一次,后来框架稳定后,我选择的是一周执行一次,如果有了新需求那么我会把频率调高一点
3 有经验的按照实际说就好,没经验的各凭本事吧
(16) 你的项目中接口用例有多少?每次大概执行多长时间?
1 这种主要就考察你的实际经验了,根据实际经验说就好
(17) 深 copy 和浅 copy 了解吗?能说说有什么区别吗?
1 百度很详细
(18) 显示等待,隐士等待,强制等待区别?
1 这个就很容易了
(19) HTTP 协议能说说吗?http 和 https 有什么区别?
1 这个也比较简单,简单说一下原理,组成即可
2 区别就说一下安全性问题,但是一定要了解一下 https 的加密算法,至少要知 道是用什么加密的,比如 ssl
(20) Get 和 post 请求的区别?
1 这个题也是面试必考,所以把你知道的尽量说
(21) Session 和 cookie 的原理?
1 这个题也比较简单
(22) 针对 app 安装测试,如何设计测试用例?
1 这个题感觉自己回答的还可以,但是我最后说了一条用例是这样的:安装新版 本的 app 包后再次安装老版的包是否能够成功?
2 当时面试管重复了一次我这句话,我也不知道啥意思?哈哈
(23) 一个列表[1,2,10,22,33,44]?(类似这样的一个列表,找出列表中两个数的和的数,然后把这个数组成一个新的列表)
1 这个题同样是面试官当场出的,刚开始也有点懵,后来面试官提示了一下,还 好写出来了
(24) 说一下你的接口框架?能给我讲一下大概思路和过程吗?(会议室有个黑板,让我 边画边说)
1 我搭建的框架的整个目录结构画了一下,然后讲了一下每个目录的作用,存放什么文件以及用例的设计流程
2 后来面试官又问了我接口依赖的问题,我说的反射和 Globals()方法(当然不能这么简单的说,一定结合项目,这个地方我记得说了好久,问的挺深的)
(25) 多个系统如何做测试?
1 这个题还是结合自己实际情况说吧,我当时有点懵,说的不是很清楚
(26) 做项目时,你是如何入手的,系统中比较难的地方能说一下吗?
1 自己结合实际说,我认为考察的就是测试流程
(27) 接口自动化测试流程?
1 自动化流程会涉及到测试数据以及自动化的测试用例,实际工作中如何做的说一下大体流程完全ok
(28) 给一段 json 数据存在文件中,然后编写代码解析,取出指定的字段?
1 比较基础,实际考察到 json 文件的操作以及字典的操作
(29) 你的自动化测试项目中有发送测试报告邮件的功能吗?又如何解决丢失css的问题?
(30) 写一段代码,随机生成一段指定长度的字符串?
1 这个题我当时写的比较复杂了,后来回来搜了一下,使用 String 与 random 模块很简单,一行代码搞定
以上大概就是我遇到的所有面试题了,其实大多数都不是很难,所以好好发挥,拿到心怡的offer没多大问题
HR面试
通常到了HR面试这关那么很大几率说明你技术面试已经通过了,但是我面试这几家全部都经历了HR面试,我不确定是不是没收到offer的公司是因为被HR拒了,接下来是部分被HR问到的问题
(1) 自我介绍
(2) 做没做过管理
(3) 你现在的薪资待遇
(4) HR 这边我记住的问题不多其实大多都像和你聊天一样,但是她一直在你的简历上写写写,也不知道在写些啥
注意事项
(1) 着装(我为了面试自己买了一套正装,不管有没有用吧,至少我觉得应该认真对待每一次面试,不仅仅让面试官觉得你足够重视贵公司)
(2) 自我介绍一定不要太紧张,最好提前准备好要说的内容
(3) 回答问题时可以不要太快速的回答,避免面试官抓到你话语中的漏洞,一定想好了再说
(4) 一定做好当着面试官写代码的准备,因为很多人都会紧张,脑子空白,我也是,因为我面试这几家只有一家有笔试题,但是其他单位都是面试管临时出的,所以还是有点慌的
(5) 一定要熟悉自己的简历,包括离职入职时间这些,否则有一点问题,HR 就会追问你(HR 真的很精明),其次项目名称一定记住啊! !!要不真的尴尬
(6) 面了这么多家,自动化与性能必问,所以多了解了解吧,再就是管理经验, 没有一家不问的
(7) 基础知识主要都是测试用例设计,代码几乎关于字典,列表,元组,json 这些数据的操作以及linux,数据库等
(8) 项目经验很重要,面试的时候几乎都是围绕项目来问的
(9) 自动化的框架一定要理解,自己能够完全的口述出来
(10)最重要一点,如果你还没准备好一定先不要投递简历,以为你投递一次就相当于少了一次机会
最后
以上所有内容均是我面试单位的真实经历,仅作参考,希望对将要找工作的小伙伴有帮助!