es
Feedback
Библиотека собеса по PHP | вопросы с собеседований

Библиотека собеса по PHP | вопросы с собеседований

Ir al canal en Telegram

Вопросы с собеседований по PHP и ответы на них. По рекламе: @proglib_adv Учиться у нас: clc.to/5JWKxA Для обратной связи: @proglibrary_feeedback_bot

Mostrar más
3 114
Suscriptores
-324 horas
-67 días
-1930 días
Archivo de publicaciones
💰 Почему одним Data Scientist платят больше, чем другим? Дело не только в знании Python и ML-библиотек. Во многих компаниях
💰 Почему одним Data Scientist платят больше, чем другим? Дело не только в знании Python и ML-библиотек. Во многих компаниях уровень специалиста оценивают по математической подготовке: теории вероятностей, статистике, линейной алгебре и математическому анализу. Именно эти знания помогают понимать модели, решать более сложные задачи и претендовать на позиции с более высокой оплатой. На курсе «Математика для Data Science» вы изучите разделы, которые используются в работе Data Scientist и ML Engineer. Что вас ждёт: 🔹 40+ видеолекций и 150+ практических заданий на Python 🔹 Проверка домашних работ и обратная связь от преподавателей 🔹 Подготовка к техническим собеседованиям 🔹 Программа от преподавателей ВМК МГУ, НИУ ВШЭ и экспертов индустрии 👉 Записаться на бесплатный демо-урок

Что такое DTO и чем он отличается от Entity? DTO (Data Transfer Object) — простой объект-контейнер для переноса данных между слоями или по сети, без бизнес-логики. Он делает структуру данных явной и типизированной вместо ассоциативных массивов, удобен для входных и выходных контрактов API. Отличие от Entity: у DTO нет идентичности и поведения, только данные.

Что такое иммутабельность и Value Object? Иммутабельный объект не меняет состояние после создания: «изменение» возвращает новый экземпляр. Value Object — объект без идентичности, равный другому по значению (Money, Email), как правило иммутабельный. Плюсы: предсказуемость, безопасность при шеринге, отсутствие неожиданных мутаций.

🔥 Открытое занятие по AgentOps — курс стартовал! Сегодня в 19:00 по МСК пройдет первое занятие нового потока, на которое мож
🔥 Открытое занятие по AgentOps — курс стартовал! Сегодня в 19:00 по МСК пройдет первое занятие нового потока, на которое может прийти каждый. Оцените пользу нашего подхода на ретрансляции урока в VK! 👨‍💻 Спикер: Андрей Носов Тема: Архитектура управления: state machine для AI-агентов Будем разбираться, как использовать State machine в качестве главного оружия против стохастики (непредсказуемости) LLM. Что в программе: ● State machine: инварианты и терминальные состояния; ● Паттерны маршрутизации: Supervisor, ReAct, Plan-and-Solve; ● Детекция циклов и настройка аварийных выходов; ● Абстракция от модели: как сделать каркас, который переживет смену LLM/провайдера; ● Адаптация графов под ограничения локальных моделей; ● Версионирование графов и миграции стейта. Результат занятия: Вы поймете, как спроектировать надежный каркас агента с жестким контролем исполнения и переходов. 👉 Подписывайтесь на нашу группу ВКонтакте, чтобы не пропустить старт трансляции!

Как устроены сессии и что такое session fixation? Сессия — серверное хранилище состояния между запросами; клиенту отдаётся только идентификатор, обычно в куке PHPSESSID. По умолчанию данные лежат в файлах, но их можно вынести в Redis или БД через session handler. Session fixation — процесс, когда атакующий навязывает жертве заранее известный session id. Защита — session_regenerate_id(true) при смене уровня привилегий, в первую очередь сразу после логина.

✔️ PHP-тест: комментарий, который рассыпался на «кракозябры» Превью комментария обрывается на половине эмодзи. А валидация то пропускает мусор, то режет нормальный текст 👇 📦 Задание Сервис отзывов. Комментарий — VARCHAR(255) (255 символов в utf8mb4). Валидатор ограничивает длину, сервис делает короткое превью для карточки. Полгода всё работало, пока аудитория была русскоязычной с короткими текстами. После запуска в новых регионах посыпались жалобы: эмодзи и иероглифы в превью превращаются в ?, а форма то ругается на короткий текст, то молча режет данные при сохранении.
// src/Comment/CommentValidator.php
class CommentValidator
{
    private const MAX_LENGTH = 255;

    public function validate(string $text): void
    {
        if (strlen($text) > self::MAX_LENGTH) {
            throw new ValidationException('Слишком длинный комментарий');
        }
    }
}

// src/Comment/CommentPreview.php
class CommentPreview
{
    public function make(string $text): string
    {
        if (strlen($text) <= 100) {
            return $text;
        }

        return substr($text, 0, 100) . '…';
    }
}
🔹 Задачи — Объяснить, почему эмодзи/иероглифы в превью бьются в «кракозябры» — Объяснить, почему один и тот же текст то проходит валидацию, то нет, и как это расходится с лимитом колонки в БД — Исправить и валидатор, и превью Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы

🎬 Как ИИ ускоряет разработку и где ломаются архитектуры Мы провели открытый вебинар, где разобрали реальные боли проектирова
🎬 Как ИИ ускоряет разработку и где ломаются архитектуры Мы провели открытый вебинар, где разобрали реальные боли проектирования автономных систем. Ольга Лукьянова на практическом кейсе показала, как использовать ИИ-ассистентов для реальных задач. Вы просили запись встречи — она уже в открытом доступе! Что внутри: — Как с помощью ИИ быстрее разбираться в незнакомом коде и готовить пулл-реквесты; — Критерии выбора между одним агентом и мультиагентной системой; — Разбор популярных архитектурных ошибок и ограничений современных ИИ; — Практические рекомендации по проектированию и внедрению облачных агентов. 👉 Посмотреть полную запись можно тут:VKYouTube 🚀 Хотите пойти дальше открытого вебинара? Если вы готовы перейти от простых промптов к проектированию надежных, отказоустойчивых ИИ-систем, которые не сливают бюджет компании на API, приходите на курс AgentOps. Поток уже стартовал, но двери еще приоткрыты! 👉 Успеть на курс AgentOps

🎮 Планы на выходные: соберите ИИ-агента в нашей новой игре! Запустили интерактивную аркаду, где вы на практике поймете, как
🎮 Планы на выходные: соберите ИИ-агента в нашей новой игре! Запустили интерактивную аркаду, где вы на практике поймете, как устроены агентные системы.
Юзеры бомбят в чате, тикеты горят, вам нужно спасать прод 🤓. Выстраивайте граф агента, подключайте узлы (RAG, CRM, Guardrails) и принимайте решения на развилках, чтобы бот не сливал данные.
Какие навыки проверите: - Архитектура: сборка графов на LangGraph; - Компоненты: интеграция LLM, RAG и памяти; - Безопасность: настройка Guardrails и отладка ошибок; - Стейт: логика на сложных развилках. Бонус: Больше баллов — выше скидка на обучение! Наш новый поток стартует 14 июля. При покупке курса вы забираете еще 2 любых курса Академии в подарок! Протестируйте свою инженерную логику и заберите максимальную скидку на обучение. 👉 Сыграть в аркаду и выбить скидку

Что такое XSS и как с ним бороться? XSS — внедрение чужого JavaScript в страницу, который исполнится в браузере жертвы (кража кук, действия от её имени). Виды: stored, reflected, DOM-based. Защита: экранирование вывода по контексту (htmlspecialchars для HTML) — именно вывода, а не ввода; заголовок Content-Security-Policy; флаг HttpOnly на сессионной куке, чтобы JS не мог её прочитать.

ОПРОС: Ответьте на пару вопросов и получите промокод на все наши курсы! 🎁 Команда Prоglib.аcаdemy готовит к запуску новые пр
ОПРОС: Ответьте на пару вопросов и получите промокод на все наши курсы! 🎁 Команда Prоglib.аcаdemy готовит к запуску новые продукты, и нам нужна ваша помощь. Мы хотим создавать обучение, которое будет решать ваши реальные карьерные задачи и бить точно в цель. Поделитесь своим опытом и ожиданиями, чтобы мы сделали наши курсы еще полезнее именно для вас! Заполнение анкеты займет буквально 2–3 минуты, а с нас — скидка на любой наш курс! 👉 Пройти опрос в Яндекс Формах и забрать промокод

⚠️ Уже завтра стартует курс AgentOps! Мы собрали на потоке сборную из мастеров IT-рынка. Практики из BigTech научат вас контр
⚠️ Уже завтра стартует курс AgentOps! Мы собрали на потоке сборную из мастеров IT-рынка. Практики из BigTech научат вас контролировать и отлаживать ИИ-агентов, чтобы они работали предсказуемо и не сливали бюджет на API. 🔥 Заберите 3 курса по цене 1:
● При покупке VIP-тарифа (осталось 4 места) нового потока «Разработка ИИ-агентов» получаете в подарок курс «AgentOps» + ещё один любой курс Академии (например, «Математика для разработки AI», чтобы глубже освоить направление). ● Три курса обойдутся вам всего в 134.000 ₽ вместо 263.000 ₽. ● Доступна удобная беспроцентная рассрочка, платеж можно разбить на несколько комфортных частей.
Хотите прокачать свое портфолио продакшн-кейсом, но пока сомневаетесь? Пройдите наш бесплатный демо-урок, чтобы протестировать формат перед покупкой. 👉 Забрать 3 курса по цене 1 и получить демо-урок

Что такое SQL-инъекция и как от неё защититься? SQL-инъекция — это подстановка вредоносного пользовательского ввода в запрос, меняющая его логику. Защита — подготовленные выражения (prepared statements) с привязкой параметров через PDO или mysqli: данные передаются отдельно от текста запроса и не интерпретируются как SQL.

Чем композиция отличается от наследования? Наследование — это отношение «is-a», поведение родителя достаётся подклассу статически на этапе компиляции. Композиция — отношение «has-a», объект делегирует работу вложенным объектам. Проблемы наследования: сильная связанность с деталями реализации родителя (fragile base class), нарушение инкапсуляции, негибкость (только один родитель), лёгкость нарушить принцип Лисков. Композиция более гибкая: поведение можно менять в рантайме (паттерн «Стратегия»), зависимости легко подменять в тестах, нет хрупкой иерархии. Отсюда принцип «предпочитай композицию наследованию». Наследование оправдано при настоящем «is-a» и стабильной иерархии.

🚀 Не уверены, стоит ли переходить на зрелую ИИ-инженерию? Начните с демо-урока! Вот-вот стартует наш курс AgentOps. Если вы
🚀 Не уверены, стоит ли переходить на зрелую ИИ-инженерию? Начните с демо-урока! Вот-вот стартует наш курс AgentOps. Если вы сомневаетесь в формате, просто оставьте заявку и получите бесплатный демо-урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов». Для тех, кто готов мощно прокачать портфолио, прямо сейчас действует предложение «3 любых курса по цене 1»:
— При покупке VIP-тарифа (осталось 4 места) нового потока «ИИ-агенты» вы получаете в подарок доступ к курсу «AgentOps» + ещё один любой курс Академии на выбор — В деньгах это два топовых курса по автоматизации и контролю ИИ всего за 134.000 ₽ вместо 263.000 ₽ 🔥 А за счет третьего курса (например, можно выбрать «Математику») вы соберете мощный стек и освоите целое востребованное направление. — Платеж можно разбить на несколько частей с помощью беспроцентной рассрочки.
👉 Получить демо-урок и зафиксировать спецпредложение 3 в 1

💬 Обратная связь Текущий уровень сложности вопросов? 🔥 — Слишком просто, хочу сложнее 👍🏼 — В самый раз ❤️ — Иногда сложновато 😁 — Часто не понимаю

⭐️ Dream Team 5-го потока: научитесь строить ИИ-агентов у практиков из BigTech 14 июля стартует новый поток курса по разработ
⭐️ Dream Team 5-го потока: научитесь строить ИИ-агентов у практиков из BigTech 14 июля стартует новый поток курса по разработке ИИ-агентов, и в этот раз мы собрали по-настоящему звездный состав менторов. Это эксперты, которые прямо сейчас определяют развитие AI в России: Yandex Cloud, Avito AI Lab, cloud․ru и НИУ ВШЭ. Чтобы ваш вход в ИИ-инженерию был максимально мощным, мы подготовили специальное предложение: до 30 июня при покупке курса по ИИ-агентам вы получаете еще 2 любых курса Академии в подарок! 🔥 Как это работает: вы оставляете заявку на курс по разработке ИИ-агентов и указываете менеджеру ещё два курса, которые хотите забрать бесплатно. 👉Заберите 3 курса по цене 1 на звездном потоке по ИИ-агентам

Что такое идемпотентность и почему она важна? Идемпотентная операция при многократном выполнении даёт тот же результат, что и при однократном. В HTTP идемпотентны GET, PUT, DELETE, а POST — нет. Почему это критично: в распределённых системах сетевые сбои и таймауты приводят к автоматическим повторам (retry). Если операция не идемпотентна — например, «снять 100 рублей» — повтор спишет деньги дважды. Подходы к идемпотентности:идемпотентные ключи (idempotency key) для дедупликации повторных запросов;проектирование операций как «установить состояние X», а не «изменить на дельту»;отслеживание уже обработанных id запросов. Особенно важно для платежей и очередей сообщений с гарантией at-least-once.

✔️ PHP-тест: статус, которого нет в коде Деплоя и релиза ещё не было, а 500-е посыпались сами собой 👇 📦 Задание Интернет-магазин. Поддержка через админку добавила новый статус заказа refunded (возврат). Нужно было для отчётности, в БД просто появилось новое значение. Через час часть страниц «Мои заказы» начала отдавать 500. Падают только заказы, которым проставили новый статус.
// src/Order/OrderStatusLabel.php
class OrderStatusLabel
{
    public function render(string $status): string
    {
        return match ($status) {
            'new'       => 'Новый',
            'paid'      => 'Оплачен',
            'shipped'   => 'Отправлен',
            'delivered' => 'Доставлен',
            'cancelled' => 'Отменён',
        };
    }
}

// src/Order/OrderCard.php
class OrderCard
{
    public function __construct(private readonly OrderStatusLabel $label) {}

    public function build(Order $order): array
    {
        return [
            'id'     => $order->getId(),
            'status' => $this->label->render($order->getStatus()),
        ];
    }
}
🔹 Задачи — Объяснить, чем поведение match тут отличается от switch и почему это привело к 500 — Предложить способ сделать код устойчивым к новым значениям, но НЕ замаскировать реальные баги Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.

🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru Proglib.аcademy вмест
🎬 Где ломаются архитектуры ИИ-агентов и как этого избежать: запись урока от Proglib.Academy и cloud․ru Proglib.аcademy вместе с cloud․ru провели вебинар, где разобрали реальные боли проектирования автономных систем. Вы просили запись встречи — она уже в открытом доступе! Что внутри: — критерии выбора между одним агентом и мультиагентной системой; — разбор популярных архитектурных ошибок; — реальные ограничения современных ИИ-агентов; — практические рекомендации по проектированию агентных систем. 👉 Посмотреть запись можно тут: VKYouTube

✔️ PHP-тест: статус, которого нет в коде Деплоя не было. Релиза не было. А 500-е посыпались сами собой 👇 📦 Задание Интернет-магазин. Поддержка через админку добавила новый статус заказа refunded (возврат) — нужно было для отчётности, в БД просто появилось новое значение. Через час часть страниц «Мои заказы» начала отдавать 500. Падают только заказы, которым проставили новый статус.
// src/Order/OrderStatusLabel.php
class OrderStatusLabel
{
    public function render(string $status): string
    {
        return match ($status) {
            'new'       => 'Новый',
            'paid'      => 'Оплачен',
            'shipped'   => 'Отправлен',
            'delivered' => 'Доставлен',
            'cancelled' => 'Отменён',
        };
    }
}

// src/Order/OrderCard.php
class OrderCard
{
    public function __construct(private readonly OrderStatusLabel $label) {}

    public function build(Order $order): array
    {
        return [
            'id'     => $order->getId(),
            'status' => $this->label->render($order->getStatus()),
        ];
    }
}
🔹 Задачи — Объяснить, чем поведение match тут отличается от switch и почему это привело к 500 — Предложить способ сделать код устойчивым к новым значениям, но НЕ замаскировать реальные баги — Объяснить, когда тут уместен default, а когда правильнее завести enum с исчерпывающей проверкой Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.