在Web应用程序的客户端上存储5000个元素


12

我刚刚对ASP.Net开发人员进行了电话面试,在初步介绍之后,面试官问我第一个技术问题:

“如何在Web应用程序中为每个用户在客户端存储5000个元素”。

我的回答开始于

每个元素的平均大小是多少?我们真的必须在客户端存储这么多的数据吗?我们不能将其保留在数据库中,并以某种方式将其链接到用户会话/客户端ID 。

他的回答是“不,您告诉我如何将其存储在客户端,考虑到每个元素都是一个包含大约8个字段的记录,包括int / string和一个普通的表行”。

我说:“可以将它们保留在会话中,但是由于会话是在服务器端为每个用户维护的,因此可能会变得昂贵,或者另一种选择是将大量数据存储在cookie中”,我还说我不是确定是否可以在Cookie中存储大量数据。我提到有HTML5存储选项,但我还没有使用它。由于它基于SQLite,因此理论上可以存储那么多数据。

那是面试官有些讽刺地说的地方,因此您在Web开发方面拥有3年的经验,并终止了面试。

我想知道,我做错了什么?还是在客户端存储数据方面我真的缺少一些基本知识。


14
我猜他正在寻找html5本地存储,尽管听起来您提到过。可能只是面试官是个混蛋,和/或误解了您。
机器人

1
是否给出了“元素”的定义?我认为您没有做错任何事情,这个问题特别含糊。
GrandmasterB 2014年

8
我不知道他为什么要用“元素”来形容。但是,是的,听起来像他在追求HTML存储。我认为您首先想知道为什么要存储这么多客户端也是一个好主意。
GrandmasterB 2014年

5
面试官可能一直在找您说“本地存储”一词。有些人真的是那种肛门固位。无论如何,您都不想为他们工作。你躲开了子弹。
格雷格·伯格哈特

2
“我做错什么了?” 从他的评论和态度开始,向这家公司申请:那是面试官讽刺地说的,因此,您在Web开发方面拥有3年的经验,并终止了面试
Francisco Presencia 2014年

Answers:


10

我同意他可能正在寻找HTML5本地存储的评论,并且可能希望您有使用它的经验。

坦率地说,除非这是工作的必要条件,并且您说您有经验,否则我认为他的期望和反应对于任何经验的人都是不合理的。

为什么?

因为三年前,作为规范的HTML5仍处于起步阶段。换句话说,对您来说,您的职业生涯大约与规范本身的历史一样长。看到工作寻找对产品有更多经验的人的情况并不少见。很少会在整个规范中看到同样的情况为此,我为您找到这样的宝石而称赞。

不过,更严重的是,问题似乎更多在于您的面试官向您提出了一个过于模糊的问题,并且对您的评价太苛刻。面试官提出模糊的问题并不少见,特别是在发展领域。通常,这样做是为了衡量您的想法以及您的第一个本能将您引导到哪里。为此,您通过质疑是否需要在本地存储这种数据来做得很好。这些问题本身并没有什么坏处,但是面试官对它们的处理方式可能会给您带来不好的结果(可以说,终止面试意味着您可能无论如何都不想在该公司工作)。

现在,公司的业务需求可能需要出于某种原因使用本地存储。如果是这样,应该在职位描述中说明,如果您认为自己的简历不能或不应该培训或以其他方式提供,则您的履历表中没有这样的经历,则应该将您排除为可能的候选人新员工有时间/手段加快技术发展。

至于本地存储本身,正如我之前提到的,HTML5作为规范仅存在了大约三年,这是慷慨的,并且正在计算“最后的召集”草案。然后,您可能会遇到浏览器支持的问题,这种支持可能没有很长的历史(例如,即使在HTML5固化之前就已经广泛支持名称-值对,但IndexedDB和Web SQL DB仍是粗略的)。

最后,HTML5本地存储的用法仍然不太常见。在我多年的Web开发人员,我遇到一个应用程序,我知道利用这一切的一次(可能会有一些无形使用它,但是这是很难量化),也许半打预计,可能能够来利用它(但当时并不需要它,或者使用这种方法与另一种方法的成本不合理)。

从更一般的意义上讲,失败的采访会发生。软件开发是远远太大的领域,以便能够知道所有有关的每一件事情的小细节(在这种情况下,HTML5本地存储的存储限制),并正在诚实不知道一个给定的事情是,在我看来,仍然是最好的途径(相对于那些试图掩盖他们不知道的事实的人,我个人更尊重承认自己的知识空白并寻求填补这些空白的人)。考虑到这一点,鉴于您在此处提供的信息,我想您很好地解决了这个问题。如果有事 确实做错了,这可能是您的回答方式的细节,在这里我们无法为您提供帮助,因为我们不是在面试中评估您回答的非语言方面。


7

“正确”的答案-至少是他们正在寻找的答案-确实是HTML5 LocalStorage(Steven Burnap的出色链接)。面试官可能正在……嗯,我相信技术用语是“有点麻烦 ”。

这基本上是通过消除过程来实现的,因为cookie不能足够大,会话实际上是服务器端的,而根本不是客户端存储的机制,等等。访调员大概认为这是常识,您应该知道这一点,这很有趣,因为您只需要HTML5 LocalStorage功能(通常在数据繁重的UI工作中),这是例外,而不是规则。一个人可以编程很多年,而无需使用该功能,而其他人可能在第一个项目中就需要该功能。

但是,我通常会说,在这种情况下,这不是您的答案的问题,而是您如何回答它以及您到达那里的过程的问题。根据您的描述,您还可以,但我当时不在,因此他们的印象可能会有所不同。

大多数明智的面试官不会将技术的一个小方面声明为试金石测试,每个人都必须回答很好。但是,我对不是明智的面试官的人进行了很多采访。当您遇到这样的人时,了解这样的琐事可能是福音。

最后,我要指出的是,以一种不太好的方式宣布面试的可能性很大,这个人已经很烦恼并且已经决定了您(您对这个特定问题的答案可能对您没有影响丝毫)。他们只是在等你一会儿,以便他们指出这一点,而不会暴露他们在最初的30秒左右就做出决定的事实,无论您是否可行。

我也许会练习如何回答您未立即知道“正确”答案的问题,因为优雅地犯错,看起来无论如何都是知识和智慧的能力都是一种轻而易举的技巧-我们所有人都可以从额外的练习中受益。梳理一些“ [最新版本的重要技术]的新功能”文章,然后再回过头来!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.