Вспомнил свои самые жесткие собесы по сисдизу 😱
Решил глянуть свои записи интервью из 2025 года, заметки, че вообще происходило. И понял, что там дохуя интересного
Расскажу самый запоминающийся случай, если зайдет, то еще докину в других постах
Итак, собес в Яндекс
Сказали спроектировать ленту уровня инсты: миллионы миллиардов активных юзеров, посты, подписки, картинки, быстрая загрузка, работа в разных странах и тд и тп
Звучит как типичная задачка на сисдиз, но нюансов там пиздец
Я начал нормально, уточнил все данные, разделил загрузку и чтение, картинки вынес в отдельное хранилище
Предложил для обычных авторов ленту собирать заранее, раскладывать посты по лентам подписчиков, а для знаменитостей подтягивать в момент открытия
И тут я сел считать нагрузку. Взял 5 миллионов активных юзеров вместо 500 и получил полторы тысячи rps вместо ста семидесяти тысяч. Ну то есть просто въебал два нуля
Тем самым занизил нагрузку в сто раз, а значит выбрал маленький кеш, простую базу и милипиздрическое количество серверов. По сути спроектировал вообще другую систему
Интервьюер (как ни странно 😃) заметил и подсветил
Я не стал выебываться, а начал пересчитывать, и дошел до мысли, что одной базы тут не хватит и данные надо шардировать
Сохранил основную идею с двумя способами построения ленты и довел до рабочего решения
Сейчас я, конечно, отдельно посчитал бы сколько раз открывают ленту, сколько новых постов появляется и сколько трафика жрут картинки
И сразу бы написал на доске: обычные авторы это push модель, знаменитости это pull при чтении. А в быстрой памяти только айдишники постов и порядок выдачи, сами картинки отдельно
И только после этого выбирал бы базы и способ шардирования
Решил глянуть свои записи интервью из 2025 года, заметки, че вообще происходило. И понял, что там дохуя интересного
Расскажу самый запоминающийся случай, если зайдет, то еще докину в других постах
Итак, собес в Яндекс
Сказали спроектировать ленту уровня инсты: миллионы миллиардов активных юзеров, посты, подписки, картинки, быстрая загрузка, работа в разных странах и тд и тп
Звучит как типичная задачка на сисдиз, но нюансов там пиздец
Я начал нормально, уточнил все данные, разделил загрузку и чтение, картинки вынес в отдельное хранилище
Предложил для обычных авторов ленту собирать заранее, раскладывать посты по лентам подписчиков, а для знаменитостей подтягивать в момент открытия
Ибо если один селеб с миллионом подписчиков запостит фотку с котом, то система попытается разложить это в миллион лент разом. Само собой все к хуям ляжет 😭
И тут я сел считать нагрузку. Взял 5 миллионов активных юзеров вместо 500 и получил полторы тысячи rps вместо ста семидесяти тысяч. Ну то есть просто въебал два нуля
Тем самым занизил нагрузку в сто раз, а значит выбрал маленький кеш, простую базу и милипиздрическое количество серверов. По сути спроектировал вообще другую систему
Интервьюер (как ни странно 😃) заметил и подсветил
Я не стал выебываться, а начал пересчитывать, и дошел до мысли, что одной базы тут не хватит и данные надо шардировать
Сохранил основную идею с двумя способами построения ленты и довел до рабочего решения
Прикол в том, что даже после проеба в начале я все равно прошел этот этап и получил оффер на 390к)))
По деньгам мне было мало, и я пошел собеситься дальше, пока не получил оффер в Клауд на 420 и в Тинек на 450 на руки
Сейчас я, конечно, отдельно посчитал бы сколько раз открывают ленту, сколько новых постов появляется и сколько трафика жрут картинки
И сразу бы написал на доске: обычные авторы это push модель, знаменитости это pull при чтении. А в быстрой памяти только айдишники постов и порядок выдачи, сами картинки отдельно
И только после этого выбирал бы базы и способ шардирования