На вопрос про создание инстаграмма можно ответить КАК УГОДНО.
Вы должны понимать, что НЕТ ОДНОГО ПРАВИЛЬНОГО ОТВЕТА. Не ждите от меня такого ответа. Никто не ответит. Каждому собеседующему важны те или иные аспекты этого вопроса.
Вот например меня интересует вопрос про устройство базы данных. Потому как самое слабое место там. Меня интересует алгоритмы и структуры данных, благодаря которым приложение работает мгновенно.
Как такое огромное количество информации загружается так быстро?
Каким образом нужно хранить картинки, чтобы их можно было легко показывать огромному количеству людей?
Конечно, все это хранится в базах данных, которые, в свою очередь, хранят все на жестких дисках в огромных датацентах фейсбука меты по всему миру. Но пробовали ли вы поскролить галерею телефона, в котором несколько тысяч фотографий? Даже новые айфоны могут немного подвиснуть. Становится понятно, что "просто сохранить" фотографии - не выход.
На самом деле проблема состоит в том, что если данные лежат на жестком диске, то считывать их ВСЕХ в оперативную память очень долго.
А если надо найти нужно фотографию пользователя, на которого вы подписаны, надо ее сначала на диске найти. И вот тут происходит вся магия - было бы круто уметь быстро находить нужные данные на жестком диске, делая как можно меньше считываний.
Что делать?
Эту задачу помогает решать структура данных под названием Б-дерево.
Б-дерево – n-арное дерево, в узлах которого база данных хранит некоторую служебную информацию, позволяющую все быстро искать.
N-арность значит, что у каждого узла дерева может быть до n потомков, которые тоже хранят какие-то данные. Вся эта служебная информация называется индексом, вы могли встречать понятия "индексация" или "построить индекс". Благодаря индексации база данных позволяет быстро грузить нашу ленту в инстаграмме.
Вот так оказывается, что без Б-дерева и ленту полистать не получится. Более подробно про Б-дерево можно почитать на вики.
А вы как думали? Все так просто?