2016-06-30 13 views
-1

これは非常に一般的な質問です。設計に関する質問(OOやアルゴリズム設計)の一部として、これらの種類の問題を解決するために、データ構造の一般的な選択がどうあるべきかデザインアプローチとデータ構造の選択

Entry in the log file is like this: 
User 1 visited Page 4 
User 3 visited Page 2 
User 7 visited Page 9 
. 
. 
. 
Design an efficient data structure which supports queries like the following: 
Which page was visited by exactly 2 users in day? 
Which page was visited by only one user exactly 2 times in a day? 
Which page was visited by ‘User 3? more than 5 times in a day? 

。 「これら」とは、複数の値と複数のクエリ形式を意味します。

+0

この宿題はありますか? – Ares

+0

@Ares:いいえ。私はインタビューのためのデザインの質問を準備しており、そのような質問にどのように接近するかを理解したいです。 – dpm

+1

「日」情報はどこから来たのですか?または、1日に1つのログファイルがありますか? –

答えて

2

個人的には、キーがページであり、その値がユーザーを表す2タプルのリストとそのユーザーによる訪問数である辞書を使用します。しかし、この質問は非常に一般的なので、言うのは難しいです。例えば

Page 4: [(User 1, 1), (User 4, 10), (User 6, 30)]

次の訪問は、その数がインクリメントされるだろう。

これにはいくつかの利点があります。ユーザーはページにアクセスし、ユーザーにアクセスするページではないため、複数ではなく1つのオブジェクトを保存します。各ページへの訪問数を合計することで、総ページ訪問数などの情報を簡単に取得できます。 固定数のページと、潜在的に無制限の数のユーザーが存在します。

+0

固定数のページがあるとはどういう意味ですか?たとえば、YouTubeには10億件以上の動画があり、毎日50万件近くの動画を取得しています。数十万または数百万のページを持ち、新しいページを継続的に追加しているサイトが数多くあります。おそらく静的なサイトでも、定期的に更新が行われます。 –

関連する問題