Библиотека собеса по PHP | вопросы с собеседований
3.15K subscribers
195 photos
6 videos
137 links
Вопросы с собеседований по PHP и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9f3affba

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Расскажите о паттерне Proxy

Proxy — это структурный паттерн, который подставляет вместо реального объекта объект-заместитель, контролирующий доступ к оригиналу.

Простыми словами: прокси выглядит как оригинал, но перед вызовом может проверить права, закэшировать результат или создать объект лениво.

▪️ Виды прокси

Protection Proxy — контроль доступа (Spring Security)
Caching Proxy — кэширование результатов
Lazy Proxy — отложенная инициализация (Hibernate lazy loading)
Remote Proxy — доступ к удалённому объекту (RMI)

▪️ Proxy vs Decorator

— Proxy: контролирует жизненный цикл и доступ к объекту
— Decorator: добавляет поведение, не контролируя доступ

▪️ Минус

Увеличивает задержку отклика; усложняет отладку при нескольких слоях проксирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Расскажите о паттерне Observer

Observer — это поведенческий паттерн, который создаёт механизм подписки, позволяя одним объектам следить за изменениями в других.

Простыми словами: как подписка на Telegram-канал — когда выходит новый пост, все подписчики получают уведомление автоматически.

▪️ Когда использовать

Изменение одного объекта требует обновления других, и набор зависимых объектов заранее неизвестен
Хотите избежать жёсткой связи между компонентами

▪️ Минус

Подписчики оповещаются в непредсказуемом порядке; утечки памяти, если забыть отписаться.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1🤔1
Расскажите о паттерне Command

Command — это поведенческий паттерн, который превращает запрос в отдельный объект, содержащий всю информацию о запросе.

Простыми словами: вместо прямого вызова метода вы создаёте объект-команду, которую можно передать, поставить в очередь, отменить или повторить.

▪️ Когда использовать

Нужен undo/redo
Команды нужно ставить в очередь, логировать или выполнять отложенно
Хотите отделить объект, инициирующий операцию, от объекта, выполняющего её

▪️ Минус

Усложняет код: каждая операция — отдельный класс.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1😁1
Расскажите о паттерне State

State — это поведенческий паттерн, который позволяет объекту менять своё поведение при изменении внутреннего состояния. Извне кажется, что объект сменил свой класс.

Простыми словами: банкомат ведёт себя по-разному в зависимости от состояния: ожидание карты → ввод PIN → выбор операции. Одна и та же кнопка делает разные вещи.

▪️ Когда использовать

Объект ведёт себя по-разному в зависимости от состояния
Много if/switch по статусу — признак, что нужен State
Количество состояний может расти

▪️ State vs Strategy

— Strategy: клиент выбирает алгоритм
— State: объект сам переключает поведение при смене состояния

▪️ Минус

Избыточен, если состояний всего 2–3 и переходы простые.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
💬 Обратная связь

Последние посты все по единой теме паттернов.
Удобно ли, если посты будут иногда такими едиными блоками?

🔥 — Удобно
👍🏼 — Без разницы
😁 — Скука смертная, хочется разнообразия
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍42😁2
Расскажите о паттерне Chain of Responsibility

Chain of Responsibility — это поведенческий паттерн, который позволяет передавать запрос по цепочке обработчиков. Каждый обработчик решает: обработать запрос или передать дальше.

Простыми словами: как эскалация тикета: L1 → L2 → L3 саппорт. Каждый уровень либо решает проблему, либо передаёт выше.

▪️ Когда использовать

Набор обработчиков и их порядок определяется динамически
Запрос должен быть обработан одним из нескольких объектов, но каким — неизвестно заранее

▪️ Минус

Запрос может пройти всю цепочку и не быть обработанным; сложно отладить длинную цепочку.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1👏1
Расскажите о паттерне Iterator

Iterator — это поведенческий паттерн, который даёт возможность последовательно обходить элементы коллекции, не раскрывая её внутреннее устройство.

Простыми словами: вы проходите по элементам через «окошко» (hasNext / next), не зная — это массив, дерево или база данных за ним.

▪️ Когда использовать

Нужен единый способ обхода для разных структур данных
Хотите скрыть сложность обхода (дерево, граф, пагинация)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Расскажите о паттерне Mediator

Mediator — это поведенческий паттерн, который убирает прямые связи между компонентами, заставляя их общаться через посредника.

Простыми словами: диспетчер в аэропорту — самолёты не переговариваются друг с другом, а общаются через башню управления.

▪️ Когда использовать

Компоненты слишком сильно связаны друг с другом
Хотите переиспользовать компоненты в других контекстах

▪️ Минус

Медиатор может стать God Object, сконцентрировав слишком много логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1👏1
Расскажите о паттерне Memento

Memento — это поведенческий паттерн, который позволяет сохранять и восстанавливать прежнее состояние объекта, не нарушая инкапсуляцию.

Простыми словами: Ctrl+Z в любом редакторе — где-то хранится снимок предыдущего состояния, к которому можно откатиться.

▪️ Когда использовать

Нужна функция отмены/отката (undo)
Нужно сохранять контрольные точки состояния
Прямой доступ к полям объекта нарушил бы инкапсуляцию

▪️ Memento vs Command

— Command: хранит действие и умеет его отменить
— Memento: хранит полный снимок состояния

▪️ Минус

Может потреблять много памяти, если состояние объекта большое и снимки создаются часто.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1
Расскажите о паттерне Visitor

Visitor — это поведенческий паттерн, который позволяет добавлять новые операции к объектам, не изменяя их классы.

Простыми словами: налоговый инспектор (visitor) приходит в разные компании и выполняет проверку — компании не меняются, а новые виды проверок добавляются легко.

▪️ Когда использовать

Нужно выполнить операцию над группой разнородных объектов
Новые операции добавляются часто, а новые типы элементов — редко

▪️ Минус

Visitor нужно обновлять при добавлении нового типа элемента — нарушается Open/Closed Principle для элементов.
Please open Telegram to view this post
VIEW IN TELEGRAM
До 31 мая можно забрать любой курс Proglib Academy со скидкой 40%

Если давно хотели прокачаться в Python, ML, алгоритмах или AI-агентах, сейчас самое время выбрать программу и начать обучение по сниженной цене.

🎁 Разработка AI-агентов от 49.000 ₽ (вместо 69.000 ₽)

Практический курс по разработке AI-агентов для автоматизации задач, работы и собственных проектов

🎁 Курс AgentOps129.000 ₽ (вместо 149.000 ₽)

Для разработчиков и LLM-инженеров, которые хотят внедрять AI-логику в бэкенд и сохранять стабильность сервиса.

🎁 Математика для разработки AI-моделей 23.990 ₽ (вместо 31.990 ₽)

Практическая база по математике для анализа данных, ML и дальнейшего развития в AI.

🎁 Математика для Data Scienceот 29.990 ₽ (вместо 39.990 ₽)

Курс для тех, кто хочет решать задачи, которые дают на собеседованиях на позицию дата-сайентиста в бигтехе.

🎁 ML для старта в Data Science28.990 ₽ (вместо 38.990 ₽)

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

🎁 Основы IT для непрограммистов16.990 ₽ (вместо 28.990 ₽)

Курс для IT-рекрутеров, маркетологов, проджектов, продактов и всех, кто работает с IT, но не пишет код.

🎁 Архитектуры и шаблоны проектирования27.990 ₽ (вместо 37.900 ₽)

Освоите основные паттерны проектирования и прокачаете навыки архитектора программного обеспечения.

🎁 Специалист по ИИ89.000 ₽ (вместо 113.900 ₽)

Курс для тех, кто хочет получить профессию в сфере ИИ, собрать портфолио из 5 проектов и научиться разрабатывать сложных AI-агентов.

🎁 Алгоритмы и структуры данных 33.990 ₽ (вместо 57.990 ₽)

Подготовитесь к алгоритмическим собеседованиям, разберёте структуры данных и научитесь писать более эффективный код.

🎁 Программирование на языке Python27.990 ₽ (вместо 47.390 ₽)

Освоите Python на практике: без сухой теории, с пошаговой прокачкой навыков и итоговым проектом в портфолио.

🙌 Выбирайте курс по ссылке, оставляйте заявку, и менеджер поможет подобрать программу под ваши цели — https://clc.to/SALE40
Расскажите о паттерне Interpreter

Interpreter — это поведенческий паттерн, который определяет грамматику простого языка и интерпретатор для его предложений.

Простыми словами: вы описываете правила «мини-языка» в виде классов, и каждый класс умеет вычислить свою часть выражения. Как калькулятор, который разбирает «3 + 5 * 2».

▪️ Когда использовать

Есть простой язык или набор правил, которые нужно интерпретировать
Грамматика стабильна, но выражений — много

▪️ Минус

Для сложных грамматик дерево классов разрастается и становится неуправляемым — лучше использовать парсер-генераторы (ANTLR).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🥱1
💬 Обратная связь

Текущий уровень сложности вопросов?

🔥 — Слишком просто, хочу сложнее
👍🏼 — В самый раз
❤️ — Иногда сложновато
😁 — Часто не понимаю
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5🔥4😁3
Может ли абстрактный класс содержать частный(private) метод?

Да, в абстрактном классе можно иметь частный метод.

Этот частный метод будет отображаться ТОЛЬКО этому абстрактному классу. Это означает, что он должен будет использоваться каким-либо другим конкретным методом в абстрактном классе.

Дочерние классы не смогут вызвать его напрямую.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
⚡️ Продолжаем знакомить вас с экспертами курса AgentOps!

Сергей Нотевский расскажет, как выстроить FinOps для AI-продуктов: оптимизировать затраты на разработку и продакшен, внедрить model routing, semantic cache и систему алертов для контроля расходов
Эмиль Сатаев разберет Context Engineering: управление контекстом, защиту от prompt injection, работу с длинными контекстами и построение безопасного пайплайна входа для AI-систем
Михаил Бондаревский покажет, как подготовить инфраструктуру для AI-агентов: Docker, sandboxing, streaming, docker-compose и воспроизводимое окружение для разработки и продакшена
Мурат Хажгериев расскажет про Enterprise Integrations & MCP: когда MCP действительно нужен, как подключать внешние сервисы и реализовывать интеграции с OAuth2 delegation
Герман Сабиров разберет Governance & Compliance для AI-систем: data flow, audit logs, требования 152-ФЗ, локализацию данных и построение compliance-подхода на уровне архитектуры

Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.

👉 Изучить обновленную программу AgentOps и занять место.
😁1