Skip to content

Instantly share code, notes, and snippets.

@KELiON

KELiON/Ruby.md Secret

Last active December 2, 2022 12:16
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save KELiON/949731e077656ce036fa6114e7b47d2d to your computer and use it in GitHub Desktop.
Save KELiON/949731e077656ce036fa6114e7b47d2d to your computer and use it in GitHub Desktop.
Appbooster Ruby Developer test task

Написать на ruby web-сервер, который возвращает текущее время UTC. Опционально сервер может принимать названия городов и показывать текущее время для них.

Также сервер должен максимально быстро возвращать результат и поддерживать большое кол-во соединений.

Примеры запросов:

/time

UTC: 2015-04-11 10:30:50

/time?Moscow,New%20York

UTC: 2015-04-11 10:30:50
Moscow: 2015-04-11 13:30:50
New York: 2015-04-11 02:30:50

Likes

Есть таблица likes (user_id: integer, post_id: integer, created_at: datetime, updated_at: datetime) В этой таблице порядка нескольких миллионов записей. Сервер делает несколько разных запросов по этой таблице, время выполнения этих запросов > 1 sec. Запросы:

  SELECT COUNT(*) FROM likes WHERE user_id = ?
  SELECT COUNT(*) FROM likes WHERE post_id = ?
  SELECT * FROM likes WHERE user_id = ? AND post_id = ?

Как узнать почему тормозят запросы, как их можно ускорить (все возможные варианты).

Pending Posts

Есть такой запрос:

  SELECT * from pending_posts 
    WHERE user_id <> ?
      AND NOT approved
      AND NOT banned
      AND pending_posts.id NOT IN(
        SELECT pending_post_id FROM viewed_posts
          WHERE user_id = ?)

Какие индексы надо создать и как изменить запрос (если требуется) чтобы запрос работал максимально быстро.


В качестве базы данных можно использовать любую реляционную (postgres, mysql, oracle и т.д.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment