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

标签 algorithm browser architecture spreadsheet

我最近在一次面试(软件工程师)中被问到这个问题,我真的不知道如何回答这个问题。

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

我考虑的其他事情是:

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

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

谢谢!

最佳答案

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

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

您可以讨论用户界面以及如何实现电子表格所需的动态网格类型,以及单元格、行和列的所有功能以及单元格和范围的选择以及值和公式的编辑。您可能可以单独讨论 UI 影响。

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

最后可以从用户体验的角度来跑了。浏览器中的体验与 native 应用程序有何不同?在桌面应用程序中可能很难在浏览器中完成哪些优势和哪些很酷的事情?哪些事情要复杂得多,甚至是完全不可能的(例如,将您的电子表格应用程序与文件类型相关联,以便用户可以双击文件并在您的在线电子表格应用程序中打开它,尽管我可能认为它仍然不受支持是错误的) .

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

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

关于algorithm - 如何在浏览器中实现电子表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965221/

相关文章:

arrays - 在数组中查找魔术索引的结束条件

c++ - 计算字符串中子字符串的特定出现次数

browser - 我应该使用什么所见即所得的编辑组件进行浏览器内编辑?

android - 在平板电脑上查看网页的 html 代码

javascript - 检测浏览器是否处于全屏模式

node.js - NodeJS 的应用程序服务模型

r - 使用 nVennR 生成维恩图时出错

java - java对文档进行物理排序的算法

javascript - 嵌套的 redux reducer

architecture - DDD应用服务领域模型查看模型映射