2010-10-07 10 views
24

Zostałem zapytany w wywiadzie: "Powiedz mi wszystko, co wiesz o hashmapach".Pytanie z wywiadu: Co to jest mieszanie?

Wykonałem właśnie to: jest to struktura danych z parami klucz-wartość; funkcja hash używana jest do zlokalizowania elementu; jak można rozwiązywać konflikty, itp.

Po skończeniu zapytano: "OK, teraz wyjaśnij wszystko, co właśnie powiedziałeś pięciolatce. Nie możesz używać terminów technicznych, zwłaszcza hashowania i mapowanie. "

Muszę powiedzieć, że zaskoczyło mnie to i nie dałem dobrej odpowiedzi. Jak byś odpowiedział?

+19

Myślę, że to jest głupie, o co pytać w wywiadzie, chyba że praca ta uczy struktur danych pięciolatków. –

+5

Poważnie. Nawet rachunek lambda (http://worrydream.com/AlligatorEggs/) jest dobry tylko dla dzieci w wieku 8 lat. –

+5

Chciałbym przeprosić za niezrozumienie, że byłem w obecności jednego – Gnomo

Odpowiedz

32

Pozwala wziąć dużą książkę słowną lub słownik i spróbować znaleźć słowo zebra. Łatwo odgadnąć, że zebry będą pod koniec książki, tak jak litera "Z" jest na końcu alfabetu. Teraz powiedzmy, że zawsze możemy znaleźć miejsce, w którym zebra znajduje się w dużej książce ze słowami. W ten sposób możemy szybko znaleźć zebry, słonie lub inne rzeczy, o których możemy pomyśleć w wielkim słowniczku. Czasami dwa słowa będą na tej samej stronie, na przykład jabłko i mrówka. Jesteśmy pewni, na którą stronę chcemy spojrzeć, ale nie jesteśmy pewni, jak blisko są sobie jabłka i mrówki, dopóki nie dojdziemy do strony. Czasami jabłka i mrówki mogą znajdować się na tej samej stronie, a czasem nie, niektóre duże książki mają większe słowa.

Tak właśnie bym to zrobił.

+0

lmao, niezły! – Brabster

+8

Opisujesz posortowany indeks, więcej niż HashMap. – James

+3

Zdajesz sobie sprawę, że mapa jest słownikiem, prawda? Użycie słownika rzeczywistego życia ma wyjaśnić strukturę danych 5-letniemu – Woot4Moo

6

Mówiąc jako rodzic, gdybym musiał wytłumaczyć nieszczęsną dziewczynę pięciolatkowi, powiedziałbym dokładnie, co powiedziałeś, wymachując czekoladowym ciastkiem.

Poważnie, pytania takie jak to powinno oznaczać "możesz wyjaśnić tę koncepcję w prostym języku angielskim", dobrą heurystykę tego, jak dobrze zinternalizowałeś swoje rozumienie tego. Ponieważ brzmi to tak, jak masz, pytanie wydaje się nieco głupie.

+0

Muszę dać +1, ponieważ II rzeczywiście wyjaśniłem skomplikowane pojęcia techniczne (kiedy łańcuchy pytań "dlaczego?" Dotarły do ​​pewnego punktu) do dzieci po prostu udzielając tej samej odpowiedzi, dałbym technikowi (być może nawet podnosząc złożoność), ale podskakując trochę podekscytowany. To często je satysfakcjonuje. –

5

Fragmenty danych znajdujących się na mapie można przeglądać za pomocą powiązanych informacji, podobnie jak można przeglądać strony za pomocą słów znajdujących się w indeksie książki.

Główną zaletą korzystania z HashMap jest to, że podobnie jak indeks w książce, znacznie szybciej jest sprawdzić stronę, w której znajduje się słowo w indeksie, niż byłoby rozpocząć wyszukiwanie strony po stronie dla tego słowa.

(Daję ci poważną odpowiedź, ponieważ ankieter mógł próbować zobaczyć, jak dobrze możesz wyjaśnić techniczne pojęcia nie-technologom, takim jak kierownicy projektu i klienci. , ale prawdopodobnie jest to równie wskazanie, jak każda umiejętność tłumaczenia.)

2

Masz książkę z pustymi, ale ponumerowanymi stronami i specjalny pierścień dekodera, który generuje numer strony, gdy coś do niej zostanie wprowadzone.

Aby przypisać wartość:

dostać identyfikator (klucz) i wiadomość (wartość).

Umieszczasz identyfikator w specjalnym pierścieniu dekodera i wypluwa numer strony.

Otwórz książkę na tej stronie. Jeśli identyfikator znajduje się na stronie, przekreśl identyfikator/wiadomość.

Teraz wpisz identyfikator i wiadomość na stronie.Jeśli istnieje już jeden lub więcej innych identyfikatorów z wiadomościami, po prostu napisz nowy pod nim.

Aby pobrać wartość:

podane są tylko identyfikator (key).

Umieszczasz identyfikator w specjalnym pierścieniu dekodera i wypluwa numer strony.

Otwórz książkę na tej stronie. Jeśli identyfikator znajduje się na stronie, przeczytaj komunikat (wartość), która następuje po nim.

36

Reguły. Dzieci znają zasady. Dzieci wiedzą, że pewne przedmioty należą do pewnych miejsc. HashMap jest jak zestaw reguł, które mówią, że dany przedmiot (twoje buty, twoja ulubiona książka lub ubrania) ma określone miejsce, do którego powinien się udać (półka na buty, półka na książki lub szafa).

Więc jeśli chcesz wiedzieć, gdzie szukać butów, musisz zajrzeć do półki na buty.

Ale czekaj: co się stanie, jeśli stojak na buty jest już pełny? Istnieje kilka opcji.

1) Dla każdej pozycji dostępna jest lista miejsc, w których można wypróbować. Spróbuj umieścić je obok drzwi. Ale poczekaj, już tam jest coś: gdzie jeszcze możemy je umieścić? Wypróbuj szafę. Jeśli potrzebujemy znaleźć nasze buty, podążamy tą samą listą, aż je znajdziemy. (sekwencje próbkowania)

2) Kup większy dom z większym stojakiem na buty. (zmiana rozmiaru dynamicznego)

3) Ułóż buty na wieszaku, ignorując fakt, że naprawdę trudno jest znaleźć odpowiednią parę, ponieważ musimy przejść przez wszystkie buty w stosie, aby znaleźć im. (łańcuchowanie).

+2

Bardzo dobra analogia! –

+2

I googled hashmaps, aby dowiedzieć się, jakie one są. Jest to zdecydowanie najlepsze, uogólnione konto, które znalazłem. Doskonały. – samuel