Stockage de 5000 éléments côté client dans une application Web [fermé]

12

Je viens d'avoir un entretien téléphonique pour le développeur ASP.Net, après les premières choses d'introduction, l'intervieweur me pose une première question technique:

"Comment stockeriez-vous 5000 éléments côté client pour chaque utilisateur dans une application web".

Ma réponse a commencé par,

Quelle est la taille moyenne de chaque élément? Faut-il vraiment stocker autant de données côté client? Ne pouvons-nous pas garder cela dans la base de données et le lier à la session utilisateur / ID client d'une manière ou d'une autre .

Sa réponse était "Non, vous me dites comment le stockeriez-vous côté client, étant donné que chaque élément est un enregistrement avec environ 8 champs, y compris int / string, une ligne de table normale".

J'ai dit: "Peut-être les garder dans une session, mais comme les sessions sont maintenues côté serveur pour chaque utilisateur, cela pourrait devenir coûteux, ou l'autre option est de stocker autant de données dans un cookie", j'ai également dit que je ne suis pas sûr si autant de données pourraient être stockées dans un cookie. J'ai mentionné que les options de stockage HTML5 sont là, mais je n'ai pas travaillé avec. Puisqu'il est basé sur SQLite, il pourrait théoriquement stocker autant de données .

C'est là que l'intervieweur l' a dit de façon un peu sarcastique , vous avez donc 3 ans d'expérience dans le développement Web et vous avez mis fin à l'entretien.

Je me demande, qu'est-ce que j'ai fait de mal? ou y a-t-il quelque chose de vraiment basique qui me manque en ce qui concerne le stockage des données côté client.

CriketerOnSO
la source
14
Je suppose qu'il cherchait du stockage local html5 , même si cela semble que vous l'avez mentionné. Il se peut que l'enquêteur soit un con et / ou vous ait mal compris.
Gort the Robot
1
Une définition a-t-elle été donnée de ce qu'un «élément» est censé être? Je ne pense pas que vous ayez fait quelque chose de mal, la question est particulièrement vague.
GrandmasterB
8
Je ne sais pas pourquoi il utiliserait le terme «élément» pour décrire cela. Mais oui, on dirait qu'il était après le stockage HTML. Je pense que votre premier instinct de `` pourquoi '' que vous souhaitez stocker autant côté client était également bon.
GrandmasterB
5
L'intervieweur vous a peut-être demandé de dire littéralement les mots «stockage local». Certaines personnes ne sont vraiment que rétentives anales. Vous ne voudriez pas travailler pour eux de toute façon. Vous avez esquivé une balle.
Greg Burghardt
2
"Qu'ai-je fait de mal?" de son commentaire et de son attitude, s'appliquant à cette entreprise: c'est là que l'intervieweur a dit un peu sarcastiquement, vous avez donc 3 ans d'expérience dans le développement Web et avez terminé l'interview
Francisco Presencia

Réponses:

10

Je suis d'accord avec les commentaires selon lesquels il était probablement à la recherche d'un stockage local HTML5 et aurait pu s'attendre à ce que vous en ayez l'expérience.

Franchement, à moins que ce ne soit une exigence intégrale du travail et que vous ayez déclaré que vous en aviez de l'expérience, ses attentes et sa réaction étaient déraisonnables, à mon avis, pour quiconque ayant une certaine expérience.

Pourquoi?

Parce qu'il y a trois ans, HTML5 en tant que spécification en était encore à ses balbutiements. En d'autres termes, pour vous, en particulier, votre carrière est aussi longue que l'histoire de la spécification elle-même. Il n'est pas rare de voir des emplois à la recherche de personnes ayant plus d'expérience avec un produit que celui-ci. Il est rare de voir la même chose se produire pour une spécification entière. Pour cela, je vous félicite d'avoir trouvé un tel bijou.

Plus sérieusement, cependant, il semble que le problème réside davantage dans le fait que votre intervieweur vous pose une question trop vague et vous juge trop sévèrement. Il n'est pas rare que les intervieweurs posent des questions vagues, en particulier dans le domaine du développement. Habituellement, cela est fait pour essayer d'évaluer votre façon de penser et où votre premier instinct vous mène. Pour cela, vous avez bien fait en remettant en question la nécessité de stocker ce type de données localement. Ces questions ne sont pas, en soi, mauvaises, mais ce que l'enquêteur en fait peut entraîner un mauvais résultat pour vous (sans doute, une telle fin d'interview signifie que vous ne voulez probablement pas travailler pour cette entreprise, de toute façon).

Maintenant, il est possible que les besoins commerciaux de l'entreprise aient nécessité d'utiliser le stockage local pour une raison ou une autre. Si tel est le cas, cela aurait dû être précisé dans la description de poste, et vous auriez dû être exclu en tant que candidat potentiellement viable lorsque votre curriculum vitae ne reflétait pas une telle expérience s'il estimait qu'il ne pouvait pas ou ne devait pas former ou fournir autrement le nouvel employé avec le temps / les moyens de se familiariser avec la technologie.

En ce qui concerne le stockage local lui-même - comme je l'ai mentionné précédemment, HTML5 en tant que spécification n'existe que depuis environ trois ans, et c'est généreux et compte les brouillons du "dernier appel". Ensuite, vous avez le problème de la prise en charge du navigateur, qui peut ou non avoir une longue histoire (par exemple, alors que les paires nom-valeur ont été largement prises en charge avant même la solidification HTML5, IndexedDB et Web SQL DB sont encore sommaires ).

Enfin, l'utilisation du stockage local HTML5 est encore moins courante. Au cours de mes années en tant que développeur Web, je suis tombé sur une application qui, je le sais, l'a utilisée une fois (il peut y en avoir certaines qui l'utilisent de manière invisible, mais c'est plus difficile à quantifier), et peut-être une demi-douzaine de projets qui pourraient être en mesure de l'utiliser (mais n'en avait pas vraiment besoin à ce moment-là, ou le coût de l'utilisation de cette approche par rapport à une autre n'était pas justifié).

Dans un sens plus général, des entretiens ratés ont lieu. Le développement de logiciels est un domaine beaucoup trop vaste pour pouvoir connaître tous les petits détails sur chaque chose (dans ce cas, les limites de stockage du stockage local HTML5), et être honnête de ne pas savoir une chose donnée est, à mon avis, toujours la meilleure voie (j'ai personnellement plus de respect pour quelqu'un qui reconnaît ses lacunes dans les connaissances et cherche à les combler, que pour quelqu'un qui essaie de dissimuler le fait qu'il ne sait pas quelque chose). Dans cet esprit, je dirais que vous avez bien géré la question, compte tenu des informations que vous avez fournies ici. S'il y avait quelque chose que vous Si vous avez mal agi, c'est peut-être dans les détails de votre réponse, que nous ne pouvons pas vous aider, ici, car nous n'étions pas à l'entretien pour évaluer les aspects non linguistiques de vos réponses.

Shauna
la source
7

La réponse «correcte» - au moins, celle qu'ils cherchaient - était en effet HTML5 LocalStorage (un excellent lien de Steven Burnap). Et l'intervieweur était probablement ... eh bien, je crois que la phrase technique est "un peu un bouton ".

Ceci est essentiellement obtenu par un processus d'élimination, dans la mesure où un cookie ne peut pas être assez grand , les sessions sont en effet côté serveur et pas du tout un mécanicien de stockage côté client, etc. L'intervieweur pensait probablement que c'était de notoriété publique et vous devrait le savoir, ce qui est amusant en ce sens que vous n'avez besoin que des capacités HTML5 LocalStorage, généralement dans le travail d'interface utilisateur lourd de données, ce qui est l'exception plutôt que la règle. Une personne pourrait programmer pendant de nombreuses années sans avoir besoin de la fonctionnalité, tandis que d'autres pourraient en avoir besoin lors de leur premier projet.

Cependant, je dirais généralement que dans des cas comme celui-ci, il s'agit moins d'une question de réponse que d'une question de comment vous y avez répondu et du processus que vous avez utilisé pour y arriver. D'après votre description, vous avez bien fait, mais je n'étais pas là et leur impression pourrait donc être très différente.

La plupart des intervieweurs sensés ne déclarent pas qu'une petite facette de la technologie est un test décisif où chaque personne doit y répondre très bien ... cependant, j'ai eu beaucoup d'entretiens avec des gens qui ne sont pas des intervieweurs sensés. Connaître ces anecdotes peut être une aubaine lorsque vous rencontrez de telles personnes.

Enfin, je noterais qu'en déclarant l'entretien d'une manière plutôt pas très agréable, il est fort probable que la personne était déjà agacée et avait déjà décidé à votre sujet (votre réponse à cette question spécifique n'aurait peut-être pas eu d'importance dans le moindre). Ils attendaient juste un moment pour que vous montiez afin qu'ils puissent le montrer et ne pas révéler le fait qu'ils avaient décidé dans les 30 premières secondes environ si vous étiez un candidat viable ou non.

Je m'exercerais peut-être à répondre à des questions auxquelles vous ne connaissez pas immédiatement la "bonne" réponse, car la capacité à se tromper avec grâce et à sembler bien informé et intelligent est de toute façon une compétence très pratique - et nous pourrions tous bénéficier de la pratique supplémentaire . Révisez quelques articles «Quoi de neuf dans [la dernière version d'une technologie importante]» et revenez-y!

BrianH
la source