如何在浏览器中实现电子表格?

use*_*318 4 browser architecture algorithm excel google-sheets

最近在一次采访中(软件工程师)有人问我这个问题,但我真的不知道如何回答这个问题。

这个问题集中在电子表格的算法以及它如何与浏览器交互方面。对于哪种数据结构最适合处理单元格及其值,我有些困惑。我猜任何形式的哈希表都可以将单元格用作唯一键,并将值作为单元格中的对象吗?然后,当更新内容时,您只需更新表中的该条目即可。面试官暗示了一个图表,但我不确定图表对电子表格有什么用。

我考虑的其他事项包括:

  • 浏览器中的电子表格=自动保存。随时更新,将所有数据发送回服务器
  • 彼此相关的单元,即C1 = C2 + C3,C5 = C1-C4。如果C2的值改变,则C1和C5都改变。
  • 使用设计模式?在这种特殊情况下,一个人能超越另一个吗?

关于如何解决此问题的任何提示?除了电子表格本身的算法之外,访问者还想要什么?与单独的应用程序相比,它在浏览器中的事实是否会增加任何困难?

谢谢!

Sam*_*eff 5

对于面试,这是一个很好的问题。如果这是您工作中的实际任务,那么使用第三方组件将是一个简单的答案,还有一些很好的商业用途。

虽然我们不能肯定地说您的面试官想要什么,但对我来说,这是一个好问题,恰恰是因为它是如此开放,并且有许多正确的可能答案。

您可以讨论UI以及如何实现电子表格所需的动态网格类型,以及单元格,行和列的所有功能以及单元格和范围的选择以及值和公式的编辑。您可能仅在UI含义上谈了一段时间。

或者,您可以走数据路线,讨论保存电子表格的数据结构,确切讨论公式单元格之间的链接,讨论如何检测和处理循环引用,讨论如何在浏览器中对内存的控制较少,以及对于非常大的电子表格,您可能会更早遇到问题。您可以谈谈JavaScript与本机语言之间的可用关系,以及这如何影响数据结构和计算。与数据一起,电子表格的一个重要重要问题是数值精度和浮点数计算。浮点数被认为是快速的,但在极端的精度水平上不一定是准确的,这导致了很多令人困惑的问题。我相信最近Excel会改用自己的固定十进制数字表示形式 现在可以在不使用内置浮点计算的情况下进行适当的电子表格级别的计算。您还可以讨论数据结构和计算以及它们如何影响性能。在浏览器中,您还没有线程(因此),因此您无法在后台运行所有计算。如果您有100,000行复杂的计算,并且更改了一个在所有内容之间级联的值,则可能会收到有关脚本运行缓慢的警告。您需要分解计算。000行具有复杂的计算并更改一个在所有内容之间级联的值,您将收到有关脚本运行缓慢的警告。您需要分解计算。000行具有复杂的计算并更改一个在所有内容之间级联的值,您将收到有关脚本运行缓慢的警告。您需要分解计算。

最后,您可以从用户体验角度出发。浏览器中的体验与本机应用程序有何不同?在桌面应用程序中可能难以实现的浏览器中,优点是什么,可以做些什么酷的事情?事情要复杂得多甚至根本不可能(例如,将电子表格应用程序与文件类型相关联,以便用户双击文件并在您的在线电子表格应用程序中打开它,尽管我可能对此表示怀疑,但仍然不受支持) 。

好问题,很多正确答案,非常开放。

另一方面,您也可能有一个糟糕的面试官专门寻找他们想要的答案,在这种情况下,除非您有心灵感应,否则您很不走运。