web-dev-qa-db-ja.com

インタビューの質問:ハッシュマップとは何ですか?

私はこれをインタビューで尋ねられました:"ハッシュマップについて知っているすべてを教えてください。"

私はそれを実行し始めました。これは、キーと値のペアを持つデータ構造です。ハッシュ関数を使用して要素を特定します。ハッシュの衝突を解決する方法など.

私が終わった後、彼らは尋ねました:"OK、今あなたが今言ったすべてを5歳の人に説明してください。あなたは専門用語、特にハッシングとマッピングを使うことはできません。"

驚いたことに私は言わざるを得ませんでしたし、良い答えもしませんでした。どのように答えますか?

31
999999

大きなWordの本や辞書を手に入れ、Wordのシマウマを見つけましょう。 「Z」という文字がアルファベットの最後にあるのと同じように、シマウマは本の終わり近くにあると簡単に推測できます。ここで、ゼブラが大きなWordブックのどこにあるかを常に見つけることができるとしましょう。これは、シマウマ、象、または大きなWordブックで考えられるその他の種類のことをすばやく見つける方法です。 Appleとantのように、2つの単語が同じページに表示されることがあります。どのページを見たいかは確かですが、ページにたどり着くまでは、Appleとantがどれだけ近いかはわかりません。 Appleとantが同じページにある場合もあれば、同じページにない場合もあります。大きなWordブックには、より大きな単語が含まれている場合があります。

それが私がそれをした方法です。

42
Woot4Moo

ルール。子供たちはルールを知っています。子供たちは、特定のアイテムが特定の場所に属していることを知っています。 HashMapは、行くべき特定の場所(靴の棚、本棚、またはクローゼット)があるアイテム(あなたの靴、お気に入りの本、またはあなたの服)が与えられると言う一連のルールのようなものです。

したがって、靴を探す場所を知りたい場合は、靴のラックを調べることを知っています。

しかし、待ってください:靴のラックがすでにいっぱいになっているとどうなりますか?いくつかのオプションがあります。

1)アイテムごとに、試すことができる場所のリストがあります。ドアの隣に置いてみてください。しかし、待ってください、すでに何かがあります。他にどこに置くことができるのでしょうか?クローゼットを試してみてください。靴を見つける必要がある場合は、見つけるまで同じリストに従います。 (シーケンスのプローブ)

2)大きな靴ラックを備えた大きな家を購入します。 (動的なサイズ変更)

3)靴をラックの上に積み重ねます。正しいペアを見つけるのが本当に面倒になるという事実を無視して、それらを見つけるには山の中のすべての靴を調べる必要があるためです。 (連鎖)。

48
James

親として言えば、ハッシュマップを5歳の子供に説明しなければならない場合は、チョコレートカップケーキを振り回しながら言ったとおりです。

真剣に、このような質問は、「概念をわかりやすい英語で説明できますか」という意味である必要があります。これは、理解をどれだけうまく内部化したかを知るための優れたヒューリスティックです。あなたはそれを理解しているように聞こえるので、質問は少しばかげているようです。

6
Steve B.

マップが保持するデータの一部は、関連する情報によって検索できます。これは、本の索引にある単語でページを検索する方法とよく似ています。

HashMapを使用する主な利点は、本の索引のように、そのWordのページごとに検索を開始するよりも、Wordが存在するページを索引で検索する方がはるかに高速であることです。

(インタビュアーmightは、プロジェクトマネージャーや顧客などの非技術者に技術コンセプトをどれだけうまく説明できるかを模索しているので、真剣に答えています。ハッシュマップはそうではないかもしれません。便利ですが、おそらく翻訳スキルのどれかと同じくらい公正な指標です。)

5
brabster

あなたは空白であるが番号が付けられたページの本と、何かがそれに入力されたときにページ番号を生成する特別なデコーダリングを持っています。

値を割り当てるには:

ID(キー)とメッセージ(値)を取得します。

IDを特別なデコーダリングに入れると、ページ番号が出力されます。

そのページにあなたの本を開きます。 IDがページにある場合は、ID /メッセージを取り消します。

次に、ページにIDとメッセージを書き込みます。メッセージを含むIDがすでに1つ以上ある場合は、その下に新しいIDを記述します。

値を取得するには:

ID(キー)のみが与えられます。

IDを特別なデコーダリングに入れると、ページ番号が出力されます。

そのページにあなたの本を開きます。 IDがページ上にある場合は、それに続くメッセージ(値)を読みます。

3
Adisak