Speichern von 5000 Elementen auf Client-Seite in einer Webanwendung [geschlossen]


12

Ich hatte gerade ein Telefoninterview für den ASP.Net-Entwickler. Nach der ersten Einführung stellte mir der Interviewer die erste technische Frage:

Msgstr "Wie würden Sie 5000 Elemente auf der Clientseite für jeden Benutzer in einer Webanwendung speichern?"

Meine Antwort begann mit

Was ist die durchschnittliche Größe jedes Elements? Müssen wir wirklich so viele Daten clientseitig speichern? Kann nicht halten wir in der Datenbank , dass und verknüpfen diese auf Benutzersitzung / Client - ID irgendwie .

Seine Antwort war "Nein, Sie sagen mir, wie Sie es auf der Clientseite speichern würden, wenn man bedenkt, dass jedes Element ein Datensatz mit ungefähr 8 Feldern ist, einschließlich int / string, einer normalen Tabellenzeile".

Ich sagte: "Kann sein, dass sie in einer Sitzung bleiben, aber da die Sitzungen für jeden Benutzer auf der Serverseite verwaltet werden, kann dies teuer werden, oder die andere Option ist, so viele Daten in Cookies zu speichern." Stellen Sie sicher, dass so viele Daten in Cookies gespeichert werden können. Ich habe erwähnt, dass HTML5-Speicheroptionen vorhanden sind, aber ich habe nicht damit gearbeitet. Da es auf SQLite basiert, kann es theoretisch so viele Daten speichern .

Dort sagte der Interviewer etwas sarkastisch , so dass Sie 3 Jahre Erfahrung in der Webentwicklung haben und das Interview abgebrochen haben.

Ich frage mich, was ich falsch gemacht habe? oder gibt es etwas wirklich Grundlegendes, was mir in Bezug auf die Speicherung von Daten auf der Client-Seite fehlt.


14
Ich würde vermuten, dass er nach lokalem html5-Speicher gesucht hat , obwohl es so klingt, als hätten Sie es erwähnt. Es kann sein, dass der Interviewer ein Idiot war und / oder Sie missverstanden hat.
Gort the Robot

1
Wurde definiert, was ein „Element“ sein soll? Ich glaube nicht, dass Sie etwas falsch gemacht haben, die Frage ist besonders vage.
GrandmasterB

8
Ich weiß nicht, warum er den Begriff "Element" verwenden würde, um das zu beschreiben. Aber ja, es hört sich so an, als wäre er hinter HTML-Speicher her. Ich denke, Ihr erster Instinkt, warum Sie so viel Kundenseite speichern möchten, war auch ein guter.
GrandmasterB

5
Der Interviewer hat möglicherweise nach Ihnen gesucht, um die Worte "lokaler Speicher" wörtlich zu sagen. Einige Leute sind einfach so anal zurückhaltend. Sie würden sowieso nicht für sie arbeiten wollen. Du bist einer Kugel ausgewichen.
Greg Burghardt

2
"was habe ich falsch gemacht?" Aus seiner Bemerkung und Haltung, die sich auf dieses Unternehmen
Francisco Presencia

Antworten:


10

Ich bin mit den Kommentaren einverstanden, dass er wahrscheinlich nach lokalem HTML5-Speicher gesucht hat, und habe möglicherweise erwartet, dass Sie Erfahrung damit haben.

Ehrlich gesagt, war seine Erwartung und Reaktion meines Erachtens für jeden mit Erfahrung unangemessen, es sei denn, dies war eine wesentliche Anforderung des Jobs und Sie gaben an, Erfahrung damit zu haben.

Warum?

Weil HTML5 als Spezifikation vor drei Jahren noch in den Kinderschuhen steckte. Mit anderen Worten, für Sie ist Ihre Karriere ungefähr so ​​lang wie die Geschichte der Spezifikation. Es ist nicht ungewöhnlich, Jobs zu sehen, die Menschen suchen, die mehr Erfahrung mit einem Produkt haben als es das Produkt gibt. Es ist selten, dass dasselbe für eine gesamte Spezifikation passiert . Dafür begrüße ich Sie, dass Sie solch ein Juwel gefunden haben.

Ernsthafter klingt es jedoch, als liege das Problem eher darin, dass Ihr Interviewer Ihnen eine zu vage Frage stellt und Sie zu streng danach urteilt. Es ist nicht ungewöhnlich, dass Interviewer vage Fragen stellen, insbesondere im Bereich der Entwicklung. In der Regel wird damit versucht zu beurteilen, wie Sie denken und wohin Sie Ihr erster Instinkt führt. Dafür haben Sie die Notwendigkeit in Frage gestellt, diese Art von Daten lokal zu speichern. Diese Fragen sind an sich nicht schlecht, aber was der Interviewer mit ihnen macht, kann zu einem schlechten Ergebnis für Sie führen.

Nun ist es möglich, dass das Unternehmen aufgrund seiner geschäftlichen Anforderungen aus dem einen oder anderen Grund lokalen Speicher benötigt. Wenn dies der Fall ist, sollte dies in der Stellenbeschreibung dargelegt worden sein, und Sie sollten als potenziell überlebensfähiger Kandidat ausgeschlossen worden sein, wenn Ihr Lebenslauf keine derartigen Erfahrungen widerspiegelte, wenn sie das Gefühl hatten, dass sie nicht trainieren konnten oder sollten oder auf andere Weise liefern der neue Mitarbeiter mit der Zeit / den Mitteln, um sich über die Technologie zu informieren.

Was den lokalen Speicher selbst angeht - wie ich bereits erwähnte, gibt es HTML5 als Spezifikation erst seit ungefähr drei Jahren, und das ist großzügig und zählt die "letzten Aufrufe". Dann haben Sie das Problem der Browserunterstützung, die möglicherweise eine lange Geschichte hat oder nicht (während beispielsweise Name-Wert-Paare bereits vor der HTML5-Konsolidierung weitgehend unterstützt wurden, sind IndexedDB und Web SQL DB immer noch skizzenhaft ).

Schließlich ist die Verwendung für den lokalen HTML5-Speicher noch seltener. In meinen Jahren als Webentwickler bin ich auf eine App gestoßen, von der ich weiß, dass sie sie alle einmal verwendet hat (es mag einige geben, die sie unsichtbar verwenden, aber das ist schwerer zu quantifizieren), und vielleicht auf ein halbes Dutzend Projekte, die das können um davon Gebrauch zu machen (aber sie brauchten sie zu diesem Zeitpunkt nicht wirklich , oder die Kosten für die Verwendung dieses Ansatzes gegen einen anderen waren nicht gerechtfertigt).

Im Allgemeinen finden fehlgeschlagene Interviews statt. Die Softwareentwicklung ist ein viel zu großes Feld, um alle Details über jedes einzelne Element (in diesem Fall die Speichergrenzen des lokalen HTML5-Speichers) zu kennen, und ehrlich zu sein, wenn man nicht weiß, dass ein bestimmtes Element vorhanden ist, ist meiner Meinung nach immer noch der beste Weg (ich persönlich habe mehr Respekt vor jemandem, der ihre Wissenslücken anerkennt und sie zu füllen sucht, als vor jemandem, der versucht, die Tatsache zu vertuschen, dass er etwas nicht weiß). In diesem Sinne würde ich sagen, dass Sie die Frage mit den hier gegebenen Informationen gut behandelt haben. Wenn es dich gibt Wenn Sie etwas falsch gemacht haben, kann es an den Details Ihrer Antwort liegen, bei denen wir Ihnen nicht weiterhelfen können, da wir nicht am Interview teilgenommen haben, um die nichtsprachlichen Aspekte Ihrer Antworten zu bewerten.


7

Die 'richtige' Antwort - zumindest die, nach der sie gesucht haben - war tatsächlich HTML5 LocalStorage (ein ausgezeichneter Link von Steven Burnap). Und der Interviewer war wahrscheinlich ... nun, ich glaube, der technische Ausdruck ist "ein bisschen wie ein Knopf ".

Dies wird im Grunde genommen durch den Prozess der Beseitigung erreicht, indem ein Cookie nicht annähernd groß genug sein kann , Sitzungen tatsächlich serverseitig sind und überhaupt kein clientseitiger Speichermechanismus usw. Der Interviewer dachte vermutlich, dies sei allgemein bekannt und Sie sollte es wissen, was insofern lustig ist, als Sie nur HTML5 LocalStorage-Funktionen benötigen, die in der Regel für datenintensive Benutzeroberflächen erforderlich sind. Dies ist eher die Ausnahme als die Regel. Eine Person kann für viele Jahre programmieren und benötigt diese Funktion nicht, während andere diese Funktion bei ihrem ersten Projekt benötigen.

In solchen Fällen würde ich jedoch im Allgemeinen sagen, dass es weniger um Ihre Antwort als vielmehr um die Frage geht, wie Sie darauf geantwortet haben und wie Sie dorthin gekommen sind. Nach deiner Beschreibung warst du in Ordnung, aber ich war nicht dort und daher könnte ihr Eindruck sehr unterschiedlich sein.

Die meisten vernünftigen Interviewer werden eine kleine Technologiefacette nicht als Lackmustest deklarieren, bei dem jeder eine großartige Antwort geben muss. Ich habe jedoch viele Interviews mit Leuten geführt, die keine vernünftigen Interviewer sind. Das Wissen um solche Kleinigkeiten kann ein Segen sein, wenn Sie auf solche Personen stoßen.

Abschließend möchte ich darauf hinweisen, dass es sehr wahrscheinlich ist, dass die Person bereits genervt war und sich bereits für Sie entschieden hat, wenn Sie das Interview auf eine nicht sehr nette Art und Weise für vorbei erklärt haben (Ihre Antwort auf diese spezielle Frage hat möglicherweise keine Rolle in der geringste). Sie haben nur einen Moment darauf gewartet, dass Sie auftauchen, damit sie darauf zeigen und nicht die Tatsache preisgeben können, dass sie in den ersten 30 Sekunden entschieden haben, ob Sie ein überlebensfähiger Kandidat sind oder nicht.

Ich würde vielleicht üben, wie man Fragen beantwortet, auf die man nicht sofort die "richtige" Antwort kennt, da die Fähigkeit, anmutig und sachkundig und intelligent zu sein, eine verdammt praktische Fähigkeit ist - und wir alle könnten von der zusätzlichen Übung profitieren . Aktualisieren Sie einige Artikel zum Thema "Was ist neu in [der neuesten Version wichtiger Technologie]" und kehren Sie dann wieder zurück!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.