Pregunta de la entrevista: ¿Qué es un hashmap? [cerrado]


Me preguntaron esto en una entrevista: "Dime todo lo que sabes sobre hashmaps."

Procedí a hacer precisamente eso: es una estructura de datos con pares clave-valor; se usa una función hash para localizar el elemento; cómo se pueden resolver las colisiones hash, etc.

Después de que terminé, me preguntaron: "OK, ahora explica todo lo que acabas de decir a un niño de 5 años. No puedes usar términos técnicos, especialmente hashing y mapping."

Tengo que decir que me tomó por sorpresa y No di una buena respuesta. ¿Cómo responderías?

 25
Author: 999999, 2010-10-08

5 answers

Tomemos el gran libro de palabras, o diccionario, y tratemos de encontrar la palabra zebra. Podemos adivinar fácilmente que las cebras será cerca del final del libro, al igual que la letra "Z" al final del alfabeto. Ahora digamos que siempre podemos encontrar dónde está la cebra dentro del gran libro de palabras. Esta es la forma en que podemos encontrar rápidamente cebras, o elefantes, o cualquier otro tipo de cosa que podamos pensar en el gran libro de palabras. A veces dos palabras estarán en la misma página como apple y ant. Somos claro que página queremos mirar, pero no estamos seguros de lo cerca que están apple y ant el uno del otro hasta que llegamos a la página. A veces apple y ant pueden estar en la misma página y a veces pueden no estar, algunos libros de palabras grandes tienen palabras más grandes.

Así es como lo habría hecho.

 35
Author: Woot4Moo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 22:08:24

Reglas. Los niños conocen las reglas. Los niños saben que ciertos artículos pertenecen a ciertos lugares. Un HashMap es como un conjunto de reglas que dicen, dado un artículo (tus zapatos, tu libro favorito o tu ropa) que hay un lugar específico al que deben ir (el zapatero, la estantería o el armario).

Así que si quieres saber dónde buscar tus zapatos, debes buscar en el zapatero.

Pero espera: ¿qué pasa si el zapatero ya está lleno? Hay algunos opcion.

1) Para cada elemento, hay una lista de lugares que puedes probar. Intenta ponerlos junto a la puerta. Pero espera, ya hay algo ahí: ¿dónde más podemos ponerlos? Prueba en el armario. Si necesitamos encontrar nuestros zapatos, seguimos la misma lista hasta que los encontremos. (secuencias de sondeo)

2) Compra una casa más grande, con un zapatero más grande. (cambio de tamaño dinámico)

3) Apilar los zapatos en la parte superior del estante, ignorando el hecho de que hace que sea un verdadero dolor para encontrar el par adecuado, porque tenemos que ir a través de todos los zapatos en la pila para encontrarlos. (encadenar).

 40
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-08 04:19:14

Hablando como padre, si tuviera que explicar un hashmap a un niño de 5 años, diría exactamente lo que dijiste mientras agitabas un cupcake de chocolate.

En serio, preguntas como esta deberían significar "puedes explicar el concepto en un inglés sencillo", una buena heurística de lo bien que has interiorizado tu comprensión del mismo. Ya que parece que lo entiendes, la pregunta parece un poco tonta.

 6
Author: Steve B.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 21:59:59

Las piezas de datos que contiene el mapa pueden ser buscadas por alguna información relacionada, al igual que las páginas pueden ser buscadas por las palabras en ellas en el índice de un libro.

La ventaja clave de usar un HashMap es que, al igual que un índice en un libro, es mucho más rápido buscar la página en la que se encuentra una palabra en el índice de lo que sería comenzar a buscar página por página para esa palabra.

(Te estoy dando una respuesta seria porque el entrevistador podría haber estado tratando de ver qué tan bien puede explicar conceptos técnicos a no técnicos como gerentes de proyectos y clientes. Tal vez un hashmap directamente no sea tan útil, pero probablemente sea una indicación tan justa como cualquiera de las habilidades de traducción.)

 5
Author: brabster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 22:08:00

Tiene un libro de páginas en blanco pero numeradas y un anillo decodificador especial que genera un número de página cuando se introduce un algo en él.

Para asignar un valor:

Se obtiene un ID (clave) y un mensaje (valor).

Pones el ID en el anillo decodificador especial y escupe el número de página.

Abra su libro en esa página. Si el ID está en la página, tache el ID / mensaje.

Ahora escriba el ID y el mensaje en la página. Si ya hay uno o más IDs con mensajes simplemente escriba el nuevo debajo de él.

Para recuperar un valor:

Se le da solo un ID (clave).

Pones el ID en el anillo decodificador especial y escupe el número de página.

Abra su libro en esa página. Si el ID está en la página, lea el mensaje (valor) que le sigue.

 2
Author: Adisak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 22:14:11