给我拷打红温了,24校招字节跳动-测试开发工程师二面(上)

大家好,我是chowley

本篇来记录一下我之前参加「字节跳动」-「测试开发工程师」的第二次技术面试过程,针对其中一些问题给出了我的答案。

部门:番茄小说-shenzhen

时间:50min

平台:飞书

过程

  1. 自我介绍

  2. 实习经历

  3. 性能测试工具的底层原理是什么? 调用ADB命令,获取内存和CPU、帧率信息,通过API获取进程资源的占用率,包括读写的功能等

    a. 采样和监控:性能测试工具通过采样和监控目标系统的各种指标来获取性能数据,例如CPU使用率、内存占用、网络流量等。这通常涉及到与操作系统或硬件交互,以获取系统的性能数据。

    b. 模拟负载:性能测试工具可以模拟多种负载条件,例如高并发访问、大数据量传输等,以评估系统在不同负载下的性能表现。这通常涉及到生成虚拟用户或请求,并监控系统的响应情况。

    c. 数据分析和报告:性能测试工具会对采集到的性能数据进行分析和处理,生成性能报告并提供可视化的结果。这有助于开发人员和测试人员了解系统的性能状况,并进行性能优化。

  4. 怎么实现数据的采集、收集和加载?

    a. 采集数据:根据测试需求,选择合适的采集方式和工具,从目标系统中获取需要的数据。例如,可以通过系统监控工具获取CPU、内存等性能数据,通过日志文件获取应用程序的运行日志等。

    b. 收集数据:将采集到的数据进行整理和处理,以便后续的分析和加载。这可能涉及到数据清洗、格式转换等操作。

    c. 加载数据:将收集到的数据加载到性能测试工具或性能分析工具中进行进一步的分析和处理。这可以帮助开发人员和测试人员了解系统的性能状况,并发现潜在的性能问题。

  5. 它是怎么获取CPU、内存的数据?

    a. 系统监控:性能测试工具可以通过系统监控工具(如top、vmstat等)来获取系统的CPU、内存等数据。这些工具可以实时监控系统的性能指标,并将数据输出到文件或可视化界面中。

    b. API调用:有些性能测试工具可以通过操作系统提供的API来获取系统的性能数据。例如,可以通过操作系统提供的性能计数器(Performance Counters)来获取CPU、内存等数据。

    c. 日志文件:性能测试工具也可以通过分析系统的日志文件来获取性能数据。例如,可以通过分析操作系统的日志文件来获取系统的启动时间、运行时间等信息。

  6. 数据怎么进行存储的?

    a. 数据库存储:将数据存储在关系型数据库(如MySQL、PostgreSQL、Oracle等)或非关系型数据库(如MongoDB、Redis等)中。数据库提供了结构化的数据存储方式,可以方便地进行查询、更新和管理。

    b. 文件存储:将数据以文件的形式存储在文件系统中。文件存储适合存储大量的非结构化数据,如文档、图片、视频等。常见的文件存储方式包括本地文件系统、网络文件系统(NFS)等。

    c. 内存存储:将数据存储在内存中,以提高数据的读写速度。内存存储通常用于缓存数据或临时存储数据,例如使用缓存系统(如Redis、Memcached等)来存储常用的数据,以减少对数据库的访问。

    d. 对象存储:将数据以对象的形式存储在对象存储系统中。对象存储系统提供了高可靠性、高扩展性的存储方式,适合存储大规模的数据。常见的对象存储系统包括AWS S3、Azure Blob Storage等。

    e. NoSQL存储:NoSQL数据库适合存储非结构化或半结构化数据,具有高可用性、高性能和高扩展性。NoSQL数据库包括文档型数据库(如MongoDB)、键值存储(如Redis)、列式数据库(如HBase)等。

    选择合适的数据存储方式取决于数据的类型、规模、访问模式等因素。不同的存储方式各有优缺点,需要根据实际情况进行选择和设计。

  7. 介绍一下精准测试,业界的精准测试定义:代码变更发生后,识别到这部分代码关联到什么功能,只执行部分用例,而不用全量回归

  8. 怎么实现精准测试?

    a. 深入理解需求: 理解需求的背景、目的和关键点,将其转化为可测量的标准。

    b. 设计精细测试用例: 设计能够覆盖需求的各个方面,并且能够有效发现潜在问题的测试用例。

    c. 使用合适的工具和技术: 利用自动化测试工具、静态代码分析工具等提高测试效率和覆盖范围。

    d. 持续跟踪测试进度: 定期检查测试覆盖率和结果,及时调整测试策略和用例,确保测试的精准性和有效性。

    e. 灵活应对变化: 随着项目进展和需求变化,灵活调整测试策略和用例,保持测试的针对性和精准性。

  9. 改动点很少,怎么通过精准测试,识别到具体需要回归哪部分?

    a. 代码比对: 使用版本控制工具比对新旧代码,确定改动的具体位置。

    b. 静态分析工具: 使用静态代码分析工具分析代码差异,找出潜在影响范围。

    c. 变更影响分析: 结合需求变更或者缺陷修复的说明,分析改动可能影响到的模块或功能。

    d. 功能验证: 针对改动部分的功能进行验证,确认改动是否符合预期并且没有引入其他问题。

  10. code review中你的重点都是哪些?发现了哪些问题?

    a. 代码逻辑: 确保代码逻辑正确且符合需求。

    b. 性能优化: 检查是否有性能瓶颈或者不必要的性能消耗。

    c. 异常处理: 确保代码中有适当的异常处理机制,防止程序崩溃或者出现意外情况。

    d. 代码风格: 检查代码是否符合团队的编码规范和最佳实践。

    e. 安全性: 检查代码是否存在安全漏洞,如SQL注入、XSS攻击等。

    f. 可维护性: 检查代码是否易于维护和扩展,是否有注释和文档说明。

    g. 单元测试: 确保代码有足够的单元测试覆盖。

  11. 必填字段bug,前端还是后端问题?

    a. 前端问题: 如果是表单提交时未对必填字段进行校验,或者前端校验逻辑不完整导致用户可以绕过校验提交空值,那么很可能是前端问题。

    b. 后端问题: 如果前端已经进行了必填字段的校验,但后端在接收到数据后未对必填字段进行处理或者处理不完整,导致空值进入数据库或者业务逻辑处理中,那么可能是后端问题。

  12. 在code review阶段怎么判断?

    a. 查看前端代码是否对必填字段进行了校验;

    b. 查看后端代码是否对接收到的数据进行了必填字段的校验和处理;

  13. 必填设置是在前端还是后端?

    必填设置既可以在前端也可以在后端进行,具体取决于系统的设计和实现方式。一般来说,前端会进行基本的必填字段校验,以提高用户体验和减轻后端压力;而后端也应该对接收到的数据进行必填字段的校验和处理,以确保数据的完整性和安全性。

总结

难度:4/5,面试官从我的经历入手,持续询问底层原理,如果不是真的有切身体会和研究,真的很难给出满意的答案

面试官专业程度:专业,技术覆盖面很广,对我的经历形成了全包围

体验打分:4/5,虽然被拷打的浑身发热,但这次经历让我对过去的经历有了更清晰的认识,也知道了自己应该在哪方面继续加强,感谢!

好了,以上就是本文的全部内容,如有问题可留言讨论。

本人正在组建校招测试开发方向的交流社区,如果您对测试求职方面感兴趣,欢迎加入了解。

我是chowley,一个专注互联网技术和产品质量保障领域的博主,我们下次再见!

欢迎点赞、评论、收藏,it's important for me.

Searching for QALog.

#软件开发2024笔面经##测试开发##字节##春招##校招#
chowley的校招历程 文章被收录于专栏

记录了chowley在24校招的技术面试全过程

全部评论
看看得物
3 回复
分享
发布于 03-20 12:07 陕西
到底是番茄还是飞书
点赞 回复
分享
发布于 03-20 15:29 北京
滴滴
校招火热招聘中
官网直投

相关推荐

11 58 评论
分享
牛客网
牛客企业服务