TGViewer
DevFM DevFM @devfm · 3.05K subscribers
Post #535 1.98K
Ответ на задачу — проектируем динамическую фильтрацию

В прошлом посте описана задача, которую мы предлагали на собеседовании для разработчиков. Задача была такая: спроектировать фильтрацию результатов поиска товаров с учётом ограничений.

В задачах на проектирование чего-либо интервьюера интересует не столько сам ответ, сколько ход ваших мыслей. Вы можете не дойти до правильного ответа, или дойти с подсказкой. Рассмотрим потенциальные решения задачи и покритикуем их:
💡 Давайте присылать все данные на фронт и фильтровать там.
🚫 1кк записей передавать нецелесообразно. Более того, даже хранить фильтры на фронте не выйдет, так как они динамические и определяются конкретной выборкой. В любом случае, фильтровать должен бекенд.

💡В postgres можно спроектировать схему для хранения фильтров в связке со списком товаров, к которым эти фильтры можно применять.
🚫 Здесь не стали приводить конкретики, но отметим, что при таком подходе будут проблемы с динамическим обновлением счетчиков. А ещё такое решение несёт сложную ментальную нагрузку на разработчика.

💡Можно взять Elasticsearch или Manticore Search и подобное реализовать там.
❓По задаче требуется остаться с PostgreSQL и не вводить доп сущностей. Если можно поднять эластик, решение нормальное и можно обсудить детали.

💡Сведём задачу фильтрации к фасетному поиску. Для этого каждую единицу товара мы характеризуем набором конкретных признаков.
✅ В базе данных нам нужно завести отдельную колонку, где для каждого товара явно хранить набор его признаков и их значений. Для агрегации, подсчета количества и быстрого поиска по выбранным фильтрам можно использовать мощный механизм полнотекстового поиска.

Пример реализации такого решения с использованием полнотекстового поиска в postgres приведен в статье Faceted search using PostgreSQL full text search.

#database #skills #резюме
Telegram DevFM Задача на собеседовании — проектируем динамическую фильтрацию Проводили собеседование на разработчика. Задачу для технической части взяли из практики, то есть это прямо то, чем в будущем предстояло заниматься собеседуемому, разве что с упрощением предметной…
  • 🔥 17
  • 👍 8
  • ⚡ 3
  • 😁 1
More from @devfm
  1. Sep 19, 2026ММММолния! В последнем обновлении Claude Code добавили поддержку AGENTS.md! Это настоящий…
  2. Sep 17, 2026Код пишется быстро, а што с ревью Я как-то уже бухтел на тему код-ревью. Но мир так быстро…
  3. Sep 15, 2026Не пишите аислопный текст, пожалуйста-препожалуйста. Код супер активно пишется агентами и…
  4. Sep 14, 2026Что там с кодинговыми агентами Я тут немного пропустил, а JetBrains поделились результатам…
  5. Sep 13, 2026Что OpenAI советует при работе с GPT-6 Astra Относительно недавно вышла GPT-6 Astra, и я р…
  6. Sep 7, 2026Фича из 2015-го для агентов в 2026-м Можно годами пользоваться гитом и ничего не знать про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →