Библиотека собеса по PHP | вопросы с собеседований
3.14K subscribers
214 photos
7 videos
159 links
Вопросы с собеседований по PHP и ответы на них.

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

Учиться у нас: clc.to/5JWKxA

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
🎮 Планы на выходные: соберите ИИ-агента в нашей новой игре!

Запустили интерактивную аркаду, где вы на практике поймете, как устроены агентные системы.

Юзеры бомбят в чате, тикеты горят, вам нужно спасать прод 🤓. Выстраивайте граф агента, подключайте узлы (RAG, CRM, Guardrails) и принимайте решения на развилках, чтобы бот не сливал данные.


Какие навыки проверите:

- Архитектура: сборка графов на LangGraph;
- Компоненты: интеграция LLM, RAG и памяти;
- Безопасность: настройка Guardrails и отладка ошибок;
- Стейт: логика на сложных развилках.

Бонус: Больше баллов — выше скидка на обучение!

Наш новый поток стартует 14 июля. При покупке курса вы забираете еще 2 любых курса Академии в подарок!

Протестируйте свою инженерную логику и заберите максимальную скидку на обучение.

👉 Сыграть в аркаду и выбить скидку
🎬 Как ИИ ускоряет разработку и где ломаются архитектуры

Мы провели открытый вебинар, где разобрали реальные боли проектирования автономных систем. Ольга Лукьянова на практическом кейсе показала, как использовать ИИ-ассистентов для реальных задач. Вы просили запись встречи — она уже в открытом доступе!

Что внутри:

— Как с помощью ИИ быстрее разбираться в незнакомом коде и готовить пулл-реквесты;
— Критерии выбора между одним агентом и мультиагентной системой;
— Разбор популярных архитектурных ошибок и ограничений современных ИИ;
— Практические рекомендации по проектированию и внедрению облачных агентов.

👉 Посмотреть полную запись можно тут:
VK
YouTube

🚀 Хотите пойти дальше открытого вебинара? Если вы готовы перейти от простых промптов к проектированию надежных, отказоустойчивых ИИ-систем, которые не сливают бюджет компании на API, приходите на курс AgentOps. Поток уже стартовал, но двери еще приоткрыты!

👉 Успеть на курс AgentOps
✔️ 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) . '…';
}
}


🔹 Задачи

— Объяснить, почему эмодзи/иероглифы в превью бьются в «кракозябры»
— Объяснить, почему один и тот же текст то проходит валидацию, то нет, и как это расходится с лимитом колонки в БД
— Исправить и валидатор, и превью

Ставьте → 🔥 если нравится формат. Если нет → 🌚

💬 Решения пишите в комменты под спойлер — сравним подходы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍1
Как устроены сессии и что такое session fixation?

Сессия — серверное хранилище состояния между запросами; клиенту отдаётся только идентификатор, обычно в куке PHPSESSID. По умолчанию данные лежат в файлах, но их можно вынести в Redis или БД через session handler.

Session fixation — процесс, когда атакующий навязывает жертве заранее известный session id.

Защита — session_regenerate_id(true) при смене уровня привилегий, в первую очередь сразу после логина.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👏1
🔥 Открытое занятие по AgentOps — курс стартовал!

Сегодня в 19:00 по МСК пройдет первое занятие нового потока, на которое может прийти каждый. Оцените пользу нашего подхода на ретрансляции урока в VK!

👨‍💻 Спикер: Андрей Носов

Тема: Архитектура управления: state machine для AI-агентов

Будем разбираться, как использовать State machine в качестве главного оружия против стохастики (непредсказуемости) LLM.

Что в программе:

● State machine: инварианты и терминальные состояния;
● Паттерны маршрутизации: Supervisor, ReAct, Plan-and-Solve;
● Детекция циклов и настройка аварийных выходов;
● Абстракция от модели: как сделать каркас, который переживет смену LLM/провайдера;
● Адаптация графов под ограничения локальных моделей;
● Версионирование графов и миграции стейта.

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

👉 Подписывайтесь на нашу группу ВКонтакте, чтобы не пропустить старт трансляции!
Что такое иммутабельность и Value Object?

Иммутабельный объект не меняет состояние после создания: «изменение» возвращает новый экземпляр.

Value Object — объект без идентичности, равный другому по значению (Money, Email), как правило иммутабельный.
Плюсы: предсказуемость, безопасность при шеринге, отсутствие неожиданных мутаций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1👏1
Что такое DTO и чем он отличается от Entity?

DTO (Data Transfer Object) — простой объект-контейнер для переноса данных между слоями или по сети, без бизнес-логики.

Он делает структуру данных явной и типизированной вместо ассоциативных массивов, удобен для входных и выходных контрактов API.

Отличие от Entity: у DTO нет идентичности и поведения, только данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2👏1
💰 Почему одним Data Scientist платят больше, чем другим?

Дело не только в знании Python и ML-библиотек. Во многих компаниях уровень специалиста оценивают по математической подготовке: теории вероятностей, статистике, линейной алгебре и математическому анализу.

Именно эти знания помогают понимать модели, решать более сложные задачи и претендовать на позиции с более высокой оплатой.

На курсе «Математика для Data Science» вы изучите разделы, которые используются в работе Data Scientist и ML Engineer.

Что вас ждёт:

🔹 40+ видеолекций и 150+ практических заданий на Python
🔹 Проверка домашних работ и обратная связь от преподавателей
🔹 Подготовка к техническим собеседованиям
🔹 Программа от преподавателей ВМК МГУ, НИУ ВШЭ и экспертов индустрии

👉 Записаться на бесплатный демо-урок
Media is too big
VIEW IN TELEGRAM
📹 Из чего на самом деле состоит ИИ-агент?

Прикрепили для вас свежую вырезку из вебинара. Внутри, что прячется под капотом агентных систем: от LLM-ядра до вызова внешних инструментов. Обсуждаем, какими бывают агенты (спойлер: далеко не только автономными) и когда какой подход использовать.

Готовы перейти от видео к практике и собрать свой первый продакшн-кейс?

Прямо сейчас у нас действует акция «3 курса по цене 1»:
🔹 При покупке VIP-тарифа нового потока «Разработка ИИ-агентов» вы получаете в подарок хардкорный курс «AgentOps» + ещё один любой курс Академии на ваш выбор!

🔹 Ваша чистая экономия — 129 000 ₽! Два топовых курса по созданию и контролю агентов обойдутся вам всего в 134 000 ₽ вместо 263 000 ₽. Плюс третий курс бонусом (например, «Математика для AI»).


Сомневаетесь, подойдет ли вам формат? Оставьте заявку и пройдите бесплатный демо-урок, чтобы протестировать платформу перед покупкой.

👉 Пройти демо-урок и забрать 3 курса по цене 1
Расскажите о enum?

Enum — перечисление допустимых значений как полноценный тип. Бывают чистые (pure) и backed с привязанным скалярным значением (int или string).

У backed-enum есть свойство -> value и методы from() / tryFrom().

Enum может содержать методы, константы и реализовывать интерфейсы, но не имеет свойств и не создаётся через new. Заменяет «магические» строковые и числовые константы, давая типобезопасность.
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥2👍1
Чем match отличается от switch?

→ match сравнивает строго (===), является выражением и возвращает значение, не требует break и не имеет проваливания (fall-through).

→ switch сравнивает нестрого (==), ничего не возвращает и проваливается между case, если забыть break.

Если совпадения нет и нет default, match бросит UnhandledMatchError, тогда как switch молча ничего не сделает.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1👏1
🔥 Как перестать слепо доверять ИИ и начать им управлять?

1–2 августа на «ИИ-выходных» вы научитесь проектировать архитектуру автономных AI-агентов и контролировать их работу.

Что будет в вашем портфолио после обучения:

— Вы выйдете с готовым профилем AI-инженера (отлично дополнит ваши LinkedIn и GitHub).
— Освоите связку Python, FastAPI, OpenAI API, Docker и PostgreSQL.
— Соберете полноценный AI-сервис под вашу личную задачу.

Для кого: junior-middle разработчики. Вы пишете на Python, работаете с Git и терминалом (с нуля не подойдет, темп очень быстрый!).

👨‍💻 Спикер: Алексей Жиряков (Сбер, GenAI).

Места строго ограничены!

👉 Изучить программу и занять место
😁1🌚1
Что такое SOLID?

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

▪️ S — Single Responsibility Principle (SRP)
Каждый класс должен иметь одну и только одну причину для изменения.

▪️ O — Open/Closed Principle (OCP)
Сущности должны быть открыты для расширения, но закрыты для модификации.

▪️ L — Liskov Substitution Principle (LSP)
Объекты подклассов должны заменять объекты суперклассов без нарушения логики.

▪️ I — Interface Segregation Principle (ISP)
Лучше иметь несколько специализированных интерфейсов, чем один общий.

▪️ D — Dependency Inversion Principle (DIP)
Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа должны зависеть от абстракций.
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1😁1
✔️ PHP-тест: один запрос кладёт воркеры

CPU одного ядра — в полку на несколько секунд. PHP-FPM воркеры заканчиваются, сайт встаёт. И всё из-за одного поля формы 👇

📦 Задание

Форма регистрации компании. Поле «теги деятельности» — строка вида php, backend, api. Сделали «надёжную» валидацию регуляркой. Работало месяцами. Потом сайт начал периодически зависать на 5–10 секунд, мониторинг показывает 100% CPU на одном ядре, а APM — что время уходит внутри preg_match. Воспроизводится только на определённых вводах от пользователей.
// src/Validation/TagsValidator.php
class TagsValidator
{
private const PATTERN = '/^([a-zA-Z0-9]+\s*,?\s*)+$/';

public function validate(string $tags): bool
{
return (bool) preg_match(self::PATTERN, $tags);
}
}


🔹 Задачи

— Объяснить механизм катастрофического бэктрекинга на этом паттерне
— Привести пример строки, которая «вешает» движок регулярных выражений
— Переписать проверку

Ставьте → 🔥 если нравится формат. Если нет → 🌚

💬 Решения пишите в комменты под спойлер — сравним подходы.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🌚42👍1
🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код?

Мы привыкли общаться с ИИ промптами, но для автономных систем это путь к бесконечным циклам и сливу бюджета. Чтобы убрать хаос, инженеры переходят на Spec-Driven Development (SDD).

Вот как этот подход меняет работу агента на практике:

🔹Контракт вместо текста. Сначала пишется строгая спецификация (JSON-схема/OpenAPI) и автотесты. Агент зажат в рамки интерфейсов, за которые физически не может выйти.
🔹Контроль на шагах. Внутри петли Think-Act-Observe агент сверяет действия со спецификацией.
🔹Саморефлексия. Если ИИ нарушил типы или «додумал» лишнее, тест падает. Агент получает ошибку в контекст и сам правит код, не выходя за рамки ТЗ.

Это лишь база того, как укротить ИИ-разработку. Если вы хотите глубоко внедрить эту методологию, научиться проектировать архитектурные контракты и собирать отказоустойчивые системы —оставляйте заявку на наш новый курс по Spec-Driven Development. Стартуем совсем скоро🙂
💬 Обратная связь

Проверим, сколько среди нас сеньоров. Ваш примерный грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍2610😁5
Зачем нужны WeakReference и WeakMap?

WeakReference хранит ссылку на объект, не мешая сборщику мусора его уничтожить.

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

Применение — кэши и метаданные, привязанные к объектам, без риска утечки памяти из-за вечного удержания ключей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Уже завтра стартует новый поток курса «ИИ-агенты»!

Мы собрали мощнейший состав преподавателей. Учить вас проектировать архитектуру и собирать продакшн-агентов будут инженеры и исследователи из топовых IT-компаний.

Старт уже завтра!

Сомневаетесь, подойдет ли вам программа и подача? Начните с бесплатного демо-урока!

Всего за 2 часа вы заглянете под капот ИИ-агента, поймете, чем мышление модели отличается от ее ответа, и научите систему чинить собственный код. Это идеальный способ протестировать нашу платформу перед покупкой.

🔗 Пройти демо-урок и занять место на курсе