Перейти к содержимому

Паттерны проектирования

Вопросов: 36 из 24 собеседований. Источник указан в заголовке группы.

  • Какую архитектурную гибкость дает использование интерфейсов между слоями приложения?
  • Что такое асинхронное API. Для чего нужно и как реализуется?
  • Что такое синглтон?
  • Как на техническом языке называется «матрешка»?
  • Какие архитектурные паттерны вы использовали в своей практике? Приходилось ли вам реализовывать их самостоятельно и какие задачи они решали?
  • Какие подходы к организации кода используете в проектах?
  • Что такое event sourcing?
  • Что такое CQRS?
  • Как решается проблема дубликатов входящих запросов?
  • Применяли ли у себя паттерн graceful degradation?
  • Рассказать про SOLID, и др. архитектурные паттерны.

Доп. вопросы: как можно хранить историю изменений чтобы была возможность отматывать назад.

  • Что такое сервисы/хэндлеры/репозитории/слои/адаптеры и юзкейсы?
  • Назови принципы SOLID и антипаттерн для каждого из них.
  • Какие виды порождающих паттернов существуют?
  • Какие можете перечислить 3 любых шаблона проектирования (уровня кода)?
  • Каких паттернов и архитектурных подходов вы придерживались?
  • Этот функционал реализован только для gRPC-сервера. Как бы вы перестроили архитектуру, чтобы ту же бизнес-логику можно было переиспользовать для HTTP-эндпоинтов и для консьюмера событий без дублирования кода?
  • Что делать, если нижестоящий сервис начал пятисотить?
  • Как вы реализовывали retry, backoff, circuit breaker при вызовах между сервисами?
  • Как вы определяете оптимальные тайм-ауты для серверных вызовов? Какие стратегии применяете на клиенте?
  • Какую стратегию пагинации вы бы выбрали для ленты с бесконечной прокруткой?
  • Знаком ли ты с антипаттерном God Function?
  • Для чего нужен rate-limiter?
  • Расскажи про GoF паттерны
  • Расскажи про cqrs

Wildberries / WB - 5 (Команда спецпроектов) — 1 кв 2025

Заголовок раздела «Wildberries / WB - 5 (Команда спецпроектов) — 1 кв 2025»
  • Какие есть стратегии джойнов (не про left, right). Как оптимально сджойнить маленькую и большую таблицу? (переключить стратегию джойнов).
  • Какие есть основные стратегии масштабирования баз данных?
  • Что такое анемичная модель?
  • Пользовался ли доменными событиями?
  • Какие еще практики дизайна использовал?
  • Какие паттерны проектирования использовал?
  • Что такое паттерн «синглтон»? Для чего он нужен и как его правильно реализовать в Go?
  • Предположим, sync.Once отсутствует в стандартной библиотеке. Как вы реализуете потокобезопасный синглтон с ленивой инициализацией, используя другие примитивы из пакета sync?
  • Какие паттерны проектирования из классической книги «банды четырех» вы применяли на практике в Go? Приведите примеры.
  • Сделайте решение расширяемым: если через месяц добавятся kind = "bicycle" и kind = "house", изменения в коде должны быть минимальными и локализованными.