点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复“资源”、“测试工具包”领取测试资源。
Hi,大家好。给大家分享一波面试题。如果想要获取更多面试题,可以在后台回复“面试顺利”。
一
接口基础
你是如何用工具做接口测试的?
接口测试我们是在XX项目做的,主要有XX接口,XX接口,XX接口等。
1)首先是从开发那里拿到API接口文档,了解接口业务、包括接口地址、请求方式,入参、出参,token鉴权,返回格式等信息。
2)使用Postman或Jmeter工具执行接口测试,一般使用Jmeter的步骤是这样的:
做接口的时候遇到的问题是自己独立解决,比如返回值乱码(修改Jmeter的配置文件为UTF-8编码方式),比如需要登录后才能取得token鉴权码并且这个鉴权码在下面的请求中需要使用正则表达式提取器提取token的值等。
cookie、session、token的区别?
1)cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登录后才可以获取到token,然后在每次请求接口时需要带上token参数。
2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie。
3)可以将登录信息等重要信息存放为session;其他信息需要保存,可以放在cookie。
谈谈对HTTP协议的了解?
超文本传输协议,端口为80,特点(无记忆功能、快速)是由请求和响应两部分组成,请求由请求头、请求行、请求正文组成;响应是由响应头、响应行、响应正文组成,之前我们公司的接口是采用https协议的。https http+ssl协议 端口443 面向安全的超文本传输协议。
Postman中设置环境变量有什么用?
接口测试测试的环境有开发环境,测试环境等,为了测试的时候方便,就在Postman设置环境变量,到时所有接口都引用该环境变量,这样就不用为了切换环境导致每次都去修改被测系统接口的主机地址;点击右上角环境变量管理按钮-新建环境变量,在脚本中使用{{变量名}}去调用。
Jmeter中如何实现关联?
上一个接口中通过正则表达式提取器或jsonpath解析器提取下一个接口需要的参数值保存到变量,然后再写一个接口通过${变量名}去获取变量。
二
Python考察
列表和元组的区别?
字典的原理?
字典是使用hash表来实现key-value之间的映射和存储的数据结构,hash函数设计的好坏影响着数据的查找访问效率。字典是通过哈希表实现的,字典也被称为哈希数组。哈希函数的目的是使键均匀地分布在数组中,并且可以在内存中以O(1)的时间复杂度进行寻址,从而实现快速查找和修改。哈希表中哈希函数的设计困难在于将数据均匀分布在哈希表中,从而尽量减少哈希碰撞和冲突。
说一下hash算法和哈希冲突?
哈希算法:根据设定的哈希函数H(key)和处理冲突方法将一组关键字映射到一个有限的地址区间上的算法。也称为散列算法、杂凑算法。
哈希表:数据经过哈希算法之后得到的集合。这样关键字和数据在集合中的位置存在一定的关系,可以根据这种关系快速查询。
非哈希表:与哈希表相对应,集合中的 数据和其存放位置没任何关联关系的集合。
由此可见,哈希算法是一种特殊的算法,能将任意数据散列后映射到有限的空间上,通常计算机软件中用作快速查找或加密使用。
哈希冲突:由于哈希算法被计算的数据是无限的,而计算后的结果范围有限,因此总会存在不同的数据经过计算后得到的值相同,这就是哈希冲突。
怎么解决哈希冲突?
解决哈希冲突的方法有:开放定址法、链地址法(拉链法)、再哈希法、建立公共溢出区等方法。
开放定址法:当冲突发生时,使用某种探查技术在散列表中形成一个探查序列。
拉链法:将所有关键字为同义词的结点链接在同一个单链表中。
再哈希法:同时构造多个不同的哈希函数。
建立公共溢出区:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。
Python内存管理?
Python内存管理机制:引用计数、垃圾回收、内存池。
1)引用计数
引用计数是一种非常高效的内存管理手段, 当一个 Python 对象被引用时其引用计数增加 1, 当其不再被一个变量引用时则计数减 1, 当引用计数等于 0 时对象被删除。
2)垃圾回收
① 引用计数
引用计数也是一种垃圾收集机制,而且也是一种最直观,最简单的垃圾收集技术。当 Python 的某个对象的引用计数降为 0 时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾了。比如某个新建对象,它被分配给某个引用,对象的引用计数变为 1。如果引用被删除,对象的引用计数为 0, 那么该对象就可以被垃圾回收。不过如果出现循环引用的话,引用计数机制就不再起有效的作用了。
② 标记清除
如果两个对象的引用计数都为 1,但是仅仅存在他们之间的循环引用,那么这两个对象都是需要被回收的,也就是说,它们的引用计数虽然表现为非 0,但实际上有效的引用计数为 0。所以先将循环引用摘掉,就会得出这两个对象的有效计数。
③ 分代回收
3)内存池
Python在运行期间会大量地执行malloc和free的操作,频繁地在用户态和核心态之间进行切换,这将严重影响Python的执行效率。为了加速Python的执行效 率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。
介绍一下Python拷贝?
浅拷贝: 创建新对象,其内容是原对象的引用。浅拷贝有三种形式:切片操作,工厂函数,copy模块中的copy函数。浅拷贝之所以称为浅拷贝,是它仅仅只拷贝了一层。
如:lst = [1,2,3,[4,5]]切片操作:lst1 = lst[:] 或者 lst1 = [each for each in lst] 要注意:list1=lst 和list1=lst[:]的区别工厂函数:lst1 = list(lst)copy函数:lst1 = copy.copy(lst)
深拷贝:只有一种形式,copy模块中的deepcopy函数。和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。深拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关联。
三
人事问题
为什么要离职?
建议时将问题归咎在自己身上,就算在前一个工作受到再大的委屈,对公司有多少的怨言,都千万不要表现出来,尤其要避免对公司本身主管的批评,避免面试官的负面情绪及印象。
为什么想来我们公司面试?
如果你已经对该单位作了研究,你可以回答一些详细的原因:
这都显示出你已经做了一些调查,也说明你对自己的未来有了较为具体的远景规划。
你对加班怎么看?
公司问这个问题,并不证明一定要加班。只是想测试你是否愿意为公司奉献。可以这么回答:
你的职业规划?
如果有幸进入贵公司,首先,我会尽快熟悉项目的业务流程,尽早融入到团队中,和开发人员多沟通交流 ;其次,利用测试工具和所积累的测试技巧,熟悉某些业务的Bug可能性关键点 ,为客户提供满意的产品;再次,我会利用工作之余进行充电,及时总结工作,努力提高自己的专业技能,完善自己的性能测试自动化测试技能,在工作中慢慢积累经验,使自己强大起来,以后担任更重要的职务,为公司创造价值。
你对薪资的要求?
如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱。他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。
最后,如果你有什么补充的点,欢迎在文末评论区留言喔。
更多系列文章
敬请期待
想获取更多最新干货内容
快来星标 置顶 关注我
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!