精华内容
下载资源
问答
  • 2021年字节、蚂蚁金服 的测试开发面试经验
    千次阅读
    2021-03-16 11:57:48

    字节的测试开发岗位面试经验分析


    2020年底到新加坡,歇了4个月开始找工作,分别投了字节跳动、蚂蚁金服2家。2家都是4轮面试,前3轮是技术面、最后一轮HR面试。幸运的通过了这2家的面试,分享一下面试经验。希望能帮助到有需要的人。

    字节面试

    测试开发面试4轮,前3轮都属于技术面试,每次70分钟左右,最后一轮HR面试(HR面试你只要不犯混就行)。直接贴上3轮面试问题:
    1面
    1.项目介绍,根据项目问问题,比如安全举个例子说明你怎么测试?
    2.对于隐私保护,你认为哪些是客户的隐私?
    3.如果同意隐私条款,但是软件在偷偷越权使用我的文件和视频,你认为有什么原因?
    4.AI领域,什么是TensorFlow?
    5.除了TF还有其他的同等的表达吗?
    6.那TensorFlow和Caffe有什么区别?
    7.AI产品流程是什么?具体解决什么问题?应用场景是什么?
    8.AI软件通过什么标准判断结果是否好?
    9.功能的接口测试,你是怎么测试的?
    10.性能测试,如果客户端出现假死,怎么定位?
    11.AI的性能测试,你测试过的有哪些什么原因导致性能不好?
    12.编译选项为什么影响性能?
    13.上拉刷新页面(比如淘宝的刷新),请你设计测试用例
    14.给出一个洗牌的编程方式
    15.给出洗牌的测试思路和设计
    16.你对你自己的职业定位和发展方向是什么?

    2面
    1.测试会考虑哪些方面指标? (简练参考:用例通过率、漏测率、问题发现率、代码覆盖率)
    2.你们代码覆盖率是多少?最后达到了吗?
    3.测试中印象深刻的事情是什么?那么做了哪些方面达到了性能优化?
    4.你们自动化框架是什么?
    5.自动化用例执行频率是怎么样? 会集成限制开发的代码提交吗? 具体怎么实现和开发的编译提交执行用例的?
    6. 对于新人,你们是怎么指导他们做测试设计?
    7.测试的效率提升有哪些方面?
    8.你怎么保障测试的全量覆盖?
    9.你说通过随机用例的方式,那么用例量过大,那么命中率/有效率就降低了,那么采用什么手段去解决这些问题?
    10.你用过哪些缓存框架?redis有什么作用?有哪些使用场景?
    11.数据库你有使用吗?关系型和非关系型数据库有什么区别?
    12.消息队列的框架有使用吗?(回答用kafka)说说kafka具体什么场景使用呢?
    13.同步、异步是什么意思?具体什么场景使用同步、异步,各优势是什么?
    14.你是通过哪些指标给你的团队靠谱?
    15.怎么确定团队目标?
    16.安全领域,你们主要测试哪些方面?
    17.web安全中,你具体怎么测试越权?使用什么工具?测试逻辑是什么?
    18.你想加入互联网,那你有了解过和IT公司的区别吗?做过哪些了解和准备?

    3面
    1.你之前测过安全,安全又不像功能那么明确,那么你们在产品生命周期上怎么去和产品协调,不冲突呢?
    2.你们测试安全,具备哪些硬实力和软实力?
    接下来 英语问答:
    1)你为什么申请海外的岗位?
    2)为什么你来新加坡后没有立即找工作呢?

    蚂蚁面试

    蚂蚁测试开发面试4轮,前3轮都属于技术面试,每次面试60分钟左右,最后一轮HR面试(HR面试要重视的,阿里的HR权利很大)。直接贴上3轮面试问题:
    1面
    1.自我介绍、工作经历介绍
    2.你能讲讲AI领域具体的业务流程吗
    3.在安全领域 你们怎么测试?怎么样才算是标准或者用例全集?
    4.安全测试或者AI测试,能举一个例子讲清楚测试吗?
    5.AI产品测试和之前做的产品有什么区别?
    6.编程题,写核心算法即可:
    1个人每次只能走1个或者2个台阶,那么如果现在有n个台阶,有多少种走的方式?
    F(n)=F(n-1)+F(n-2)

    2面(问项目非常细,偏深度思考、有高度的问题,回答的时候也要条例清晰、层层递进)
    1.你在AI项目中,说下哪个具体的项目的技术困难和项目困难吗?你是怎么解决的?
    2.你刚才说的性能公关问题,那么你有没有想过办法避免出现类似问题或者快速定位?
    3.AI有没有具体的应用场景?(要讲的非常细,真实把产品的业务逻辑和外部人员理解的人工智能应用结合讲清楚)
    4.你们的自动化是什么框架?如何保证自动化是充分的(测试自动化能够保证业务不漏测)?有哪些技术研究和探索?
    5.你从搞安全到去AI团队,心路历程是什么样?技术上是怎么做到快速适应。
    6.你工作中是怎么管理团队的?
    7.你的职业规划是什么?更想做技术领域还是管理领域?
    8.你想来互联网公司,有提前做过了解吗?和传统的IT产品有什么区别?
    9.你为什么不华为内部找新加坡岗位而选择过来找工作?如果工作后,工作压力和节奏还是挺大,那么你怎么平衡你的孩子和工作?

    3面(问题更拔高和抽象)
    1.你的晋升分别在哪几年?
    2.你在测试领域有什么贡献?
    3.你在安全测试领域中有哪些贡献?
    4.你们安全测试哪些方面?都是怎么测试的?用到什么工具?
    5.关于神经网络,有什么场景?监督学习和深度学习的区别是什么?哪些是分类网络?
    6.你的代码量有多少?
    7.在AI团队,你们是怎么测试的?怎么测试算子?
    8.你自己想学习/提升的哪个领域的技术?
    9.测试领域和AI有什么可以做结合?

    面试总结

    0.1面考技术和业务真实能力,2面考拔高思考、全局观;3面更拔高和抽象 这2家面试官非常专业,会根据你的项目去发问,确认你的真实业务能力和思维能力;同时也考编程算法、设计能力。2面会拔高高度和广度,比如测试领域的一些思考、团队的管理、测试效率提升、各种框架的涉及。3面会更加抽象和拔高,测试你的上限。
    1.复习所有的项目业务、用到的测试方法/工具、软件开发流程、定位问题手段等等,一定要扣的非常细(最好的检验法:你复习过后给其他人讲,把别人能讲懂 才是真的懂)。
    2. 掌握工作中的技术和框架,熟悉自己领域的常用的框架和技术;业务做好的基础上拔高和扩宽视野,比如数据库和redis、linux操作系统常用命令、微服务概念、Docker容器和虚拟机、web框架、MVC、 Nginx、zookeeper、消息队列Kafka和flume等等。
    3. 准备自我介绍、自己有贡献、有深度参与、能提现自己能力的项目经历,一定要真实,因为面试官会问一些更深入的思考的东西。
    4. 对测试领域要有拔高的思考,比如测试效率提升、保证测试覆盖率、测试有效性的考虑、技术探索,甚至团队管理方式等等。
    5. 复习经典算法并刷LeetCode算法题,测试开发先刷难度较低的,比如 裴波那切序列(爬楼梯问题)、十大经典排序(快速排序、冒泡排序)、二分法、算法常用思想(穷举法、贪婪法、动态规划)及对应的实际应用,比如滑动窗口(找最大子串值等问题)、兑换零钱、八皇后、背包问题等等。
    6. 复习下常用概念,防止被问到时无法精准表达(工厂模式/单例模式、多线程/进程、面向对象和面向过程、并行/串行、并发、同步异步、常用的数据结构、二叉树、链表、xml/json解析、网络协议Restful、soap、http等)
    11. 精准准备,可以根据招聘要求,做招聘要求上的补充学习
    12. 模拟面试,找朋友做模拟面试,再复盘准备回答。
    13. 临场时语言表达要准确、条理要清晰,态度要真诚、自信。如果遇到需要思考的问题,可以思考后分步骤回答,适当让面试官等待一会,不要急着说。面试过程甚至可以引导面试官往你熟悉的领域去问。如果真的遇到没做过的技术,可以说之前没有做过。

    更多相关内容
  • 测试开发面试经验总结
  • 软件测试+python测试开发面试题,测试开发面试题。
  • 测试开发面试

    2018-04-13 08:25:34
    测试开发的部分题目,暂时只能上传这么大,后续继续。
  • 自己总结的适用于软件测试、测试开发的八股文知识点及常见的高频面试题目和参考答案。包含了操作系统、计算机网络基础、Linux、测试相关、编程语言相关、数据库这六个板块,非常全面,应付面试妥妥的。 是word版本,...
  • 测试开发面试题汇总

    2017-11-12 15:47:02
    百度、网易、滴滴、美团、58等互联网公司,测试开发面试题汇总,包括数据结构算法、网络、数据库等基础知识,还有测试业务相关问题,Java语言相关问题,测试工具以及其他问题。题目来自牛客网。
  • 测试开发面试题51-62.pdf
  • 测试开发面试题63-76.pdf
  • 2021年测试开发面试题大全及答案 这一份全面详细的面试资料共【289】页文档包含:测试基础|接口测试|性能测试|自动化测试|软件测试工具|测试实战题|计算机及Linux面试等等

    前言

    在我认为,对于测试面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+视频+总结,前几者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。

    博主总结了一系列面试中常问的面试技术点,深入解析以及答案,将为最近准备面试的工程师们保驾护航

    何谓面试? 博主所理解的面试,它是一个过程,是不断沉淀、不断总结、善于传达自己的专业领域技术以及解决问题能力的过程。以下是我总结的一些面试题,文中如有错误,恳请各位大佬指出!

    2021年测试开发面试题大全及答案 这一份全面详细的面试资料共【289】页文档包含:测试基础|接口测试|性能测试|自动化测试|软件测试工具|测试实战题|计算机及Linux面试等等

    篇幅限制,仅展示了目录,需要面试题文档完整版的,【点击此处】通过后自行下载《2021年测试开发面试题大全及答案【289】页》

    本文共 4800 字,预计阅读时间 15 分钟,一次性没时间看完的话,强烈建议收藏起来!

    目录

    测试基础面试题

    • Bug必填字段
    • 简述一下BUG的生命周期?
    • 你认为做好测试用例工作的关键是什么?
    • 一套完整的测试应该由哪些阶段组成?
    • 软件验收测试包括?
    • 系统测试的策略有?
    • 编写测试报告
    • 描述软件测试活动的生命周期?
    • 简述软件测试中的“80-20原则”。
    • 一个缺陷测试报告的组成
    • 什么是压力测试?压力测试需要考虑哪些因素?
    • 软件测试的目的是什么?
    • 黑盒测试用例设计常用方法
    • 单元测试、集成测试、系统测试、验收测试、回归测试这几步最重要的是哪一步?
    • 请说一下手动测试与自动化测试的优缺点
    • 怎么实施自动化测试
    • 什么是压力测试?压力测试需要考虑哪些因素?
    • 谈谈你对 CI/CD 的理解
    • 你觉得软件测试工程师在一个团队中,都需要做什么?有什么价值?

    性能测试面试相关

    • 性能测试的应用领域有哪些?
    • 性能测试包含了哪些软件测试(至少举出3种)?
    • 交付一个性能测试项目,请阐述你的性能测试流程
    • 如何理解压力测试,负载测试以及性能测试?
    • jmeter如何设计性能测试场景?
    • 介绍 JMeter 聚合报告包括哪些内容?
    • 解释5个常用的性能指标的名称与具体含义。
    • 你在性能测试中遇到哪些性能问题?
    • 举例说明jmeter的定时器用法?
    • 什么是性能测试?
    • 什么是上下文切换?哪些场景会存在上下文切换?
    • 如何用命令行生成测试报告?jtl文件怎么分析?
    • 性能测试中Linux命令
    • 什么时候可以开始执行性能测试?
    • 简述性能测试的步骤。
    • 性能测试时,是不是必须进行参数化?为什么要创建参数?
    • 描述不同的角色(用户、产品开发人员、系统管理员)各自关注的软件性能要点

    接口测试面试相关

    • 按你的理解,软件接口是什么?
    • HTTPS在哪一层?
    • get和post区别是什么?
    • 常见的POST提交数据方式
    • cookie和session的区别
    • 请问你们公司是如何做接口测试的?
    • 怎么设计接口测试用例?
    • 你做接口测试,测什么?
    • 没有接口文档,如果做接口测试?
    • 依赖于第三方数据的接口如何进行测试?
    • 接口测试中,依赖登录状态的接口如何测试?
    • 当一个接口出现异常时候,你是如何分析异常的?
    • 接口测试执行中比对数据库吗?
    • 响应状态码有哪些?
    • json数据是什么,你平时如何解析json数据?
    • postman你在工作中使用流程是什么样的?

    自动化测试面试相关

    • 你会封装自动化测试框架吗?
    • 你觉得自动化测试最大的缺陷是什么?
    • 什么是兼容性测试?兼容性测试侧重哪些方面?
    • 我现在有个程序,发现在 Windows 上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
    • 自动化代码中,用到了哪些设计模式?
    • 测试的策略有哪些?
    • 描述测试用例设计的完整过程?
    • 上一个项目中自动化测试的执行策略?
    • 在上一家公司做自动化测试用的什么框架?
    • 怎么对含有验证码的功能进行自动化测试?
    • 如何优化和提高 Selenium 脚本的执行速度?
    • 遇到alert弹出窗如何处理?
    • 元素定位方法你熟悉的有哪些?
    • Seleinum是否有读取excel文件的库
    • 举例一下你遇到过那些异常,在selenium自动化测试过程中
    • 你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?
    • 在执行脚本过程,如何实现当前元素高亮显示?
    • 你知道哪些测试自动化的脚本技术?

    软件测试工具

    • 接口测试:postman
    • 性能测试:jmeter、LoadRunner
    • 抓包工具:chales、fiddler
    • UI自动化:uiautomator2、appium、atx
    • 稳定性测试:monkey、maxim、uicrawler、appcrawler
    • 兼容性测试:wetest、testin
    • app自动化工具:appium、Monkey
    • web安全测试工具:appscan、Watcher、Wapiti
    • 白盒测试工具:JUnit、jtest
    • 持续集成工具:jenkins、Hudson

    软件测试实战

    • 网页崩溃的原因是什么?
    • 有个用户反馈上传头像失败,分析原因?
    • app闪退的原因?
    • 登录的按钮不能点击,如何排查问题?
    • 10%的用户反馈用不了功能,你讲如何排查?
    • 如何分析一个bug是前端还是后端的?
    • 如何回答登录功能怎么进行测试?
    • 京东购物车功能怎么进行测试?
    • 支付流程测试

    HR常问面试题

    1.为什么想进本公司,了解业务吗?
    2. 怎样看待加班问题?
    3. 为什么从上家公司离职?
    4.为什么选择测试这一行?
    5.还有什么想要问我的吗?
    6.测试看重什么能力
    7.之前实习收获了什么
    8.项目中收获了什么?
    9.你的期望薪资是多少?
    10.谈谈你对跳槽的看法?
    11.你最擅长的技术方向是什么?

    计算机及Linux面试相关

    Python编程+数据结构

    MySQL数据库面试题

    一点心得

    这个题库的价值不只是用来刷题,他的价值在于问题本身,问题本身比答案更重要。
    通过问题来验证自己的知识技能,核对自己对知识的掌握程度,这完全可以当做一种学习方法来执行。当我们遇到的问题越多,理解和解决的问题越多,相对的我们的能力就会越强。

    以上一些观点有些属于本人自嗨,现在回归初心,收集题库并创建题库站的最终目的是希望帮一些人提升一点效率,节约一点时间,利用碎片时间,上下班地铁上刷个题,如果还能帮你提升技能,提升搞定面试的几率,那就最好不过了。

    我正在打造一个纯技术交流群:前面107中间963最后6098,面向开始学习软件测试或是技能进阶的朋友,以学习、交流、思考、提升能力为目标,因为一个人学不如大家一起学,有了更多的交流才会进步的更快。

    在这个群里不用担心自己的能力不足,不用担心问题是否太小白而不敢说,大胆的说出问题, 让更多的人一起来分析,说错了也没关系。

    最后

    为你奉上我花费两个月时间整理的大厂面试秘籍!一定有你需要的!这些面试题都是非常容易被面试官问到的,建议保存,面试之前反复观看,同时也节省你网上搜索资料的时间来学习。最后祝愿所有的面试者都能够找到自己满意的工作。

    ☀️ 【点击图片即可分享软件测试面试资料】

    展开全文
  • 金山办公测试开发面试总结

    千次阅读 2020-10-17 19:02:03
    金山办公测试开发面试总结

    一、背景介绍

    在这里插入图片描述

      在前一篇博客中写了面试唯品会的总结,我在面试唯品会之前还面了一下位于珠海的金山办公的测试开发,虽然最后二面就凉了。本来是在BOSS直聘上看到的金山办公的自动化测试岗位,然后投了,后面HR打电话来,说在珠海有个测试开发的岗位,问考虑不? 我觉得自己的实力还到不了测试开发的水平,但是还是尝试了一下,所以也就有了下面的面试。

    二、一面

    一面是电话技术面,最后大约聊了40分钟左右,聊的还算可以,主要就是问简历中UI自动化框架相关的东西

    • 你觉得最优技术含量的一个项目,并详细介绍

      这一块算是聊的比较久的,主要就是讲了UI自动化测试框架(Java+Selenium+TestNG+Jenkins )及接口自动化测试框架。说的实话大致就是按照我写博客中UI自动化相关内容来写的。测试工程师学习之路-博客目录

    • 线程与进程的区别,以及他们的优势与缺陷

      参考:进程与线程
      进程优点:每一个进程相互独立,不影响主程序的稳定性,子进程崩溃不影响其他进程。
      进程缺点:逻辑控制复杂,需要与主程序交互,多进程调度开销大。
      线程优点:程序逻辑和控制方式简单 所有线程可以直接共享内存和变量等。
      线程缺点:每个线程与主程序之间共用地址空间,最大内存地址受限。
      总结:根据业务逻辑来使用多进程和多线程。但是比较常见的是:将处理相同任务的列为一个进程下的线程,采用多进程结合多线程的方式来开发。

    • 设计模式

      由于在讲到框架的时候,也就说道设计模式。主要也就说了单例模式、工厂模式这种简单的设计模式

    • 和开发协作中了解到的技术

      SpringBoot、Rancher、Apollo、RabbitMQ(多进程通信)

    • 缓存雪崩

      参考:
      Redis缓存穿透:用户请求不存在的key,缓存中不存在,请求会绕过缓存直接查询数据库导致性能下降。如果用户恶意多次请求多次查询数据库将会导致后台崩溃。
      Redis缓存雪崩:缓存失效期间请求将会去查询数据库,从而对数据库CPU和内存造成巨大压力,严重将造成整个系统的崩溃。

    • HTTP请求方式

      参考链接:软件测试之TCP、HTTP协议必知必会,面试必备!

    • 数据库索引的结构

    三、二面

    二面是技术视频面,通过微信进行的视频面,但是 “只有他能看到我,我看不到他,这感觉就很奇妙”。然后问的内容偏开发,然后自己又比较菜,就聊了20分钟左右,最后也就凉凉

    • Redis的数据类型

      参考:Redis五种数据类型

    • 简述一下Maven

      关于这一块一说就比较多了,建议百度

    • Java的集合,更新用ArrayList好还是用LinkedList好?
    • 数据库索引,在那些字段上加上索引好?
    • 使用Java的时候常用的工具类
    • Docker及DockerFile

    展开全文
  • 测试开发面试题.rar

    2021-05-11 21:46:44
    测试开发面试测试开发面试测试开发面试
  • 测试开发面试题--2

    2018-04-13 08:28:25
    测试开发的部分面试题目,部分公司的题目,包括部分测试工具原理。
  • 测试开发面试题汇总(自用)

    千次阅读 多人点赞 2021-01-12 13:21:03
    线程和进程区别 进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。 每个进程都有独立的代码和数据空间,程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码...

    cookie和session

    添加链接描述
    二者都是web端的会话跟踪技术,Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

    • Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头;有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。

    • Cookie中通过getMaxAge()方法与setMaxAge(int maxAge)方法来读写maxAge属性。 无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效;
      在这里插入图片描述

    • Session技术则是服务端的解决方案,它是通过服务器来保持状态的。服务器会为Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;

    • 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

    • 由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。
      在这里插入图片描述

    请简述TCP和UDP的区别

    TCP和UDP都是OSI模型中运输层中的协议,
    TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。
    UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。

    • TCP 是面向连接的,UDP 是面向无连接的
    • UDP程序结构较简单
    • TCP 是面向字节流的,UDP 是基于数据报的
    • TCP 保证数据正确性,UDP 可能丢包
    • TCP 保证数据顺序,UDP 不保证

    为什么TCP可靠而UDP不可靠

    • 通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。

    • TCP 报文头里面的序号能使 TCP 的数据按序到达

    • 报文头里面的确认序号能保证不丢包,累计确认及超时重传机制

    • TCP 拥有流量控制及拥塞控制的机制

      可以参考这一篇博客

    请简单说一下你了解的端口及对应的服务

    • 21端口:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。
    • 25端口:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。
    • 53端口:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。
    • 80端口:80端口是为HTTP(HyperText Transport Protocol,超文本传输协议)开放的,这是上网冲浪使用最多的协议,主要用于在WWW(World Wide Web,万维网)服务上传输信息的协议。
      在这里插入图片描述

    TCP三次握手

    三次握手指的是:建立一个TCP连接时,需要客户端和服务器总共发送三个包。
    三次握手的目的是:连接服务器的指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小。

    • 第一次握手:建立连接,客户端向服务器发送请求报文段,将SYN置为1,客户端进入SYN_SEND状态,等待服务器确认
    • 第二次握手:服务器接收到客户端的SYN 报文段,对这个SYN报文段进行确认;同时自己发送SYN请求信息,将SYN置为1;服务器将上述所有信息放入报文段(SYN+ACK)一起发送给客户端,此时服务器进入SYN_RECV状态
    • 客户端接收到SYN+ACK报文段,向服务器发送ACK报文段,发送完毕后客户端和服务器都进入ESTABLISHED状态,完成三次握手

    TCP四次挥手

    • 第一次挥手:客户端数据传输完毕需要断开连接,发送报文段并停止再次发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态
    • 第二次挥手:服务器接收到客户端发送的报文段后,进入关闭等待状态,客户端到服务器的连接释放,客户端收到服务器的确认后,进入FIN-WAIT-2状态,等待服务器发出连接释放的报文段
    • 服务器的数据传输完毕后,向客户端发送连接释放报文段,服务器进入最后确认状态,等待客户端的确认
    • 客户端收到服务器的连接释放报文段后,发出确认报文段,进入等待状态,经过等待时间后进入关闭状态,四次握手结束

    从输入网址到显示网页的全过程

    • 输入网址
    • DNS域名解析,将url解析为ip地址
    • 客户端与服务器建立TCP连接
    • 客户端向服务器发送HTTP请求
    • 服务器处理客户端发来的请求
    • 服务器响应请求,返回给浏览器一个响应
    • 浏览器解析响应,展示HTML

    参考

    输入url没有访问到网页的原因

    • DNS域名解析出问题
    • 网络断了
    • 服务器拒绝访问
    • 请求或者响应在网络传输中途被劫走了

    IP地址分为哪几类?简单说一下各个分类

    在这里插入图片描述

    OSI七层模型

    在这里插入图片描述

    TCP/IP四层模型

    在这里插入图片描述

    HTTP 协议包括哪些请求

    • GET:对服务器资源的简单请求
    • POST:发送包含用户提交数据的请求
    • HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
    • PUT:用来传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求的URI指定位置
    • DELETE:与PUT相反,用来删除文件,按照请求删除指定的资源
    • TRACE:让服务器将之前的请求通信环返回给客户端
    • CONNECT:与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信

    HTTP响应状态码

    在这里插入图片描述

    • 200

      从客户端发来的请求在服务器端被正常处理了
    • 204

      服务器接收的请求已被成功处理,但在返回的响应报文中不包含实体的主体成分
    • 206

      客户端向服务器成功请求指定范围的实体内容
    • 301

      请求的资源已经被永久的移动到新的URI,以后新的请求应该使用新的URI代替
    • 302

      资源临时移动,客户端应继续使用原有的URI
    • 303

      请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
    • 302

      客户端发送附带条件的请求时,服务器允许访问资源,但是并没有返回任何实体
    • 400

      客户端请求的语法错误,服务器无法理解
    • 401

      请求需要有通过HTTP认证的认证信息
    • 403

      请求资源的房屋内被服务器拒绝了
    • 404

      服务器上无法找到请求的资源
    • 500

      服务器内部错误,无法完成请求
    • 503

      服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

    线程和进程区别

    • 进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
    • 每个进程都有独立的代码和数据空间,程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,线程之间切换的开销小。
    • 进程之间的资源是独立的,线程共享本进程的资源

    多线程与多进程

    • 多进程:在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,多任务之间不会相互影响
    • 多线程:在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。多线程是异步的,但这不代表多线程真的是几个线程是在同时进行,实际上是系统不断地在各个线程之间来回的切换。
      在这里插入图片描述

    http与https

    • HTTP协议以明文方式发送内容,不提供任何方式的数据加密,HTTP协议不适合传输一些敏感信息
    • HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密
    • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
    • HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
    • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

    https加密原理

    https://zhuanlan.zhihu.com/p/43789231

    计算机网络里面每一层的协议

    添加链接描述
    在这里插入图片描述

    Python的生成器和迭代器区别

    • 以 list 容器为例,在使用该容器迭代一组数据时,必须事先将所有数据存储到容器中,才能开始迭代;而生成器却不同,它可以实现在迭代的同时生成元素。
    • 也就是说,对于可以用某种算法推算得到的多个数据,生成器并不会一次性生成它们,而是什么时候需要,才什么时候生成。

    SQL语言的增删改查

    select distinct

    在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

    DISTINCT 关键词用于返回唯一不同的值。

    SELECT DISTINCT column_name,column_name
    FROM table_name;
    
    where

    在这里插入图片描述

    order by

    对结果进行排序,asc升序,desc降序

    SELECT column_name,column_name
    FROM table_name
    ORDER BY column_name,column_name ASC|DESC;
    
    插入 insert into
    INSERT INTO table_name
    VALUES (value1,value2,value3,...);
    
    INSERT INTO table2
    SELECT * FROM table1;
    
    update更新
    UPDATE table_name
    SET column1=value1,column2=value2,...
    WHERE some_column=some_value;
    
    delete删除
    DELETE FROM table_name
    WHERE some_column=some_value;
    
    limit

    从结果中选前number个

    SELECT column_name(s)
    FROM table_name
    LIMIT number;
    
    like操作符

    按照匹配模型进行筛选

    SELECT * FROM Websites
    WHERE name LIKE 'G%'; | not like
    

    在这里插入图片描述

    in

    IN 操作符允许您在 WHERE 子句中规定多个值。

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...);
    
    as 别名
    SELECT column_name AS alias_name
    FROM table_name;
    
    SELECT w.name, w.url, a.count, a.date
    FROM Websites AS w, access_log AS a
    WHERE a.site_id=w.id and w.name="菜鸟教程";
    
    join连接
    SELECT Websites.id, Websites.name, access_log.count, access_log.date
    FROM Websites
    INNER JOIN access_log
    ON Websites.id=access_log.site_id
    where ;
    

    在这里插入图片描述

    create database

    
    

    在这里插入图片描述

    mysql索引了解吗,用法都是什么,实现原理

    简述一下B+树的实现、特点

    python的GIL全局解释锁

    python解释器的主循环中,同时只有一个线程在运行,即在任意时刻只有一个线程在解释器中运行。对python虚拟机访问的控制由全局解释锁GIL控制,正是这个锁来控制同一时刻只有一个线程能够运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。

    python的深拷贝与浅拷贝

    • 深复制和浅复制最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用。
    • 浅复制仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。
    • 深复制 —-在计算机中开辟了一块新的内存地址用于存放复制的对象。
    • 浅拷贝出来的数据并不独立,如果被复制的对象改变了,那么浅拷贝的对象也会改变,深拷贝之后就会完全独立,与浅拷贝断绝关系。

    python多线程多进程的使用

    • 多线程:python中有两种方式实现线程:实例化一个threading.Thread的对象,并传入一个初始化函数对象(initial function )作为线程执行的入口;继承threading.Thread,并重写run函数; 在主线程中创建若线程之后,他们之间没有任何协作和同步,除主线程之外每个线程都是从run开始被执行,直到执行完毕。可以通过将创建的线程指定为守护线程(daemon),这样主线程执行完毕之后会立即结束未执行完的线程,然后结束程序。
    • 多进程:创建进程的方式和创建线程的方式类似:实例化一个multiprocessing.Process的对象,并传入一个初始化函数对象(initial function )作为新建进程执行入口;继承multiprocessing.Process,并重写run函数;对于python线程,双线程并行执行耗时比单线程要高的多。

    python程序如何处理内存释放,内存泄漏内存管理

    Python的内存管理机制可以从三个方面来讲

    • 垃圾回收

      • 当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉。它会去检查那些引用计数为0的对象,然后清除其在内存的空间。
    • 引用计数
      在这里插入图片描述

    • 内存池机制

      • python的内存池有四层
      • 第0层是C中的malloc,free等内存分配和释放函数进行操作;
      • 第1层和第2层是内存池,有Python的接口函数PyMem_Malloc函数实现,当对象小于256K时有该层直接分配内存;
      • 第3层是最上层,也就是我们对Python对象的直接操作;
        在这里插入图片描述
        关于释放内存方面,当一个对象的引用计数变为 0 时,python就会调用它的析构函数。调用析构函数并不意味着最终一定会调用free 释放内存空间,如果真是这样的话,那频繁地申请、释放内存空间会使 Python的执行效率大打折扣。因此在析构时也采用了内存池机制,从内存池申请到的内存会被归还到内存池中,以避免频繁地 释放 动作。

    什么情况下会导致内存泄漏

    • 资源释放问题
      程序代码的问题,长期保持某些资源,如Context,Cursor,IO流的引用,资源得不到释放造成内存泄漏.
    • 对象内存过大
      保存了多个耗用内存过大的对象,如 Bitmap,XML文件,造成内存超出限制。
    • static关键字的使用问题static是java中的一个关键字,当用它修饰成员变量时,那么该变量就属于该类,而不是该类的实例。所以用static修饰的变量,它的生命周期是很长的,如果他用来引用一下资源耗费过多的实例(Context的情况最多),这时就要谨慎对待。
    • 线程导致内存溢出
      线程产生内存泄漏的主要原因是在于线程的生命周期不可控。

    python的list基本操作有哪些

    • 增加 list.append(num)
    • 删除 list.pop()/list.remove(obj)
    • 修改 list[] = new
    • 排序 list.sort()
    • 插入 list.insert(index,obj)
    • 获取某个值的索引 list.index(obj)
    • 统计某个值出现的次数 list.count(x)
    list和tuple的区别
    • list是[],tuple是()
    • tuples在操作时相比list更快,当数据足够大的时候tuples的数据操作性能更优
    • tuples内的元素一旦建立就无法更改、删除、排序,但是可以增加
    • Tuples 通常存储的是一连串的不同种类的事务;List 通常存储的是一连串的相同种类的事务
    range和xrange的区别
    • range()是Python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列
    • xrange用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器
    • xrange函数在Python3中已经取消,在python3中,range()这种实现被移除了,保留了xrange()的实现,且将xrange()重新命名成range()。
    • 要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要预先开辟一块很大的内存空间
    python中的*args与**kargs

    在函数定义时使用,可以进行不定数量的传参

    def demo(*args):
        for x in args:
            print(x,)
    
    demo(1,2,3,4,5)
    
    def demo(**kargs):
        for x,v in kargs.items():
            print(x,v)
    
    demo(name='123',name2='345')
    
    面向对象中的__init__
    • __init__是初始化方法,创建类的实例对象后,就立刻被默认调用了,可接收参数
    • init() 方法可以包含多个参数,但必须包含一个名为 self 的参数,且必须作为第一个参数
    • 仅包含 self 参数的 init() 构造方法,又称为类的默认构造方法
    面向对象中的self
    • 无论是构造方法还是实例方法,最少要包含一个参数,并没有规定该参数的具体名称,可以是self也可以是其他
    • 同一个类可以产生多个对象,当某个对象调用类方法时,该对象会把自身的引用作为第一个参数自动传给该方法,Python 会自动绑定类方法的第一个参数指向调用该方法的对象。在调用实例方法和构造方法时,不需要手动为第一个参数传值
    python排序

    列表排序:
    sort与sorted的区别
    lis.sort()会改变原列表,sorted(lis)不会改变原列表
    字典排序:

    dic = {'c':2,'b':1,'a':3}
    newdic = {k:v for k,v in sorted(dic.items(),key=lambda x:x[0])}
    print(newdic)
    

    linux系统常用的命令

    文件和目录

    1. cd … 返回上一级目录
    2. cd …/… 返回上两级目录
    3. cd /home 进入home目录
    4. cd 进入个人主目录
    5. cd - 返回上次所在目录
    6. pwd 显示当前工作路径
    7. ls 查看目录中的文件
    8. ls -a 查看目录中包括隐藏文件
    9. mkdir dir1 创建一个叫dir1的文件夹
    10. rm -f file1 删除file1文件
    11. rmdir dir1 删除dir1目录
    12. rm -rf dir1 删除dir1目录并删除内容
    13. mv 文件1 文件2 将文件1改名文件2
    14. mv 文件 目录 将文件移动到目录
    15. cp -r test/ newtest 将test/文件夹下的所有文件复制到newtest
    16. ln -s log.txt link2021 为log.txt创建软连接
    17. ln log.txt link2021 创建硬链接
    18. touch a.txt 修改时间戳
    linux安装与解压操作

    参考

    • 使用rpm命令安装扩展名为".rpm"的软件包
      在这里插入图片描述
    • yum安装 格式:yum install 软件名 [-y]
    • 对于安装有依赖包的软件,用yum命令特别方便,如果用rpm命令,就必须要先装依赖包再装软件包,而yum命令会直接匹配依赖包然后直接安装
    • 编译安装源码包
      • 1.解压 — tar tar zxvf tar包
      • 2.配置 — ./configure :针对当前系统、软件环境,配置好安装参数
      • 3.编译 — make: 将源代码文件变为二进制的可执行程序,用make命令
      • 4.安装 — make install

    linux命令:top、free、netstat、ps grep、nslookup

    top持续监听进程运行状态

    top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:

    • 第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;
    • 第二部分从第六行开始,显示的是系统中进程的信息;

    free显示内存状态

    netstat显示网络状态

    • ps命令将某个进程显示出来
    • grep命令是查找,使用正则表达式搜索文本,并把匹配的行打印出来

    nslookup

    • 查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题

    linux目录权限

    参考博客

    查看权限:

    ls -l xxx.xxx 注:xxx.xxx是文件名,或者不写文件名则是当前目录下所有文件
    

    修改某个目录下的所有文件的权限,包括子目录中的文件,例子如下:

    chmod 777 /home/user
    注:仅把/home/user目录的权限设置为rwxrwxrwx
    chmod -R 777 /home/user 
    注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx`
    其中,参数`-R`表示启动递归处理
    

    chmod 用3个数字来表达对 用户(文件或目录的所有者),用户组(同组用户),其他用户 的权限:
    数字7是表达同时具有读,写,执行权限:
    读取–用数字4表示;
    写入–用数字2表示;
    执行–用数字1表示;
    按照规则,如你想设置/test目录的权限为:
        对用户可读可写:4(读取)+ 2(写入)= 6 ;
        对用户组可读可执行:4(读取)+ 1(执行)= 5 ;
        对其他用户仅可读:4(读取);

    vim中查找数据

    参考博客

    • 使用vim编辑文件:vim xxx
    • (命令模式)冒号+指令
      在这里插入图片描述

    linux连接数据库

    • 连接本地的mysql:mysql -uroot -p
    • 远程:mysql -h localhost -uroot -p
      在这里插入图片描述

    死锁的概念及条件

    多个线程因争夺资源而造成的僵局
    (1)互斥条件:指线程对所分配的资源进行排他性使用,即在一段时间内某资源只由一个线程占用。
    (2)请求和保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    (3)不可剥夺条件:进程已获得的资源,在未使用之前,不能强行剥夺。
    (4)循环等待条件:指在发生死锁时,必然存在一个进程资源循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求

    全局变量和局部变量的区别

    1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
    2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区
    3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
    4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量

    输入http://www.baidu.com以后的过程

    在这里插入图片描述


    测试用例的编写

    参考博客

    等价类分析

    将测试的范围划分成几个互不相交的子集,他们的并集是全集,从每个子集选出若干个有代表性的值作为测试用例。

    • 等价类是具有相同属性或者方法的事务集合,这个集合中某个个体所表现的特征与其他个体完全一致
      在这里插入图片描述
      在这里插入图片描述

    边界值划分

    • 规定了取值范围,利用该范围的边界以及边界附近的数据进行测试
    • 规定了取值的个数,选取少于个数一个或多于个数一个的值进行测试
    • 需求规定了一个有序集合,使用集合的第一个和最后一个
    • 程序中使用了一个内部数据结构,从数据结构的边界进行考虑,如int的长度范围
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    判定表法

    • 判定表是把作为条件的输入的各种组合值以及对应输出值都罗列出来而形成的表格。
      判定表通常由以下4部分组成:
        条件桩——列出问题的所有条件
        条件项——针对条件桩给出的条件列出所有可能取值
        动作桩——列出问题规定的可能采取的操作
        动作项——指出在条件项的各组取值情况下应采取的动作
      在这里插入图片描述

    因果图

    添加链接描述

    • 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
    • 等价类划分法和边界值分析法都是着重考虑输入条件,但没有考虑输入条件的各种组合,输入条件之间的相互制约关系,这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
    • 如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合,相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。
    • 利用因果图导出测试用例需要经过一下几个步骤:
      1.找出所有的原因,原因即输入条件或输入条件的等价类。
      2.找出所有的结果,结果即输出条件。
      3.明确所有输入条件之间的制约关系以及组合关系。
      哪些条件不能组合到一起,哪些条件可以组合到一起
      4.明确所有输出条件之间的制约关系以及组合关系。
      哪些输出结果不能同时输出,哪些输出结果可以同时输出
      5.找出什么样的输入条件组合会产生哪种输出结果。
      6.把因果图转换成判定表/决策表。
      7.为判定表/决策表中的每一列表示的情况设计测试用例。

    测试计划包含哪些内容

    参考模板

    • 测试目标
    • 测试概要
    • 测试范围
      测试计划所包含的测试软件需测试的范围和优先级,哪些需要重点测试、哪些无需测试或无法测试或推迟测试。
    • 重点事项
      列出需要测试的软件的所有的主要功能和测试重点,这部分应该能和测试案例设计相对应和互相检查。
    • 质量目标
      制定测试软件的产品质量目标和软件测试目标
    • 资源需求
      进行测试所需要的软硬件、测试工具、必要的技术资源、培训、文档等。
    • 人员组织
    • 测试策略
      制定测试整体策略、所使用的测试技术和方法
    • 发布提交
      在按照测试计划进行测试发布后需要交付的软件产品、测试案例、测试数据及相关文档
    • 测试进度和任务人员安排
    • 测试开始/完成/延迟/继续的标准
    • 风险分析

    测试报告含有那些东西

    • 测试结论(测试是否通过/是否满足发布要求/是否能够发布)
    • 罗列发现的主要问题(或者说该版本存在的主要风险)
    • 测试版本(客户端,服务器)(如果允许发布,附件发布包或其链接,包大小,以及md5校验码)
    • 测试内容(测试范围)
    • 测试用例执行情况(一共多少,执行了多少,未执行多少,通过多少,失败多少)
    • 发现的严重缺陷有哪些(仅仅罗列最严重级别的bug)
    • 邮件的附件是测试计划执行结果文件

    测试用例中包括什么

    在这里插入图片描述
    图片来源

    测试的流程

    • 需求:阅读需求,理解需求,与客户、开发、架构多方交流,深入了解需求。
    • 测试计划: 根据需求估算测试所需资源(人力、设备等)、所需时间、功能点划分、如何合理分配安排资源等。
    • 用例设计:根据测试计划、任务分配、功能点划分,设计合理的测试用例。
    • 执行测试:根据测试用例的详细步骤,执行测试用例。–every tester(主要是初级测试人员)
    • 执行结果记录和bug记录:对每个case记录测试的结果,有bug的在测试管理工具中编写bug记录
    • defect tracking:追踪leader分配给你追踪的bug.直到 bug fixed。–every tester
    • 测试报告:通过不断测试、追踪,直到被测软件达到测试需求要求,并没有重大bug.
    • 用户体验、软件发布等。

    从哪些方面设计测试用例

    功能性、兼容性、易用性、可靠性、性能、安全

    给你一个水杯你会怎么测试

    • 功能测试:主要关注水杯基本功能
      • 1.1 水杯是否可以正常装水
      • 1.2 水杯是否可以正常喝水
      • 1.3 水杯是否有盖子,盖子是否可以正常盖住
      • 1.4 水杯是否有保温功能,保温功能是否正常保温
      • 1.5 水杯是否会漏水,盖住盖子拧紧后是否会漏水
    • 界面测试:主要关注水杯外观、颜色、设计等方面
      • 2.1 外观是否完整
      • 2.2 外观是否舒适
      • 2.3 颜色搭配及使用是否让人感到舒适
      • 2.2 杯子外观大小是否适中
      • 2.3 杯子是否有图案,图案是否易磨损
    • 易用性测试:主要关注水杯使用是否方便
      • 3.1 水杯喝水时否方便
      • 3.2 水杯拿起放下是否方便,这里会衍生到水杯形状的测试
      • 3.3 水杯装水是否方便
      • 3.4 水杯携带是否方方便
      • 3.5 水杯是否有防滑功能
      • 3.6 水杯装有低温或者高温水时,是否会让手感到不适
    • 性能测试:
      • 4.1 水杯装满水时,是否会露出来
      • 4.2 水杯最大使用次数
      • 4.3 水杯的保温性是否达到要求
      • 4.4 水杯的耐寒性是否达到要求
      • 4.5 水杯的耐热性是否达到要求
      • 4.6 水杯掉落时时,是否可以正常使用
      • 4.7 水杯长时间放置时,是否会发生泄露
    • 兼容性测试:主要关注水杯是否可以装其他液体,如果汁、汽油、酒精等可
    • 移植性测试:主要关注水杯放置环境等
      • 6.1 将水杯放在常温环境中,使用是否正常
      • 6.2 将水杯放在零下的环境中,使用是否正常
      • 6.3 将水杯放在高于正常温度的环境中,使用是否正常
    • 安全性测试:主要关注水杯外观和各种异常条件下是否释放有毒物质等
      • 7.1 当水杯装满热水时,水杯是否会烫手
      • 7.2 当水杯装上水后,是否会产生有毒物质
      • 7.3 把水杯放在零下环境时,是否会产生有毒物质
      • 7.4 把水杯放在高温环境时,是否会产生有毒物质

    介绍diff测试

    • 接口Diff测试,简单来说就是比对相同接口在不同版本/不同环境下面的返回内容是否符合预期

    黑盒测试白盒测试灰盒测试

    • 黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的。
    • 最常见的黑盒测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。
    • 白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。
    • 白盒可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底
    • 灰盒测试:白盒测试和黑盒测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法,在黑盒测试中交叉使用白盒测试的方法。灰盒测试就是这类界于白盒测试和黑盒测试之间的测试。

    静态测试和动态测试

    • 静态测试
      就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。
    • 动态测试
      实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程

    常见的bug类型划分

    • 代码错误
    • 设计缺陷
      功能没有实现,或者功能和需求不一致
    • 界面优化
    • 性能问题
    • 配置相关
    • 安装部署
    • 其他划分: 功能类,界面类,性能类,易用性类,兼容性类,其他

    bug的等级

    • 致命错误
    • 严重错误
    • 一般错误

    bug的生命周期

    发现BUG–>提交BUG–>指派BUG–>研发确认BUG–>研发去修复BUG–>回归验证BUG–>是否通过验证–>关闭BUG



    数据结构-二分查找

    def sort(arr,num):
        i,j = 0,len(arr)-1
        while i<=j:
            mid = (i+j) // 2
            if arr[mid]<num:
                i = mid+1
            elif arr[mid]>num:
                j = mid-1
            else:
                return True
        return False
    

    注意判断条件:while i<=j

    选择排序

    def sort(arr):
        for k in range(len(arr)-1):
            for i in range(k+1,len(arr)):
                if arr[i] < arr[k]:
                    arr[i],arr[k] = arr[k],arr[i]
        return arr
    

    冒泡排序

    def sort(arr):
        for i in range(len(arr)-1):
            flag = True
            for j in range(len(arr)-i-1):
                if arr[j]>arr[j+1]:
                    arr[j],arr[j+1] = arr[j+1],arr[j]
                    flag = False
            if flag:
                break
        return arr
    

    插入排序

    def sort(arr):
        for i in range(1,len(arr)):
            tmp = arr[i]
            j = i-1
            while j>=0:
                if arr[j]>tmp:
                    arr[j+1] = arr[j]
                else:
                    break
                j -= 1
            arr[j+1] = tmp
        return arr
    

    快速排序

    def sort(arr,a,b):
        if a<b:
            i,j = a,b
            tmp = arr[i]
            while i!=j:
                while arr[j]>=tmp and i!=j:
                    j -= 1
                arr[i] = arr[j]
                while arr[i]<=tmp and i!=j:
                    i += 1
                arr[j] = arr[i]
            arr[i] = tmp
            sort(arr,a,i-1)
            sort(arr,i+1,b)
    

    参考

    https://www.zhihu.com/people/song-ni-yike-zi-dan-qiu
    https://blog.csdn.net/jiangjiang_jian/article/details/79140742
    https://blog.csdn.net/a88055517/article/details/6736284
    https://zhuanlan.zhihu.com/p/166494237
    http://blog.sina.com.cn/s/blog_89b433ac0102whn7.html
    https://blog.csdn.net/zhzhl202/article/details/7547445

    展开全文
  • 【面试总结】测试开发面试题目

    千次阅读 2020-04-30 23:25:49
    从三月初开始找工作到现在,先后面试了阿里巴巴、支付宝、字节跳动、网易、快手的测试开发岗。 大公司对于测试发开的要求相比来说高很多,要求掌握的知识点的广度和深度层次也比较高,遂整理了这两个月的面试题目...
  • 测试开发面试题汇总20200422

    千次阅读 2020-04-22 16:23:47
    1、框架选型,为什么选robotframework+appium(面试官觉得这两个框架太笨重了,) 2、robotframework 是怎么实现关键字驱动的,原理 3、appium 是如何支持多语言的,它运行的原理 4、编码 给一个随机函数random,该...
  • 美团测试开发面试

    千次阅读 2019-10-11 21:40:03
    面试整个过程一个半小时左右,期间问到有关操作系统、计算机网络、数据库、设计模式、测试概念、项目中的问题等,下面凭记忆把问题罗列一下,方便以后回顾。 1、CPU的调度算法及进程的各种状态 2、进程间怎么互相...
  • 字节跳动-飞书视频-测试开发面试

    千次阅读 2021-12-22 09:06:39
    字节跳动-飞书视频-测试开发面试
  • 字节测试开发面试题总结

    千次阅读 多人点赞 2020-07-09 20:15:16
    字节测开面试题总结数据结构MySQL相关Linux命令多线程网络原理测试算法 数据结构 HashMap和HashTable的区别 ①、HashMap 是线程不安全的,HashTable 是线程安全的; ②、由于线程安全,所以 HashTable 的效率比不上 ...
  • 面试问的问题大多还是根据简历写的去问的,我的简历上技术栈是JAVA,所以面试的时候问JAVA相关的比较多。而且之前是有过实习经验,实习了五个月,所以面试公司1和公司2的时候还是问的之前公司实习项目偏多。公司1、...
  • 2018网易测试开发面试总结

    千次阅读 2018-09-05 10:16:35
    由于网易互联网的面试统一安排在杭州,本人双非渣渣硕一枚,面试前已经做好了“当绿叶”的准备,去杭州面试只是打算增加点面试经验。经过十天左右焦急耐心的等待9月3号网易笑招组以邮件和短信形式通知喜讯。由于各位...
  • 百度测试开发面试题整理

    千次阅读 2019-12-11 14:52:32
    2、说一下你们工作中的测试流程 3、数据库熟吗?用过哪些数据库?索引会吗?事务了解吗?写一个 SQL 查询语句:给一个字段,对其进行从大到小排序,取前十行。 我平时的工作中会协助提高数据库的查询效率,会给...
  • 测试开发面试经验

    千次阅读 多人点赞 2018-05-15 17:11:40
    今日头条测试开发工程师一面、二面:一、hashmap与hashtable与hashset的区别HashSet HashTable HashMap的区别 及其Java集合介绍:http://www.cnblogs.com/ywl925/p/3865269.html 二、hashmap基本原理数据结构采用...
  • 字节游戏测试开发面试

    千次阅读 2020-07-22 20:00:28
    今天下午两点参加了字节跳动游戏测试开发面试面试官小哥哥人很好,很有耐心。上来先让我做了个自我介绍,然后就是项目相关的。因为我的项目是基于MVC模式开发的,所以面试官先问了对MVC模式的理解还有项目中是...
  • 武汉青藤云安全测试开发面试三轮

    千次阅读 2020-11-28 11:05:20
    2.针对面试题提问 如何判断输入天数是一年中的第几个月的第几天? 讲一下你的思路?以及如何实现? 3. 测试用例的设计思路? 4. 是否了解自动化测试工具? 5. 平时是怎么来学习的,有主动学习一些新的知识吗? 二面 ...
  • 腾讯测试开发面试总结

    万次阅读 2018-08-04 20:13:33
    昨天接到了秋招以来的第一场面试面试了腾讯的测试开发岗,自己感觉不是特别好,写此片博客只为总结下此次面试。 以前自己总觉得自己还不错,秋招应该可以找到一份工作,但此次面试对我犹如当头一棒!人不可骄傲,...
  • 快手测试开发面试题集

    千次阅读 2019-04-13 23:18:16
    https://blog.csdn.net/u011010851/article/details/80761517 https://www.nowcoder.com/discuss/101945?type=2
  • Python测试面试题.pdf

    2019-10-24 12:18:17
    python测试开发笔试题,小程序,脚本,软件测试,面试
  • 一面面经 ...百度搜索测试用例,我提了安全测试,但是没有说出安全测试的具体用例,他问我,那你理解的安全测试是什么样子的呢 反问 一面感觉注重你的知识面的广度,不会的话不用紧张,小哥哥不会深究,会
  • 高级测试开发面试集锦(1)

    千次阅读 2018-08-16 16:55:27
    使用过哪些服务端的接口测试的框架,以及对接口测试的理解。 解释内存中的栈(stack)、堆(heap)和静态存储区的用法。 通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,493
精华内容 65,797
关键字:

测试开发面试

友情链接: DS1302(LCD).rar