2010-10-07 14 views
24

Me lo preguntaron en una entrevista: "Dime todo lo que sabes sobre hashmaps".Pregunta de la entrevista: ¿Qué es un hashmap?

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

Después de terminar, me preguntaron: "OK, ahora explica todo lo que le acabas de decir a un niño de 5. No puedes usar términos técnicos, especialmente hash y cartografía."

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

+19

Creo que es una pregunta estúpida en la entrevista a menos que el trabajo sea enseñar estructuras de datos a niños de cinco años. –

+5

En serio. Incluso [cálculo lambda] (http://worrydream.com/AlligatorEggs/) solo es bueno para niños de ocho años. –

+5

Me disculpo por no entender que estaba en la presencia de un – Gnomo

Respuesta

32

Tomemos el libro de palabras grandes, o el diccionario, y tratemos de encontrar la palabra cebra. Podemos adivinar fácilmente que las cebras estarán cerca del final del libro, al igual que la letra "Z" está 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 cebras, 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 la manzana y la hormiga. Estamos seguros de qué página queremos ver, pero no estamos seguros de cuán cerca se encuentran la manzana y la hormiga hasta que llegamos a la página. A veces, la manzana y la hormiga pueden estar en la misma página y, a veces, pueden no serlo, algunos libros de palabras grandes tienen palabras más grandes.

Así es como lo habría hecho.

+0

lmao, ¡lindo! – Brabster

+8

Está describiendo un índice ordenado, más que un HashMap. – James

+3

¿Te das cuenta de que un mapa es un diccionario, verdad? El uso del diccionario de la vida real es para explicar una estructura de datos a un niño de 5 años. – Woot4Moo

6

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

En serio, preguntas como esta deberían significar "¿puedes explicar el concepto en inglés sencillo?", Una buena heurística de lo bien que has internalizado tu comprensión de la misma. Como parece que lo entiendes, la pregunta parece un poco tonta.

+0

Tengo que hacer +1, porque de hecho, he explicado conceptos técnicos complicados (cuando las cadenas de preguntas "¿por qué?" Han llegado a cierto punto) a los niños simplemente dando la misma respuesta que le daría a un compañero de tecnología (tal vez incluso aumentar la complejidad), pero saltando emocionado un poco. Esto a menudo los satisface. –

5

Las partes de datos que contiene el mapa pueden buscarse mediante alguna información relacionada, al igual que las páginas que se pueden buscar con las palabras en el índice de un libro.

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

(Te voy a dar una respuesta seria debido a que la fuerza entrevistador han estado tratando de ver qué tan bien puede explicar conceptos técnicos a los no expertos en tecnología como gerentes y clientes del proyecto. Tal vez un mapa hash no es directamente tan útil , pero es probablemente una indicación justa como cualquiera de las habilidades de traducción.)

2

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 ingresa algo en él.

Para asignar un valor:

Se obtiene una identificación (clave) y un mensaje (valor).

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

Abra su libro en esa página. Si la identificación está en la página, tache la identificación/mensaje.

Ahora escriba la ID y el mensaje en la página.Si ya hay uno o más ID con mensajes, solo escriba uno nuevo debajo.

para recuperar un valor:

Se le da sólo un ID (clave).

Coloca la 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 lo sigue.

36

Reglas. Los niños saben las reglas. Los niños saben que ciertos artículos pertenecen en ciertos lugares. Un HashMap es como un conjunto de reglas que dicen, dado un artículo (sus zapatos, su libro favorito o su 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, ya sabes mirar en el zapatero.

Pero, espere: ¿qué sucede si el portaequipajes ya está lleno? Hay algunas opciones.

1) Para cada artículo, hay una lista de lugares que puede probar. Intenta ponerlos al lado de la puerta. Pero espera, ya hay algo allí: ¿dónde más podemos ponerlos? Prueba el armario. Si necesitamos encontrar nuestros zapatos, seguimos la misma lista hasta que los encontremos. (secuencias de prueba)

2) Compre una casa más grande, con un estante para zapatos más grande. (cambio de tamaño dinámico)

3) Apile los zapatos encima del estante, ignorando el hecho de que es un verdadero dolor encontrar el par correcto, porque tenemos que revisar todos los zapatos del montón para encontrar ellos. (encadenado)

+2

¡Muy buena analogía! –

+2

Busqué en Google hashmaps para descubrir qué son. Esta es, de lejos, la mejor cuenta generalizada que encontré. Excelente. – samuel

Cuestiones relacionadas