On m'a demandé ceci dans une interview: "Dites-moi tout ce que vous savez sur les hashmaps."
C'est ce que j'ai fait: c'est une structure de données avec des paires clé-valeur; une fonction de hachage est utilisée pour localiser l'élément; comment résoudre les collisions de hachage, etc.
Une fois que j'ai fini, ils ont demandé: "OK, expliquez maintenant tout ce que vous venez de dire à un enfant de 5 ans. Vous ne pouvez pas utiliser de termes techniques, en particulier le hachage et la cartographie."
Je dois dire que cela m'a pris par surprise et je n'ai pas donné de bonne réponse. Comment répondriez-vous?
Prenons le grand livre Word ou dictionnaire et essayons de trouver le zèbre Word. Nous pouvons facilement deviner que les zèbres seront près de la fin du livre, tout comme la lettre "Z" est à la fin de l'alphabet. Disons maintenant que nous pouvons toujours trouver où le zèbre est à l'intérieur du grand livre Word. C'est ainsi que nous pouvons trouver rapidement des zèbres, des éléphants ou tout autre type de chose auquel nous pouvons penser dans le grand livre Word. Parfois, deux mots seront sur la même page comme Apple et ant. Nous sommes sûrs de la page que nous voulons consulter, mais nous ne savons pas à quel point Apple et ant sont proches jusqu'à ce que nous arrivions à la page. Parfois Apple et ant peuvent être sur la même page et parfois ils ne le sont pas, certains gros livres Word ont des mots plus gros.
Voilà comment je l'aurais fait.
Règles. Les enfants connaissent les règles. Les enfants savent que certains articles appartiennent à certains endroits. Un HashMap est comme un ensemble de règles qui disent, étant donné un article (vos chaussures, votre livre préféré ou vos vêtements) qu'il y a un endroit spécifique où ils devraient aller (le porte-chaussures, l'étagère ou le placard).
Donc, si vous voulez savoir où chercher vos chaussures, vous savez regarder dans le porte-chaussures.
Mais attendez: que se passe-t-il si le support à chaussures est déjà plein? Il y a quelques options.
1) Pour chaque article, il y a une liste d'endroits que vous pouvez essayer. Essayez de les placer à côté de la porte. Mais attendez, il y a déjà quelque chose: où pouvons-nous les mettre? Essayez le placard. Si nous devons trouver nos chaussures, nous suivons la même liste jusqu'à ce que nous les trouvions. (séquences de sondage)
2) Achetez une maison plus grande, avec un plus grand support à chaussures. (redimensionnement dynamique)
3) Empilez les chaussures sur le dessus du rack, en ignorant le fait qu'il est vraiment difficile de trouver la bonne paire, car nous devons parcourir toutes les chaussures de la pile pour les trouver. (chaînage).
En tant que parent, si je devais expliquer une carte de hachage à un enfant de 5 ans, je dirais exactement ce que vous avez dit en agitant autour d'un petit gâteau au chocolat.
Sérieusement, des questions comme celle-ci devraient signifier "pouvez-vous expliquer le concept en anglais simple", une bonne heuristique pour savoir à quel point vous en avez intériorisé la compréhension. Comme il semble que vous compreniez cela, la question semble un peu idiote.
Les informations contenues dans la carte peuvent être consultées par des informations connexes, tout comme la façon dont les pages peuvent être consultées par les mots qu'elles contiennent dans l'index d'un livre.
L'avantage clé de l'utilisation d'un HashMap est que, comme un index dans un livre, il est beaucoup plus rapide de rechercher la page sur laquelle se trouve un mot dans l'index que de commencer à rechercher page par page ce mot.
(Je vous donne une réponse sérieuse parce que l'intervieweur peut-être a essayé de voir dans quelle mesure vous pouvez expliquer des concepts techniques à des non-techniciens comme les chefs de projet et les clients. utile, mais c'est probablement une indication aussi juste que n'importe quelle compétence en traduction.)
Vous avez un livre de pages vierges mais numérotées et un anneau de décodeur spécial qui génère un numéro de page lorsqu'un quelque chose y est entré.
Pour attribuer une valeur:
Vous obtenez un ID (clé) et un message (valeur).
Vous mettez l'ID dans l'anneau spécial du décodeur et il crache le numéro de page.
Ouvrez votre livre sur cette page. Si l'ID est sur la page, biffez l'ID/le message.
Écrivez maintenant l'ID et le message sur la page. S'il existe déjà un ou plusieurs autres ID avec des messages, écrivez simplement le nouveau en dessous.
Pour récupérer une valeur:
On vous donne juste un ID (clé).
Vous mettez l'ID dans l'anneau spécial du décodeur et il crache le numéro de page.
Ouvrez votre livre sur cette page. Si l'ID est sur la page, lisez le message (valeur) qui le suit.