字节面试题:在线表格功能怎么实现?怎么测?

最近有小伙伴私信问我怎么不更新了,期待更新,甚是感动。

简述下自己近况:

还在干测试,最近忙活的事情大概是自动化测试、性能测试以及业务等等,主打一个啥活都干。
业余时间,尝试在短视频赛道搞一些个人兴趣领域的创作,所以博客不太更新,想分享的东西还是有的,后续仍然会记录一些工作心得,感谢新老盆友的关注!

正文:

前阵子看到老张写的关于面试的文章,我突然想起来,我多年前面试字节时候,遇到的一个面试题,关于如何测试用例的。

印象中好像第一次参加字节的面试,也没刷题练习,所以开始的算法题就没做好,导致后来的表现都不太好,所以这个设计用例的题目,也没回答好;

今天当做是重新归纳总结一下。

一、面试题

面试官问是否用过在线表格之类的功能,知道这种功能系统背后是怎么实现的吗?如果让你测试在线表格,你怎么设计测试用例?

我当时的作答就不赘述了,如果现在让我重新作答,我大概会这样说。

二、关于系统实现

涉及到支持多人实时操作一个文档,其实背后大多是基于WebSocket协议来实现,而不是我们最熟悉的http协议。就像是即时聊天工具。

WebSocket 是一种协议,它允许客户端和服务器之间进行双向通信,非常适合实时应用。

我们通过浏览器打开在线表格,就会跟服务器建立一个持续通信的通道。然后我们在表格里做的一个个操作都会发送到服务器,然后服务器再把这些操作传给其他一起编辑的用户。实现实时更新功能。

但是这种功能有一个特别重要的问题要处理:解决冲突。

具体处理算法咱就不知道了,反正核心思路就是要把不同用户的编辑操作进行整合,来确保最终的文档一致。

从用户体验上来讲,可能还会涉及到本地缓存的设计,保证用户编辑后的结果在自己界面上是实时显示的,然后再将这些操作同步到服务器,当碰到网络波动或者延迟的时候,用户感知也不会很明显。而且用户就算断网了也不怕编辑的数据丢失。

从提升性能、降低成本角度来看,端上与服务器之间的通信,传输文档应该也大多使用差异更新,而不会每次都传输整个文档内容过去,可以减少传输量,提高速度。

以上大概是现在的回答,因为从开发实现角度,以及使用飞书在线文档的使用经验来看,差不多如此。

另外,面试官问你如何设计的问题,大概率也是考察你的知识拓展面如何,或者应对新系统的分析能力。

三、如何设计测试

如果真的接手这样的系统,那么了解背后设计原理,服务架构,测试是一定要做的,这样才能更好的帮助自己设计测试用例。

面试官问这种问题,主要还是看你的测试思路,所以千万不要想到一点说一点。

那么结合在线表格这种功能特性,就需要分析基本功能测试、实时同步、冲突处理、并发、负载测试、兼容性、权限控制、数据安全等方面了。
可以先说下考虑到的这些方面,然后每个方面逐步介绍重要测试点,很多常规的测试点可以快速带过。

1.基本功能测试
  • 创建和保存文档
  • 单元格编辑
  • 单元格输入
  • 单元格公式计算
  • 单元格拖动
2.同步测试
  • 多个用户实时编辑同一个表格
  • 多个用户实时编辑同一个单元格
  • 冲突处理后最终一致性
3.性能和负载测试
  • 高并发同时打开在线文档,响应时间
  • 同时编辑表格保存
  • 表格内容巨多,打开文档的加载时间
  • 高负载情况下,系统的CPU和内存使用情况。
  • 高负载情况下,压力持续,验证系统稳定性。
4.安全性测试
  • 权限控制
  • 测试不同权限级别的用户操作,验证权限控制是否有效
  • 测试在文档编辑和保存过程中,数据是否能够正确加密传输。
5.兼容性测试
  • 跨浏览器兼容性
  • 跨操作系统兼容性
  • 移动web端
6.用户体验测试
  • 用户体验测试
  • 界面易用性
  • 界面的布局和设计是否合理
  • 错误提示是否清晰明了
  • 对于网络中断、服务器错误等异常,是否友好处理

其实这也就是在这写文有时间细想,可以整理这么多,实际中不用说这么细问题也不大,但是考虑的面还是要尽量全。

不要小看用例设计的面试题,如果你能快速抓住功能的核心点,能有条不紊的作出总结,既反应出了你的思维能力,也反应出了你在这行是否有了对应的沉淀。

如果写了测试5年经验,但是一讲用例,东一榔头,西一棒槌,那自然就没好印象了,直接印象就是:基本功不扎实;

还是那句话,核心还是业务,其他的一切技能都是为了更快更好的完成业务来服务的,不能本末倒置,现在环境这么差,行业又这么卷,业务和技术一定得两手抓才可以。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux操作系统-测试】第三节.Linux 系统、网络信息、用户权限命令总结

文章目录 前言一、Linux 系统相关信息命令 1.1 df 命令--查看磁盘剩余 1.2 ps 命令--查看进程 1.3 top 命令--显示进程运行状态 1.4 kill 命令说明 -- 杀死进程二、Linux 网络信息命令 2.1 ping 命令--检查网络是否连通 2.1 ifconfig--显示网络设…

(总结)编译ORB_SLAM2遇到的错误

目录 第一个错误error: ‘CV_BGR2GRAY’ was not declared in this scope 第二个错误error: ‘CV_GRAY2BGR’ was not declared in this scope 第三个错误是没有那个文件或目录 26 | #include 第四个错误是‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope 第…

Python实现的深度学习技术在水文水质领域应用

当前,深度学习作为人工智能的热门技术发展迅速,以其强大的非线性和不确定性处理能力在图像识别、语音识别、自然语言处理等领域取得了显著的成效。它是一种端到端的处理方法,在训练算法的指导下,深层神经网络自发地从原始数据中进…

什么是CAP理论及应用场景,为什么只能进行3选2

在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewers theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 1、 一致性(C…

Webpack配置及工作流程

Webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler)。当Webpack处理应用程序时,它会在内部构建一个依赖图(dependency graph),该图会映射项目所需的每个模块,并生成一个或多…

计算机组成原理:408考研|王道|学习笔记II

系列目录 计算机组成原理 学习笔记I 计算机组成原理 学习笔记II 目录 系列目录第四章 指令系统4.1 指令系统4.1.1 指令格式4.1.2 扩展操作码指令格式 4.2 指令的寻址方式4.2_1 指令寻址4.2_2 数据寻址 4.3 程序的机器级代码表示4.3.1 高级语言与机器级代码之间的对应4.3.2 常用…

游戏AI的创造思路-技术基础-情感计算(1)

游戏中的AI也是可以和你打情感牌的哦,不要以为NPC是没有感情的,不过,不要和NPC打过多的情感牌,你会深陷其中无法自拔的~~~~~~ 目录 1. 情感计算算法定义 2. 发展历史 3. 公式和函数 3.1. 特征提取阶段 TF-IDF(词频…

uniapp app端跳转第三方app(高德地图/百度地图为例)

1.先写一个picker选择器 <picker change"bindPickerChange" :value"index" :range"array"><view class"uni-input">{{array[index] || 打开第三方app }}</view></picker> 2.在data中定义好高德地图/百度地图…

STM32(一):安装环境

0、参考 STM32库开发实战指南——基于野火指南者开发板&#xff1a;https://doc.embedfire.com/mcu/stm32/f103zhinanzhe/std/zh/latest/index.htmlhttps://blog.csdn.net/m0_60227737/article/details/131890201https://blog.csdn.net/qq_44016222/article/details/138673090…

C++的异常处理机制

C的异常处理机制 (1)Why&#xff08;异常处理机制的作用&#xff09;(2)How&#xff08;异常机制如何工作&#xff09;A.抛出异常B.捕获异常C.处理异常D.传递异常 (3)抛出异常A.栈展开B.析构函数和异常C.异常对象 (4)捕获异常(4)处理异常A.构造函数的异常处理B.不抛出异常noexc…

【Oracle】Oracle数据库中的数据类型

目录 数值类型字符类型CHAR(size)&#xff1a;定长字符数据。VARCHAR2(size)&#xff1a;可变长字符数据LONG&#xff1a;可变长字符数据&#xff0c;最大可达到 2GNCHAR [( size )] 类型NVARCHAR2( size ) LOB类型&#xff08;二进制类型&#xff09;CLOB&#xff1a;字符数据…

Oracle各种连接写法介绍

1、左连接 左连接&#xff08;左外连接&#xff09;&#xff1a; 基表全部查出来&#xff0c;外连接表有的匹配&#xff0c;没有则为null&#xff1b; 记录数与基表的记录数相同&#xff0c;前提是where后未加条件过滤&#xff1b; 两种写法&#xff08;left join&#xff09…

中小学校园EasyCVR视频综合监管方案:构建安全、智能的校园环境

一、背景需求分析 随着科技的快速发展&#xff0c;校园安全问题日益受到社会各界的关注。尤其是在中小学校园中&#xff0c;学生的安全更是牵动着每一个家庭的心。为了更有效地保障学生的安全&#xff0c;提高校园安全管理水平&#xff0c;视频监控系统在中小学中的应用越来越…

伙伴活动|AI硬件大潮来袭,深圳的创客们在哪里?

「每一种硬件产品&#xff0c;都会被 GenAI 重新做一遍。」 分享一个社区伙伴「未来光锥」参与主办的活动。如果你同时对 AI 和硬件感兴趣&#xff0c;提到 maker 一词仍然会激动。推荐你参与这次活动。 AI 玩具Folotoy 的创始人、RTE 开发者社区成员王乐也将参与本次活动并分…

【C++进阶】C++中的IO流

目录 前言 1. C语言中的IO 2. 如何理解流 3. C中的IO流 3.1 C中的标准IO 3.2 C中的文件IO 4. stringstream 总结 前言 C语言中的I/O接口十分强大&#xff0c;但使用起来有些繁琐。好在C中的I/O方式为我们解决了这些问题&#xff0c;让数据的读写操作变得更加简洁和便捷; 在…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-57长短期记忆网络(LSTM)

57长短期记忆网络&#xff08;LSTM&#xff09; 1.LSTM原理 LSTM是专为解决标准RNN的长时依赖问题而设计的。标准RNN在训练过程中&#xff0c;随着时间步的增加&#xff0c;梯度可能会消失或爆炸&#xff0c;导致模型难以学习和记忆长时间间隔的信息。LSTM通过引入一组称为门…

【卡尔曼滤波器】DR_CAN 2 学习笔记:_数据融合_协方差矩阵_状态空间方程_观测器问题

【卡尔曼滤波器】2_数学基础_数据融合_协方差矩阵_状态空间方程_观测器问题 非常重要1 数据融合 data fusion 有俩秤,各自有自己的正态分布:俩秤是相互独立的:俩秤都不准,但标准差都符合正态分布 正态分布又叫做高斯分布 向左、向右 都是2, 标准差是2覆盖了68.4 %的可能:…

开启HIVE中分区表支持中文字段

进入hive表&#xff1a; use hive; #修改hive database编码 alter database hive default character set utf8; #修改table编码 alter table PARTITIONS default character set utf8; alter table PARTITION_KEY_VALS default character set utf8; alter table SDS default cha…

机器学习和AI智能写作对未来文案编辑的影响

欢迎关注小知&#xff1a;知孤云出岫 目录 机器学习和AI智能写作对未来文案编辑的影响1. 简介2. AI智能写作工具的现状3. AI智能写作的优势3.1 提高效率3.2 降低成本3.3 数据驱动的个性化 4. AI智能写作的挑战4.1 创造力和独创性4.2 道德和伦理问题4.3 技术限制 5. 行业变化5.…

【排序 - 插入排序 和 希尔排序】

插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法&#xff0c;它的工作原理是逐步构建有序序列。在排序过程中&#xff0c;它将未排序的元素逐个插入到已排序的部分中&#xff0c;从而在每次插入时扩展已排序序列的长度。 原理介绍 插入排序的基本思…