Almacenar 5000 elementos en el lado del cliente en una aplicación web [cerrado]

12

Acabo de tener una entrevista telefónica para el desarrollador de ASP.Net, después de las cosas iniciales, el entrevistador me hizo la primera pregunta técnica:

"Cómo almacenaría 5000 elementos en el lado del cliente para cada usuario en una aplicación web".

Mi respuesta comenzó con

¿Cuál es el tamaño promedio de cada elemento? ¿Realmente tenemos que almacenar tanta información en el lado del cliente? No podemos mantener eso en la base de datos y vincularlo a la sesión de usuario / ID de cliente de alguna manera .

Su respuesta fue "No, usted me dice cómo lo almacenaría en el lado del cliente, considerando que cada elemento es un registro con alrededor de 8 campos, incluyendo int / string, una fila de la tabla normal".

Dije: "Se pueden mantener en una sesión, pero como las sesiones se mantienen en el lado del servidor para cada usuario, podría resultar costoso, o la otra opción es almacenar esa cantidad de datos en una cookie", también dije que No estoy seguro de si tantos datos podrían almacenarse en una cookie. He mencionado que las opciones de almacenamiento de HTML5 están ahí, pero no he trabajado con ellas. Ya que está basado en SQLite, podría almacenar esa cantidad de datos teóricamente .

Ahí es donde dijo el entrevistador un tanto sarcásticamente , por lo que tiene 3 años de experiencia en desarrollo web y finalizó la entrevista.

Me pregunto, ¿qué hice mal? o hay algo realmente básico que me falta con respecto al almacenamiento de datos en el lado del cliente.

    
pregunta CriketerOnSO 15.12.2014 - 19:51

2 respuestas

10

Estoy de acuerdo con los comentarios de que probablemente estaba buscando un almacenamiento local HTML5 y que esperaba que tuvieras experiencia con él.

Francamente, a menos que fuera un requisito integral del trabajo y usted dijera que tenía experiencia con él, sus expectativas y reacciones no fueron razonables, en mi opinión, para cualquier persona con alguna experiencia.

¿Por qué?

Porque, hace tres años, HTML5 como una especificación todavía estaba en su infancia. En otras palabras, para usted, específicamente, su carrera es aproximadamente tan larga como la historia de la especificación en sí misma. No es raro ver trabajos que buscan personas con más experiencia con un producto que el producto. alrededor. Es raro que suceda lo mismo para una especificación completa. Por eso, te aplaudo por encontrar una gema como esta.

Más seriamente, sin embargo, parece que el problema radica más en que su entrevistador le hace una pregunta demasiado vaga y lo juzga con demasiada severidad. No es raro que los entrevistadores hagan preguntas vagas, especialmente en el campo del desarrollo. Por lo general, esto se hace para tratar de evaluar cómo piensa y hacia dónde lo lleva su primer instinto. Para eso, lo hizo bien al cuestionar la necesidad de almacenar ese tipo de datos localmente. Estas preguntas no son, en sí mismas, malas, pero lo que el entrevistador haga con ellas puede llevar a un mal resultado. para usted (podría decirse que tal finalización de la entrevista significa que probablemente no quiera trabajar para esa empresa).

Ahora, es posible que las necesidades comerciales de la empresa requieran que usen el almacenamiento local por una razón u otra. Si ese es el caso, debería haber sido detallado en la descripción del trabajo, y debería haber sido descartado como un candidato potencialmente viable cuando su currículum no reflejó tal experiencia si sintieron que no podían o no deberían capacitarse o proporcionar el nuevo empleado con el tiempo / los medios para ponerse al día con la tecnología.

En cuanto al almacenamiento local, como mencioné anteriormente, HTML5 como una especificación solo ha existido por cerca de tres años, y eso es ser generoso y contar los borradores de la "última llamada". Luego, tiene el problema de la compatibilidad con el navegador, que puede tener o no un largo historial (por ejemplo, mientras que los pares nombre-valor han sido ampliamente soportados incluso antes de la solidificación de HTML5, IndexedDB y Web SQL DB aún son incompletos ).

Finalmente, el uso para almacenamiento local HTML5 es aún menos común. En mis años como desarrollador web, me he topado con una aplicación que sé que la usé toda una vez (puede haber alguna que la use de manera invisible, pero eso es más difícil de cuantificar), y tal vez media docena de proyectos que puede poder utilizarlo (pero en realidad no las necesitaba en ese momento, o el costo de usar ese enfoque frente a otro no estaba justificado).

En un sentido más general, las entrevistas fallidas ocurren. El desarrollo de software es lejos demasiado grande para poder conocer todos los pequeños detalles sobre cada cosa (en este caso, los límites de almacenamiento del almacenamiento local de HTML5), y ser honesto acerca de no saber un determinado En mi opinión, la cosa sigue siendo la mejor ruta (personalmente tengo más respeto por alguien que reconoce sus lagunas en el conocimiento y busca llenarlos, que por alguien que trata de encubrir el hecho de que no saben algo). Con eso en mente, diría que manejó bien la pregunta, dada la información que proporcionó aquí. Si hubo algo que usted hizo mal, puede haber estado en los detalles de cómo respondió, con lo cual no podemos ayudarlo, aquí, porque no estábamos en la entrevista para evaluar el no. -Los aspectos lingüísticos de tus respuestas.

    
respondido por el Shauna 15.12.2014 - 20:57
7

La respuesta 'correcta' (al menos, la que estaban buscando) era de hecho HTML5 LocalStorage (un excelente enlace de Steven Burnap). Y el entrevistador probablemente estaba ... bueno, creo que la frase técnica es "un poco de un botón ".

Esto se obtiene básicamente por proceso de eliminación, ya que una cookie no puede ser lo suficientemente grande , las sesiones son, de hecho, del lado del servidor y no un mecanismo de almacenamiento del lado del cliente, etc. El entrevistador probablemente pensó que esto era de conocimiento común y usted debería saberlo , lo cual es gracioso en el sentido de que solo necesita las capacidades de almacenamiento local de HTML5, por lo general, en el trabajo de IU con gran cantidad de datos, que es la excepción y no la regla. Una persona puede programar por muchos años y no tener necesidad de la función, mientras que otras podrían necesitarla en su primer proyecto.

Sin embargo, generalmente diría que en casos como este no es una cuestión de su respuesta y más bien una pregunta de cómo la respondió y el proceso que utilizó para llegar allí. Por su descripción, estuvo bien, pero yo no estaba allí y su impresión podría ser muy diferente.

La mayoría de los entrevistadores sensatos no declararán una pequeña faceta de la tecnología como una prueba de fuego donde cada persona debe responderla de manera excelente ... sin embargo, he tenido muchas entrevistas con personas que no son entrevistadores sensatos. Saber tal trivia puede ser una bendición cuando te topas con tales individuos.

Finalmente, observaría que al declarar la entrevista de manera bastante no muy agradable, es muy probable que la persona ya estuviera molesta y haya decidido sobre usted (su respuesta a esta pregunta específica podría no haber sido correcta). importaba en lo más mínimo). Estaban esperando un momento para que te tropezaras y así poder señalarlo y no exponer el hecho de que habían decidido en los primeros 30 segundos más o menos si eras un candidato viable o no.

Tal vez me gustaría practicar cómo responder preguntas sobre las que no sabes de inmediato la respuesta "correcta", ya que la habilidad de equivocarnos con gracia y parecerte conocedor e inteligente de todos modos es una habilidad sumamente útil, y todos podríamos beneficiarnos. La práctica extra. Revisa algunos de los artículos de "novedades de [la última versión de tecnología importante]" y luego vuelve a salir.

    
respondido por el BrianH 15.12.2014 - 20:45

Lea otras preguntas en las etiquetas