职业经验 每天一点面试题 (2021/3/16)

**潘 · 2021年03月16日 · 最后由 solomon 回复于 2021年04月07日 · 3368 次阅读

  前面几天去准备面试了,准备了好几天的测试相关的面试题、笔试题。结果当天笔试题全部都是 python 的知识,没有一点测试相关,本来编程就不行,到现在为止在职学习了 1 个月 python,也没 coding 几道题,能做出来才是怪事,岗位是 “测试”,结果找 “开发”。可能因为是小厂的原因,想花小钱找全方面人才,但是写 “测试开发” 也比写 “测试” 好,这样就不会浪费双方的时间,算了接着总结学习

一、测试基础题

问:如何写测试用例,举一个平时测试中的测试用例设计过程
答:
  1、测试人员尽早介入,彻底理解需求,这是写好测试的前提。2、如果以前有类似的需求,可以参考类似需求的测试用例,然后还需要分析类似需求的 bug 情况。3、清楚输入、输出的各种可能性,以及各种输入之间的关联关系,理解清楚需求的执行逻辑,通过等价类、边界值、判定表等方法找出大部分用例。4、找到需求相关的一些特性,补充测试用例。5、根据自己的经验分析遗漏的测试场景。6、多总结类似功能点的测试点,才能够写出质量越来越高的测试用例。7、书写格式一定要清晰
  平时写测试用例设计过程:根据需求文档分析产品定位和使用场景,并绘制出相关组网图;确定测试过程中需要使用的硬件设备及辅助设备清单;如果非第一轮测试需要分析前一轮测试中 bug 分布情况,划分出板块成熟度,计划好测试重点,如果是第一轮测试需要做好板块划分,非特殊说明情况下测试权重一致;设计测试方法,根据所负责的模块将每一块功能都按功能测试、压力测试、性能测试、异常测试、组合测试等模块进行分析;根据不同模块的测试设计分配时间;分析测试中可能出现的不足;根据测试设计从测试编号、测试模块、测试步骤、预期结果等几个方面编写测试点

二、语言类面试题(python)

问:python 数据结构有哪些,list、tuple、dict、set 的本质与区别
答:
  python 中数据结构有 7 种:数字类型、字符串类型、列表、元组、字典、集合、布尔
  list:list 的本质是顺序表,只不过每次的扩容都是指数级的,所以动态增删数据时,并不会频繁改变物理结构,同时受益于顺序表遍历的高效性(通过角标配合表头物理地址,计算目标元素的位置),是的 python 的 list 综合性能比较优秀。
  tuple:本质上也是顺序表,且不可修改不可扩容,只读
  dict:本质上是顺序表,不过每个元素存储位置的角标不是由插入顺序决定的,而是由 key 经过 hash 算法和其他机制,动态生成的,即 key 通过 hash 散列,生成 value 应该存储的位置,然后再去存储这个 value。所以 dic 的查询时间复杂度为 o(1),因此 dict 的 key 只能为可 hash 的对象及不可变类型
  set 实现列表去重:本质上通过hasheq来实现对每个元素的 hash 散列,判断 hash 值是否一致,一致的化,判断对象是否具有一模一样的方法和属性,如果都一致则去重

三、操作系统类面试题(linux)

问:请你说一下 vector 特性
答:
  vector 的特点是:其容量再需要时可以自动分配,可以再运行时高效地添加元素,本质上时数组形式的存储方式。即索引可以再常数时间内完成,缺点是再插入或者删除一项时,需要线性时间,但是再尾部插入或者删除,是常数时间的。
  linux 开发过程中常用到的一个功能 -- 列表显示,如何将中心数据进行列表显示,这里用到了 vector 容器,从中心获取的数据通过 tector 容器传输给站点程序从而实现批量数据的传输。vector 容器常用的函数包括:

  • push_back 函数(函数原型:void push_back(const T&x)):用来向容器末尾追加数据;
  • inser 函数(函数原型:void insert(iterator it,size_type n,const T&x)):用来向容器中插入数据,该函数与 push_back 的区别是 insert 能够插入任何位置,而 push_back 只能向模块追加;
  • erase 函数(函数原型:iterator erase(iterator it)):删除指定数据,并返回被删除数据的下一个数据;
  • size 函数(函数原型:size_type size() const):返回容器能容纳的最大元素个数;
  • max_size 函数(函数原型:size_type max_size() const):返回函数容器能容纳的最大元素个数;
  • clear 函数 (函数原型:void clear()const):用来清空容器中所有的元素

四、计算机网络类面试题(TCP/IP,HTTP,ARP)

问:请回答一下 http 用的什么连接
答:
  在 http/1.0 中,默认使用的是短链接。也就是说,浏览器和服务器每进行一次 http 操作就建立一次连接,但任务结束就中断。如果客户端浏览器访问的某个 HTML 或其他类型的 web 页中包含有其他的 web 资源,如 javascript 文件、图像文件、CSS 文件等;当浏览器每遇到这样一个 web 资源,就会建立一个 http 会话。
  但从 http/1.1 开始,默认使用长连接,用以保持连接特性。使用长连接的 http 协议会在响应头有加入这行代码:Connection:keep-alive
  在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 http 数据的 TCP 连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。keep-alive 不会永远保持连接,它有一个保持时间,可以在不同的服务器软件(如 Apache)中设定这个时间,实现长连接要客户端和服务端都支持长连接

五、数据库类面试题(sql,mysql)

问:请你说一下 sql 左连接以及使用场景
答:
  left join(左连接)返回包括 left outer 子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表所有选择列表列均为空值。使用场景:可以保持左表完整加入另一个表中的数据

六、自动化接口测试(Jmeter)

问:说一下你在项目自动化测试中,给出步骤后,如何用 Jmeter 构建相关 http 请求,以及其中必不可少的部分有哪些
答:
1、打开 Jmeter 后,创建一个线程组

2、在线程组中,创建将你所需要的 http 请求

3、再添加 http 头和 cookie

4、为了方便看运行结果,添加查看树和汇总报告

5、编辑你所需要下发的 http 请求(以 post 为例)

6、cookie 和 header 都可以通过 f12 查看,然后填入相应的配置元件中

总体来说,通过网络 F12 下获取 http 相关信息后,手动自己添加脚本就是以上步骤,可能中间会遇到很多问题,然后测试项目不同可能操作也不同,这个就根据自己的项目如何做的回答就行

七、code(算法)

问:leecode 7 easy
答:

'''
输入一个32位的有符号整数,要求输出反转后的结果,
示例:
输入123,输出321;输入-123,输出321;输入120,输出21

超过-2**31和2**31-1的部分返回0
'''

class IntReverse():
    def int_Reverse(self,num):
        self.num = num
        list_num = list(self.num)
        if list_num[0] == '-':
            res = int(''.join(list_num[1:][::-1])) *(-1)
        else:
            res = int(''.join(list_num[::-1]))
        if res<pow(-2,31) or res>pow(2,31)-1:
            return 0
        return res

if __name__ == '__main__':
    Ireverse = IntReverse()
    num = input('请输入需要反转的整数:')

    res = Ireverse.int_Reverse(num)
    print(res)

八、其他

问:暂无
答:
  ABCDE

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 5 条回复 时间 点赞

HTTP keep-alive 这块涨知识了🍗

Mango 回复

😀

打有准备的仗挺好的。以前都是裸面,现在不行了。

solomon 回复

是的,很多东西你其实用过,也知道,不做总结的话很容易记不起来,面试前需要多总结

**潘 回复

是的,有道理。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册