Встречается на собеседованиях • сегодня

Как создать ленту для социальной сети

Для создания ленты в соцсети можно использовать пагинацию и кеширование. Вот пример на Django с DRF:

python
from django.core.paginator import Paginator
from rest_framework.response import Response
from rest_framework.decorators import api_view

@api_view(['GET'])
def feed(request):
    page = request.GET.get('page', 1)
    per_page = 20
    
    # Получаем посты (например, от друзей или подписок)
    posts = Post.objects.filter(
        user__in=request.user.following.all()
    ).order_by('-created_at')
    
    paginator = Paginator(posts, per_page)
    page_obj = paginator.get_page(page)
    
    serializer = PostSerializer(page_obj.object_list, many=True)
    return Response({
        'posts': serializer.data,
        'has_next': page_obj.has_next()
    })

Ключевые моменты:

  1. Используйте пагинацию для разбивки на страницы
  2. Фильтруйте посты по релевантности (подписки, друзья)
  3. Сортируйте по дате (новые сначала)
  4. Возвращайте флаг has_next для бесконечной ленты
  5. Для оптимизации можно добавить кеширование (Redis) и предварительную загрузку

Для больших нагрузок рассмотрите подходы:

  • Курсорная пагинация вместо page-based
  • Чанкованная загрузка контента
  • Оптимизированные запросы с select_related/prefetch_related
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы