2010-10-07 19 views
24

Mi è stato chiesto in un'intervista: "Dimmi tutto quello che sai sulle hashmap".Domanda intervista: cos'è una hashmap?

Ho provveduto a fare proprio questo: si tratta di una struttura dati con coppie chiave-valore; una funzione di hash è usata per localizzare l'elemento; come possono essere risolti i conflitti di hash,

Dopo aver finito, hanno chiesto: "OK, ora spiega tutto ciò che hai appena detto a un bambino di 5 anni. Non puoi usare termini tecnici, soprattutto hashing e Mappatura."

Devo dire che mi ha colto di sorpresa e non ho dato una buona risposta. Come risponderesti?

+19

Penso che questa sia una cosa stupida da chiedere nell'intervista a meno che il lavoro non stia insegnando strutture dati a bambini di cinque anni. –

+5

Seriamente. Anche [lambda calcolo] (http://worrydream.com/AlligatorEggs/) è solo buono per gli otto anni. –

+5

Mi scuso per non aver capito che ero in presenza di uno – Gnomo

risposta

32

Consente di prendere il dizionario di parole grandi o dizionario e provare a trovare la parola zebra. Possiamo facilmente intuire che le zebre saranno vicine alla fine del libro, proprio come la lettera "Z" è alla fine dell'alfabeto. Ora diciamo che possiamo sempre trovare dove si trova la zebra all'interno del grande libro di parole. Questo è il modo in cui possiamo trovare rapidamente zebre, elefanti o qualsiasi altro tipo di cosa che possiamo pensare nel grande libro di parole. A volte due parole si trovano sulla stessa pagina come mela e formica. Siamo sicuri di quale pagina vogliamo guardare, ma non siamo sicuri di quanto siano vicini l'un l'altro a mela e formica finché non arriviamo alla pagina. A volte mela e formica possono trovarsi sulla stessa pagina ea volte potrebbero non esserlo, alcuni grandi libri di parole hanno parole più grandi.

Ecco come l'avrei fatto.

+0

lmao, bello! – Brabster

+8

Stai descrivendo un indice ordinato, più di una HashMap. – James

+3

Ti rendi conto che una mappa è un dizionario giusto? L'uso del dizionario della vita reale è quello di spiegare una struttura dati a un bambino di 5 anni – Woot4Moo

6

Parlando come genitore, se dovessi spiegare una hashmap a un bambino di 5 anni, direi esattamente quello che hai detto mentre salutavi con un cupcake al cioccolato.

Seriamente, domande come questa dovrebbero significare "puoi spiegare il concetto in inglese", una buona euristica per quanto bene hai interiorizzato la tua comprensione di esso. Dal momento che sembra che tu lo abbia capito, la domanda sembra un po 'sciocca.

+0

Devo fare +1 su questo, perché ho effettivamente spiegato concetti tecnici complicati (quando le catene di domande "perché?" Hanno raggiunto un certo punto) ai bambini semplicemente dando la stessa risposta darei un collega tecnico (forse anche aumentando la complessità), ma saltando un po 'eccitato. Questo spesso li soddisfa. –

5

Le porzioni di dati contenute nella mappa possono essere consultate con alcune informazioni correlate, in modo molto simile a come le pagine possono essere visualizzate dalle parole su di esse nell'indice di un libro.

Il vantaggio principale dell'utilizzo di una HashMap è che, come un indice in un libro, è molto più rapido cercare la pagina in cui è presente una parola nell'indice di quanto non sarebbe iniziare la ricerca pagina per pagina per quella parola.

(Ti sto dando una risposta seria, perché l'intervistatore forza hanno cercato di vedere come si può spiegare concetti tecnici a non-informatici come project manager e clienti. Forse un HashMap direttamente non è così utile , ma è probabilmente un'indicazione valida come qualsiasi delle abilità di traduzione.)

2

Si dispone di un libro di pagine vuote ma numerate e di un anello decodificatore speciale che genera un numero di pagina quando viene inserito un elemento in esso.

per assegnare un valore:

È possibile ottenere una ID (chiave) e un messaggio (valore).

Si inserisce l'ID nell'anello di decodifica speciale e si sparge il numero di pagina.

Apri il tuo libro a quella pagina. Se l'ID è sulla pagina, barrare l'ID/messaggio.

Ora scrivere l'ID e il messaggio sulla pagina.Se c'è già uno o più altri ID con messaggi, basta scriverne uno nuovo sotto.

Per recuperare un valore:

Si sono dati solo un ID (chiave).

Si inserisce l'ID nell'anello di decodifica speciale e si sparge il numero di pagina.

Apri il tuo libro a quella pagina. Se l'ID si trova sulla pagina, leggi il messaggio (valore) che lo segue.

36

Regole. I bambini conoscono le regole. I bambini sanno che alcuni oggetti appartengono a certi luoghi. Una HashMap è come un insieme di regole che dicono, dato un oggetto (le tue scarpe, il tuo libro preferito o i tuoi vestiti) che c'è un posto specifico in cui dovrebbero andare (la scarpiera, la libreria o l'armadio).

Quindi, se vuoi sapere dove cercare le tue scarpe, sai di guardare nella scarpiera.

Ma aspetta: cosa succede se la scarpiera è già piena? Ci sono alcune opzioni

1) Per ogni articolo, c'è un elenco di posti che puoi provare. Prova a metterli vicino alla porta. Ma aspetta, c'è già qualcosa: dove altro possiamo metterli? Prova l'armadio. Se abbiamo bisogno di trovare le nostre scarpe, seguiamo la stessa lista finché non le troviamo. (sequenze probabili)

2) Compra una casa più grande, con una scarpiera più grande. (ridimensionamento dinamico)

3) Impila le scarpe sulla parte superiore del rack, ignorando il fatto che è un vero dolore trovare la coppia giusta, perché dobbiamo passare attraverso tutte le scarpe nella pila per trovare loro. (Concatenamento).

+2

Molto buona analogia! –

+2

Ho cercato su google hashmaps per capire cosa sono. Questo è di gran lunga il miglior account generalizzato che ho trovato. Eccellente. – samuel