最近有小伙伴私信问我怎么不更新了,期待更新,甚是感动。
简述下自己近况:
还在干测试,最近忙活的事情大概是自动化测试、性能测试以及业务等等,主打一个啥活都干。
业余时间,尝试在短视频赛道搞一些个人兴趣领域的创作,所以博客不太更新,想分享的东西还是有的,后续仍然会记录一些工作心得,感谢新老盆友的关注!
正文:
前阵子看到老张写的关于面试的文章,我突然想起来,我多年前面试字节时候,遇到的一个面试题,关于如何测试用例的。
印象中好像第一次参加字节的面试,也没刷题练习,所以开始的算法题就没做好,导致后来的表现都不太好,所以这个设计用例的题目,也没回答好;
今天当做是重新归纳总结一下。
一、面试题
面试官问是否用过在线表格之类的功能,知道这种功能系统背后是怎么实现的吗?如果让你测试在线表格,你怎么设计测试用例?
我当时的作答就不赘述了,如果现在让我重新作答,我大概会这样说。
二、关于系统实现
涉及到支持多人实时操作一个文档,其实背后大多是基于WebSocket协议来实现,而不是我们最熟悉的http协议。就像是即时聊天工具。
WebSocket 是一种协议,它允许客户端和服务器之间进行双向通信,非常适合实时应用。
我们通过浏览器打开在线表格,就会跟服务器建立一个持续通信的通道。然后我们在表格里做的一个个操作都会发送到服务器,然后服务器再把这些操作传给其他一起编辑的用户。实现实时更新功能。
但是这种功能有一个特别重要的问题要处理:解决冲突。
具体处理算法咱就不知道了,反正核心思路就是要把不同用户的编辑操作进行整合,来确保最终的文档一致。
从用户体验上来讲,可能还会涉及到本地缓存的设计,保证用户编辑后的结果在自己界面上是实时显示的,然后再将这些操作同步到服务器,当碰到网络波动或者延迟的时候,用户感知也不会很明显。而且用户就算断网了也不怕编辑的数据丢失。
从提升性能、降低成本角度来看,端上与服务器之间的通信,传输文档应该也大多使用差