Алгоритм поиска 10 лучших поисковых терминов



в настоящее время я готовлюсь к интервью, и это напомнило мне о вопросе, который мне однажды задали в предыдущем интервью, который звучал примерно так:



" вас попросили разработать некоторое программное обеспечение для непрерывного отображения 10 лучших поисковых запросов в Google. Вам предоставляется доступ к каналу, который обеспечивает бесконечный поток в режиме реального времени поисковых запросов в настоящее время осуществляется в Google. Опишите, какой алгоритм и структуры данных вы бы использовали для реализации этого. Вы дизайн двух вариантов:



(i) отображение 10 лучших поисковых запросов за все время (т. е. с момента начала чтения ленты).



(ii) отображение только 10 лучших условий поиска за последний месяц, обновляется ежечасно.



вы можете использовать приближение, чтобы получить топ-10, но вы должны обосновать свой выбор."

я бомбил в этом интервью и до сих пор действительно не знаю, как это реализовать.



первая часть запрашивает 10 наиболее частых элементов в непрерывно растущая подпоследовательность бесконечного списка. Я изучил алгоритмы выбора, но не смог найти никаких онлайн-версий для решения этой проблемы.



вторая часть использует конечный список, но из-за большого количества обрабатываемых данных вы не можете хранить в памяти весь месяц поисковых запросов и вычислять гистограмму каждый час.



проблема усложняется тем, что список топ-10 постоянно обновляется, так что как-то вы нужно рассчитать свой топ-10 по скользящему окну.



какие идеи?

519   0  

Comments

    Ничего не найдено.