Косячу на собесе в Т-Банк и получаю 450к
Продолжаю рассказывать про свои самые сложные собесы, первая часть - здесь, вторая - тут
Мне дали спроектировать систему наблюдения за курьерами. По базе координаты, карта, история перемещений. Казалось бы, че там сложного
Что нужно было сделать:
Сначала разобрал основные сценарии: нужно показать, где курьер находится прямо сейчас, показать его маршрут за день и не потерять координаты, если связь отвалится
А дальше я залип на том, как отправлять отдельные запросы, куда писать, откуда читать. Начал выдрачивать детали, хотя общую схему еще не собрал
В какой-то момент интервьюер уже несколько раз начал возвращать меня к одному вопросу:
И вот тут у меня нормального ответа не было. То есть, отдельные части уже обсуждаю, а как обновление пройдет через всю систему, пока хз
А дальше сам себе устроил еще один прикол с нагрузкой 🤔
С какого-то хуя начал учитывать длину смены и получил 2 обновления в секунду, хотя тут все просто: 100к курьеров / 30 секунд = 3,3к обновлений в секунду
Потом выяснилось, что я не определил источник истины для координат. Обработчик писал и в кафке, и в редисе, из-за чего система могла жить в двух реальностях
Под конец накосячил с миграцией старых маршрутов: предложил переносить данные из основной базы частями и сразу удалять
В работающей системе так легко можно получить пропуски и рассинхрон
Зато нормально разобрал восстановление после потери связи: координаты храним на телефоне, а после восстановления сети отправляем пачку со временем и порядковым номером
К вопросу интервьюера про операторов тоже вернулись:
Если бы проходил этот собес сейчас, сначала описал бы само обновление: какой курьер, какие координаты, время, номер. Потом показал бы весь путь этих данных до оператора
И уже под эту схему выбирал бы технологии: кафка хранит поток обновлений, редис держит быструю копию последней позиции
Но даже так, оффер на сеньора и 450к на руки был получен
Продолжаю рассказывать про свои самые сложные собесы, первая часть - здесь, вторая - тут
Мне дали спроектировать систему наблюдения за курьерами. По базе координаты, карта, история перемещений. Казалось бы, че там сложного
Что нужно было сделать:
→ 100к человек одновременно на линии
→ Новая координата каждые 30 секунд
→ Текущая позиция на карте и история маршрута
→ Восстановление данных после пропажи связи
Сначала разобрал основные сценарии: нужно показать, где курьер находится прямо сейчас, показать его маршрут за день и не потерять координаты, если связь отвалится
А дальше я залип на том, как отправлять отдельные запросы, куда писать, откуда читать. Начал выдрачивать детали, хотя общую схему еще не собрал
В какой-то момент интервьюер уже несколько раз начал возвращать меня к одному вопросу:
Как обновление конкретного курьера вообще попадет именно к тем операторам, которые сейчас смотрят нужный участок карты?
И вот тут у меня нормального ответа не было. То есть, отдельные части уже обсуждаю, а как обновление пройдет через всю систему, пока хз
А дальше сам себе устроил еще один прикол с нагрузкой 🤔
С какого-то хуя начал учитывать длину смены и получил 2 обновления в секунду, хотя тут все просто: 100к курьеров / 30 секунд = 3,3к обновлений в секунду
Потом выяснилось, что я не определил источник истины для координат. Обработчик писал и в кафке, и в редисе, из-за чего система могла жить в двух реальностях
Под конец накосячил с миграцией старых маршрутов: предложил переносить данные из основной базы частями и сразу удалять
В работающей системе так легко можно получить пропуски и рассинхрон
Зато нормально разобрал восстановление после потери связи: координаты храним на телефоне, а после восстановления сети отправляем пачку со временем и порядковым номером
К вопросу интервьюера про операторов тоже вернулись:
Пришли к географическим клеткам, оператору нахуй не нужны все 100к курьеров, а только те, что попадают в его участок карты
Если бы проходил этот собес сейчас, сначала описал бы само обновление: какой курьер, какие координаты, время, номер. Потом показал бы весь путь этих данных до оператора
И уже под эту схему выбирал бы технологии: кафка хранит поток обновлений, редис держит быструю копию последней позиции
Но даже так, оффер на сеньора и 450к на руки был получен