Собес в ВК на 500к, как это было
Продолжаю вещать вам про свои самые жесткие собесы по сисдизу. Прошлую часть про Яндекс можно чекнуть здесь
Теперь черед ВК
Сначала я уточнил: общий рейтинг или по друзьям, насколько свежими должны быть цифры, сколько людей в приложении 🤔
Первая схема получилась пиздец какой перегруженной: несколько сервисов, монга, редис, отдельный профиль юзера
Короче, классика когда пытаешься предусмотреть все сразу
Потом дошел до сортированной структуры в редисе, который умеет хранить количество шагов и быстро возвращать место человека в рейтинге
Вот это уже было конкретное решение, которое можно обсуждать и проверять, но тут начались проблемы 😔
Я не стал делать вид, что все норм, сам признал предел своей идеи и предложил ослабить требование. Верхушку считаем точно и часто, остальное обновляем реже и собираем из региональных списков
Но самый пиздатый момент на собесе начался, когда я связал свое решение с опытом. Рассказал, как уже делил горячие участки данных, объединял и переносил их между серверами по статистике нагрузки
После этого разговор стал заметно увереннее и конкретнее, я получил прямой положительный отзыв о рабочей схеме и оффер на 500к 🏆
Вот такая вот хуйня, собачка
Продолжаю вещать вам про свои самые жесткие собесы по сисдизу. Прошлую часть про Яндекс можно чекнуть здесь
Теперь черед ВК
Дали спроектировать ежедневный рейтинг шагов на десятки миллионов юзеров. Принимать новые значения, быстро показывать место человека, его соседей и верхушку списка
Сначала я уточнил: общий рейтинг или по друзьям, насколько свежими должны быть цифры, сколько людей в приложении 🤔
Первая схема получилась пиздец какой перегруженной: несколько сервисов, монга, редис, отдельный профиль юзера
Короче, классика когда пытаешься предусмотреть все сразу
Потом дошел до сортированной структуры в редисе, который умеет хранить количество шагов и быстро возвращать место человека в рейтинге
Вот это уже было конкретное решение, которое можно обсуждать и проверять, но тут начались проблемы 😔
Во-первых, я не учел повторные отправки. Телефон дважды присылает прибавку в 100 шагов и результат удваивается. А дважды увеличивать счетчик нельзя
Во-вторых, один общий список на весь мир это одна перегруженная точка. И разделить его по серверам не выйдет, потому что место человека зависит от всех остальных
Я не стал делать вид, что все норм, сам признал предел своей идеи и предложил ослабить требование. Верхушку считаем точно и часто, остальное обновляем реже и собираем из региональных списков
Но самый пиздатый момент на собесе начался, когда я связал свое решение с опытом. Рассказал, как уже делил горячие участки данных, объединял и переносил их между серверами по статистике нагрузки
После этого разговор стал заметно увереннее и конкретнее, я получил прямой положительный отзыв о рабочей схеме и оффер на 500к 🏆
Вот такая вот хуйня, собачка