ビッグデータ分析のインタビューの質問

   最近、私が見つかりました。少しの知識のハッシュテーブルは、ビッグデータの問題の一部を解決するために使用することができる学びました。私たちがここで話しビッグデータ分析は、これらの分散データマイニングおよび高度な概念の事実ではなく、大規模なファイルまたはデータの束(メモリが収まらない)からの検索のための特性の特定の数と、これは、最近では、大手企業は多くの場合、試験を問います。

フェイス質問1:複数のログファイルへの100Gサイズは、IPアドレス、IPアドレスの出現の最大数を見つけるために設計アルゴリズムと堆積物中にログインしますか?

解析:100Gファイルには、情報がメモリにロードされたワンタイム非常に多く、それは100の部分に切断されることはできない感じが、私たちのコンピュータのメモリが4Gについて、一般的には大きすぎるされ、私たちに与えます。IPアドレスは、文字列が長すぎる、我々は、100%の整数に0から99の範囲で、この値のモジュロ秋にそれを置くことができ、モジュロ値と同じIPアドレスが同じに割り当てられていますファイルには、次に我々は、ハッシュテーブルのIPアドレスの最内の各ファイルの統計情報を使用することができ、最終的にはそれで最大のIPで100 IPを取得し比較します。

 

ビッグデータ分析のインタビューの質問

 

 

フェイス質問2:質問、どのようにIPトップKさんを見つけるために、同じ条件?

分析:そう、ここで注意しなければならないヒープソート、IPのTOP Kはすぐにヒープの並べ替えの使用に反応するシークヒープの最上部が最大の要素であるならば、私たちが山を構築したいことだけは保証することができ、小さな杭を構築することです見ますあなただけのIPその最大値を得ることができます。

3面の質問:100億の整数を考えると、見つける整数演算の設計は一度だけ表示されます

分析:整数の2種類に分け0から42億まで、0から4294967296までの範囲の-21 -2147483648 2147483648〜2100万と億に至るまでの符号付き数字と符号なし数値として、符号付きおよび符号なししかし、私たちに100億整数を与え、整数は一度だけ見つけるために表示されますので、私たちは、ハッシュテーブルを使用するように思ったが、42億* 4(b)は、16G程度であるので、我々は、整数の配列を定義し、より良いではないのです私たちはさらにセグメント化があまりにも面倒になり、ここで我々は数を表すためにビットで、ビットマップを使用することができますが存在するかどうか、そこにはありません0のように表現されるのような大規模な配列、一回1として表さ表示され、一度他とのより多く表示されますビット。アレイのこのサイズは16ポイントの因子によって減少させることができます。また、問題が発生し、それが配列の定義、正の数の良い定義、負の数は、その後、我々は完全な32 1をどのように使用できるかを最終的に、ある(-1)と発散または正の数と同じ位置に、我々は2を定義し、この時間にそれを取ります二次元アレイは、半分が正の数の半分が同じ行に、負示す表します。この時点で、我々はこの問題を解決することができるスペースの1Gを使用しています。

開発:インタビュアーが私に尋ねた場合のみ、500M以下のスペースがあり、その後、どのように行うの?

解像度:セグメンテーションは、同じ考えを使用していますが、私たちは直接セグメンテーションの数の直接の範囲を押すことができ、ここだと思います。メモリの500Mがあれば、我々はより効率的であってもよいし、1回だけ発生数を見つけるために、50%のチャンスがあるならば、我々はこの時点で、一度それをカットでしょう。

インタビューの質問4:2つのファイルを付けて、100億の整数があり、我々は2つのだけの文書の交差点を見つける方法を、メモリの1Gがありますか?

分析:この質問は上記と同じ考え方とです。

5つの顔の質問:1つのファイルは、1Gメモリは、設計されたアルゴリズムは、整数のすべての出現を超えない2倍を100億INTが見つけるされています

分析:この間と、この質問を超える唯一の違いは、同じメソッドを2回以下の整数を見つけることです。

6つのインタビューの質問:2つのファイルを付けて、100億クエリがあり、我々は唯一のメモリ1Gを持って、二つのファイルの交点を見つけるための方法は、正確なアルゴリズムと近似アルゴリズム与えられています!

分析:私たちは別の100部と比較したファイル内の各ファイルのコピーを取得するには、両方のファイルを100個の部分に分かれて置けば二つの文書の交点は、我々は確かに、比較するには、このアルゴリズムを使用します時間効率は、我々は彼らの剰余第一の面心の質問を借りることができますので、我々は唯一の2つのファイルが同じ数字ならば、同じ値を比較することができモジュロ比較し、低すぎます。

面试题7:如何扩展BloomFilter使得它支持删除元素的操作?

解析:BloomFilter并不支持删除元素的操作,因为很可能产生哈希冲突(就是由不同的哈希函数算出的位置指向同一个位),这样改变一个位很可能会影响到其他元素的判断。这里我们可以按照和智能指针sharedptr的思想即“引用计数”来解决,我们添加一个count计数器,每当我们在这个位上表示一个元素时就让它count++,每删除一个涉及到这个位表示的元素时就让它count--,这样只当count为0时我们再对这一位置0,这样就完成了删除的操作。

 

ビッグデータ分析のインタビューの質問

 

 

面试题8:如何扩展BloomFilter使得它支持计数操作?

解析:这道题思想和上一道题一样。

面试题9:给上千个文件,每个文件大小为1K—100M。给n个词,设计算法对每个词找到所有包含它的文件,你只有100K内存

解析:我们可以使用布隆过滤器来判断一个文件是否包含这n个单词生成n个布隆过滤器放到外存,我们事先定义好一个包含这n个单词信息的文件info,每当我们在一个文件找到一个对应的单词就将这个文件的信息写入info对应单词的位置。我们只有100K内存,这100K内存我们一部分用来存放布隆过滤器一部分可以存放文件,因为文件最小都为100K,所以我们可以尝试把它切分为50K的小文件,每个文件标志好所属的大文件,这样我们每次读入一个布隆过滤器和一个小文件,如果这个文件有对应的单词则在info中标记所属大文件的信息,如果没有则读入下一个布隆过滤器,把所有布隆过滤器都使用后,再读下一个文件重复上述步骤直至把所有文件都遍历完。

面试题10:有一个词典,包含N个英文单词,现在任意给一个字符串,设计算法找出包含这个字符串的所有英文单词

解析:首先判断一个单词是否包含一个字符串我们可以用strstr这个函数,对于这个问题,我觉得如果该字符串的前缀和要找的单词一样的话可以采用字典树来查找,但是N个英文单词我们可以假设它很大,我们把它放到一个文件里,每次只读出固定个数个单词进行判断。


要約:データポイントのような大規模な問題のために我々は通常使用ハ大きなファイルに切断しつつ、他のいくつかの場合に特に便利であるので、長さは、合理的な位置へのデータ配列が割り当てられるダイすなわちXiqie例えば、丸めハXiqieポイント、または内部要素の動作のためのIPアドレスを比較します。

                                                                                                       データのチュートリアルを多数取得するためにマイクロチャネル世間の注目は、
ブルームフィルタは、コレクション内の要素の有無を判定することができます。

おすすめ

転載: www.cnblogs.com/dashujunihaoa/p/10954699.html