Топ-10 вопросов на собеседованиях для разработчиков

Анна Самойдюк
Расскажите друзьям
Анна Самойдюк

Проектирование крупномасштабных распределенных систем стало стандартной частью собеседований на должность разработчика. Бывший программист в Facebook и Microsoft Фахим уль Хак составил список самых часто задаваемых вопросов на таких собеседованиях и указал, на что следует обратить внимание, проектируя систему.

1. Спроектируйте TinyURL или bitly (сервис сокращения URL)

Как вы спроектируете сервис, который будет генерировать короткие псевдонимы для длинных URL?

Обсудите следующее:

  • Как генерировать уникальные ID для каждого URL?

  • Как бы вы генерировали уникальные ID в широких масштабах (тысячи запросов на сокращение URL, поступающие каждую секунду)?

  • Как ваш сервис будет справляться с перенаправлениями?

  • Как бы вы поддерживали кастомные короткие URL?

  • Как удалить истекшие URL?

  • Как отслеживать статистику кликов?

2. Спроектируйте YouTube, Netflix или Twitch (видеостриминговый сервис)

Такой сервис будет хранить и передавать петабайты данных. Вы должны объяснить, как эффективно хранить и распределять данные таким образом, чтобы огромное количество пользователей могло смотреть и делиться ими одновременно (например, представьте стриминг последнего эпизода «Игры престолов»).

Кроме того, обсудите следующее:

  • Как бы вы записывали статистику о видео – например, общее число просмотров, лайки и дизлайки?

  • Как пользователь сможет писать к видео комментарии (в реальном времени)?

3. Спроектируйте Facebook Messenger или WhatsApp (глобальный мессенджер)

Интервьюеры хотят знать:

  • Как вы спроектируете диалоги между пользователями.

  • Как вы сможете поддерживать групповые чаты.

  • Что делать, когда пользователь не подключен к интернету.

  • Когда отправлять уведомления.

  • Можете ли вы обеспечить сквозное шифрование и как.

4. Спроектируйте Quora, Reddit или HackerNews (социальная сеть + доска объявлений)

Пользователи этих сервисов могут постить вопросы или делиться ссылками. Другие пользователи могут отвечать на вопросы или комментировать ссылки. Вот что должен уметь сервис:

  • Вести статистику записей для каждого ответа – например, общее количество просмотров, лайки/дизлайки.

  • Пользователи должны иметь возможность подписываться на других пользователей или темы.

  • В их ленте должны отображаться самые популярные вопросы пользователей и темы, на которые они подписаны.

5. Спроектируйте Dropbox, Google Drive или Google Photos (глобальное хранилище файлов)

Объясните следующее:

  • Как пользователи смогут загружать/просматривать/искать файлы или фотографии и делиться ими?

  • Как вы будете отслеживать разрешения на обмен файлами?

  • Как вы разрешите нескольким пользователям редактировать один и тот же документ?

6. Спроектируйте Facebook, Twitter или Instagram (социальную сеть с миллионом пользователей)

Интервьюерам интересно узнать, как вы будете проектировать следующие компоненты:

  • Эффективное хранилище и поиск постов или твитов.

  • Генерация ленты новостей.

  • Социальный график (кто кого добавляет в друзей, или кто кого фолловит – особенно когда миллионы пользователей фолловят знаменитость)

Очень часто основное время на собеседовании интервьюеры посвящают проектированию ленты новостей.

7. Спроектируйте Uber или Lyft (райдшеринг)

Обсудите следующие вещи:

  • Самые важные сценарии использования – когда пользователь запрашивает поездку и как эффективно связать его с водителями неподалеку.

  • Как хранить миллионы местоположений для водителей, которые постоянно передвигаются.

  • Как обрабатывать обновления местоположений водителя (миллионы обновлений каждую секунду).

8. Спроектируйте поисковой робот или автозаполнение

Для автозаполнения – когда пользователь печатает что-то в поисковой строке – вам нужно спроектировать сервис, который будет предлагать десять самых популярных запросов. Обсудите следующее:

  • Как хранить предыдущие поисковые запросы.

  • Как обновлять данные.

  • Как найти лучшие совпадения.

  • Как справляться с обновлениями и быстрой скоростью печатания пользователя.

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

  • Как найти новые веб-страницы.

  • Как приоритезировать веб-страницы, которые меняются динамически.

  • Как удостовериться в том, что ваш робот не застрянет в одном домене.

9. Спроектируйте ограничитель запросов к API

Вам нужно разработать сервисы ограничения запросов, которые могут:

  • Ограничивать количество запросов, которые компания может отправлять к API за определенное время – например, 15 запросов в секунду.

  • Ограничение запросов должно работать для распределенной системы, поскольку API предполагает работу на кластере серверов.

  • Как вы реализуете троттлинг?

10. Спроектируйте Yelp или Друзья/Места неподалеку

Этот сервис должен будет хранить локации для миллионов людей/мест. Обсудите следующее:

  • Как пользователи смогут искать друзей/места неподалеку.

  • В каком порядке расставлять места (на основе расстояния, отзывов).

  • Как эффективно хранить информацию о локации в соответствии с плотностью населения (например, в одном квартале в Нью-Йорке может находиться больше заведений/людей, чем в маленьком городке)?

Фото: Medium

Источник.

Если вы хотите поделиться опытом работы в крупной компании или маленьком стартапе, рассказать о перипетиях своей карьеры и раскрыть секреты профессии, пишите на careerist@rb.ru. Лучшие рассказы опубликуем на Rusbase.


Материалы по теме:

«Как я провалил собеседование в Google»

Пять типичных вопросов, которые задают на собеседованиях (и как на них отвечать)

Что я узнал после многочисленных собеседований в компаниях, специализирующихся на ИИ

Четыре ошибки в резюме, которых следует избегать аналитикам данных


Актуальные материалы — в Telegram-канале @Rusbase

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter


Комментарии

Зарегистрируйтесь, чтобы оставлять комментарии и получить доступ к Pipeline — социальной сети, соединяющей стартапы и инвесторов.
Innovate or Die
13 ноября 2018
Ещё события


Telegram канал @rusbase