西安Shangxue唐行使09.10 | Javaプログラミング書かれたインタビューの質問

1.考えると、二つのファイル、各保存50億URL、それぞれがそれぞれ64バイトを占めURL B、メモリの制限は4Gで、あなたは、一般的なURL bのファイルを見つける聞かせて?
スキーム1:セキュリティは、4Gのメモリ限界よりはるかに大きい64 = 320G×各ファイル50Gの大きさを推定することができます。完全にメモリ処理にロードすることは不可能です。分割し、征服する方法を考えてみましょう。
ファイルトラバース、得られた値に基づいて、次に、各URLについて得られるの小さなファイル1000(いう)のURLに格納されています。約300Mの各小ファイルだから。
ファイルb、およびそれぞれの小さなファイルに格納されているURL 1000年と同様に取ってトラバース(参照)。この処理後、全て同一のURLが対応する小さなファイル()で可能であり、小さなファイルは同じURLを持たないように対応していません。私たちは、その後、することができ千の小さなファイルURL限り、同じことを計算しました。
hash_setに小さなファイルのURLに格納することができ、同じURLで評価小さなファイル、各。その場合、それぞれに、それだけで構築されたhash_setであるかどうかを確認するために、別の小さなファイルをURL、その内部のファイルに保存された一般的なURLです。
シナリオ2:許可され、特定のエラーレートの場合は、ブルームフィルタを使用することができ、4Gのメモリは、おそらく340億ビットを表すことができます。いくつかあるだろうことに注意してください(ブルームは、このビットにマッピングされた340億をフィルタリングして、一つ一つ、別のファイルをURL読んブルームフィルタするかどうかを確認し、それがある場合、そのURLは、共通のURLである必要がありますするために使用して、URL内のファイルのいずれかになりますエラーレート)。
2. 10個のファイル、各ファイル1Gがありますが、各ファイルの各行は、クエリは、各ファイルに対して繰り返すことができる、ユーザーのクエリに保存されます。我々は、クエリの頻度でソートするように依頼します。
スキーム1:
順次クエリ結果の10%は別のファイル10(と呼ばれる)に書き込まれるハッシュ(クエリー)に応じて、ファイル10を読み出します。各ファイルサイズが約もあるため、このような新たに生成された。(ランダムハッシュ関数を仮定して)1G。
各クエリが発生した回数をカウントする(クエリ、QUERY_COUNT)をhash_mapを使用するためには、マシンに関する2Gメモリを探しています。出現数でソートするソート/マージ高速/ヒープを使用してください。クエリとは、ファイルへの出力をquery_cout対応するソート。これは、10ソートされたファイル(表記)が生じました。
これらの10個のファイルは、(外部ソートおよびソートの組み合わせ)マージソート。
シナリオ2:
一般的なクエリの合計量が限られているが、クエリのすべての可能な単なる繰り返し回数は、ワンタイムメモリに追加することができます。このように、我々は、各クエリが表示された回数をカウントして、迅速/ヒープを行う/ソートにそれをマージ出現回数を押して、直接他のトライ/ hash_mapを使用することができます。
スキーム3:
スキーム1に類似するが、複数のファイルに分割完成にハッシュ、処理すべき複数のファイル(例えば、MapReduceのように)処理するための分散アーキテクチャ、および最後にマージ。
3. 1Gは各行はワードで原稿のサイズを有する、ワードサイズが16バイト以下である、メモリ制限のサイズは1Mです。100ワードの最高周波数を返します。
順次とり、各単語xについて、ファイルを読み取り、この値に応じて(と呼ばれる)小さなファイル5000を堆積します。ように、各ファイルには、おそらく周り200Kです。ファイルは1M任意のサイズを超えた場合、我々は小さなファイルの分解1Mを超えないのサイズを知るために、同様の方法で分周し続けることができます。各小さいファイル、及び(トライは/ hash_map等を使用することができる)に表示される各文書の対応する統計的単語頻度、および最大100ワード(100が最小スタックノードであってもよい含む)の周波数が取ら表示され、用彼らは5000ドキュメントを取得するように、100個の単語と対応する周波数に、ファイルに保存されています。次のステップは、の(マージソートと同様)5000の、ファイルマージ処理を置くことです。
4.大量のログデータは、Baiduの数、そのIPを訪問するために一日の大半を抽出します。
IPアドレスが2 ^ 32 = 4G任意の値ケースの最大値を持って、それは完全にメモリ処理にロードされず、
分割の使用を検討し、アイデアを征服、ハッシュIPの(IP)1024値%によると、質量IPログ1024に格納されています4メガバイトIPアドレスの最大を含む各小さなファイルように小さなファイル;
、そして、このような状況を可能性ハッシュ%1024の値(IP)を使用して、そうでない場合は、直接分類する理由があり、ここで説明IPはすべての小さなファイルに存在しており、このIPは必ずしも小さなファイルで最大の数ではありません、そして、最終的な結果は、問題のように、1024パーセント値Hash(IP)をので、ここで、選択したかもしれませんIPのハッシュ値を算出することで、IPは間違いなく、同じファイルを置くもちろん、異なるIPハッシュ値が同じであってもよい、小さなファイルがあります。
各小ファイルの場合、あなたはIP-キー、ハッシュマップの値の出現回数を構築することができ、同時に、現在表示されたIPアドレスの最大数を記録し、
あなたはIPは、その後に基づいて、最大1024個の小さなファイルの出現回数を取得することができます従来のソートアルゴリズムは、IPの最大数が全体に表示されて得られました。

おすすめ

転載: blog.51cto.com/14512197/2437139