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

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

الذهاب إلى القناة على Telegram

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

إظهار المزيد
3 114
المشتركون
-324 ساعات
-47 أيام
-1530 أيام
أرشيف المشاركات
Зачем нужен yield вместо return с массивом? yield превращает функцию в генератор. Вместо того чтобы собрать все данные в массив и вернуть целиком, функция отдаёт значения по одному, по мере запроса. Главный профит — память. Если обрабатываешь CSV на 500 тысяч строк, с массивом ты загрузишь всё в RAM разом. С генератором в памяти живёт одна строка. Генератор реализует интерфейс Iterator, с ним работает foreach. Минус — нельзя перемотать назад, обойти можно только один раз. Используй когда данных много, порядок линейный, и случайный доступ не нужен.

🧑‍💻 Учиться агентной разработке — у тех, кто уже внедряет её в бигтехе Курс «ИИ для разработчиков» ведут практики из ведущи
🧑‍💻 Учиться агентной разработке — у тех, кто уже внедряет её в бигтехе Курс «ИИ для разработчиков» ведут практики из ведущих российских IT-компаний 🔥 🔵 Они прошли путь от первых экспериментов с AI до рабочих процессов, в которых агенты помогают команде писать код, готовить PR и быстрее доводить задачи до продакшена. В ближайшее время познакомим вас с каждым преподавателем. Программа курса — по ссылке 🎹 🏃‍♀️ Proglib Academy

🤷‍♂️ Что важнее в хорошем курсе: программа или люди, которые её создают? У Proglib Academy вышел пост о том, на каком опыте построен новый курс по AI для разработчиков 🦴

Что такое preloading в PHP и какие у него ограничения? Preloading (PHP 7.4+) — механизм, при котором PHP загружает файлы в память один раз при старте PHP-FPM и держит их там на весь срок жизни процесса. Последующие запросы используют уже скомпилированный opcode без обращения к диску. ▪️ Что даёт — Устраняет overhead на парсинг и компиляцию горячих классов — Реальный прирост на больших фреймворках (Laravel, Symfony) — 10–30% к RPS ▪️ Ограничения — При любом изменении файла нужен рестарт PHP-FPM, иначе изменения не подхватятся. — Preloaded классы нельзя пересоздать или переопределить в рантайме — Если preloaded класс зависит от другого файла, тот тоже должен быть preloaded, иначе ошибка при старте — Не работает с circular dependencies между файлами — Работает только с OPcache

PHP использует подсчёт ссылок для сборки мусора. В каком случае это может не сработать? PHP уничтожает объект, когда его refcount падает до 0. Но есть исключение — циклические ссылки: объект A ссылается на B, B — на A. Каждый держит счётчик ≥ 1, хотя оба недостижимы из кода. Для этого существует Cycle Collector (zval garbage collector). Он запускается не сразу, а когда буфер подозрительных zval заполняется (~10 000 узлов по умолчанию). До его запуска объекты в цикле живут в памяти, даже если логически мертвы.

🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат. 1️⃣ способ — просто по
🫡 Один и тот же запрос к AI можно выполнить двумя способами — и получить совершенно разный результат. 1️⃣ способ — просто попросить написать код. Модель может сгенерировать рабочее решение, но именно на этапе проверки часто всплывают пропущенные edge case’ы, ошибки обработки или проблемы с тестами. 2️⃣ способ — дать агенту цикл Think → Act → Observe. Он не останавливается после первой попытки: планирует действия, проверяет результат и, если находит ошибку, исправляет её и пробует снова. Самое интересное, что разница здесь не столько в модели ❕ Claude, GPT или другая LLM могут быть одинаковыми. Разницу создаёт инженерная система вокруг них. 📅 Именно это разберём 23 июля в 19:00 (МСК) на бесплатном вебинаре с Алексеем Жиряковым (Executive Director в Сбере, GenAI Data Platform, ex-CTO Stream и KION). На живом демо покажем, как один и тот же запрос работает без агентной системы и с ней 🔥 🔗 Регистрация 🏃‍♀️ Proglib Academy

Чем отличается composer.json от composer.lock? composer.json описывает зависимости с диапазонами версий (^, ~) — то, что допустимо. composer.lock фиксирует точные установленные версии и их хэши — то, что реально стоит. composer install ставит по lock (воспроизводимость на всех машинах и в CI), composer update пересчитывает версии в рамках json и переписывает lock.

🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться! Мы только начали, а первый практический воркшо
🔥 Курс «Разработка ИИ-агентов» стартовал, но вы еще успеваете присоединиться! Мы только начали, а первый практический воркшоп пройдет только 23 июля. До этого времени вы спокойно успеете изучить материалы и нагнать группу. 💼 Главная фишка: финальный проект в портфолио:
В финальном проекте вы сможете выбрать один из двух вариантов: реализовать свою идею или решить задачу от партнера курса — крупной российской финтех-компании. Вы будете работать с датасетом, построенным по реальным сценариям, получите бизнес-контекст и продовые ограничения. В результате соберете AI-агента, который станет сильным проектом для портфолио.
🎁 Упомяните менеджеру специальное предложение «3 курса по цене 1»: Берете VIP-тариф — получаете курс «Разработка ИИ-агентов», хардкорный «AgentOps» и ещё один курс на выбор. Выгода 129.000 ₽! Двери потока вот-вот закроются окончательно. Успейте забрать стек курсов и начать работу над реальным проектом 🔗 Занять место и забрать 3 курса

🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт По этому поводу мы решили выложить закрытую запись одно
🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт По этому поводу мы решили выложить закрытую запись одного из уроков из программы. Найти её в поиске YouTube нельзя — она доступна только по ссылке и всем, кто будет на курсе. Внутри глубокий разбор LLM от Алексея Яндутова (Senior ML-инженер, развивал ответы «Алисы» и «Нейро» в Яндексе). Учимся получать точный результат без галлюцинаций. Что внутри урока:
- Устройство LLM. - Рабочие шаблоны промптов (Persona, Chain-of-Thought и др.). - Разбор реального кейса Яндекса. Как автоматизировать разметку, обойти качество людей на 5% и срезать косты на 60%.
После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning. 👉Смотреть закрытый урок на YouTube Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться. 🔗 Занять место на курсе

Как влить комит в текущую ветку? Чтобы влить коммит в текущую ветку, используется команда git cherry-pick. Эта команда позволяет перенести один или несколько коммитов из другой ветки или из истории на текущую ветку. Вот как это делается: 1. Определите хэш коммита, который вы хотите влить:
git log
Найдите нужный коммит и скопируйте его хэш. 2. Выполните команду cherry-pick:
git cherry-pick 
Если вам нужно влить несколько коммитов, вы можете указать диапазон:
git cherry-pick ^..
Или перечислить несколько хэшей:
git cherry-pick   
После выполнения cherry-pick, изменения из выбранных коммитов будут добавлены в вашу текущую ветку.

🚀 Уже завтра стартует новый поток курса «ИИ-агенты»! Мы собрали мощнейший состав преподавателей. Учить вас проектировать арх
🚀 Уже завтра стартует новый поток курса «ИИ-агенты»! Мы собрали мощнейший состав преподавателей. Учить вас проектировать архитектуру и собирать продакшн-агентов будут инженеры и исследователи из топовых IT-компаний. Старт уже завтра! Сомневаетесь, подойдет ли вам программа и подача? Начните с бесплатного демо-урока! Всего за 2 часа вы заглянете под капот ИИ-агента, поймете, чем мышление модели отличается от ее ответа, и научите систему чинить собственный код. Это идеальный способ протестировать нашу платформу перед покупкой. 🔗 Пройти демо-урок и занять место на курсе

Зачем нужны WeakReference и WeakMap? WeakReference хранит ссылку на объект, не мешая сборщику мусора его уничтожить. WeakMap — словарь, где ключами выступают объекты, удерживаемые слабо: как только объект больше нигде не используется, запись из карты исчезает автоматически. Применение — кэши и метаданные, привязанные к объектам, без риска утечки памяти из-за вечного удержания ключей.

💬 Обратная связь Проверим, сколько среди нас сеньоров. Ваш примерный грейд: 🔥 — Senior 👍🏼 — Middle ❤️ — Junior 😁 — Ещё учусь

🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код? Мы привыкли общаться с ИИ промптами, но для автоном
🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код? Мы привыкли общаться с ИИ промптами, но для автономных систем это путь к бесконечным циклам и сливу бюджета. Чтобы убрать хаос, инженеры переходят на Spec-Driven Development (SDD). Вот как этот подход меняет работу агента на практике: 🔹Контракт вместо текста. Сначала пишется строгая спецификация (JSON-схема/OpenAPI) и автотесты. Агент зажат в рамки интерфейсов, за которые физически не может выйти. 🔹Контроль на шагах. Внутри петли Think-Act-Observe агент сверяет действия со спецификацией. 🔹Саморефлексия. Если ИИ нарушил типы или «додумал» лишнее, тест падает. Агент получает ошибку в контекст и сам правит код, не выходя за рамки ТЗ. Это лишь база того, как укротить ИИ-разработку. Если вы хотите глубоко внедрить эту методологию, научиться проектировать архитектурные контракты и собирать отказоустойчивые системы —оставляйте заявку на наш новый курс по Spec-Driven Development. Стартуем совсем скоро🙂

✔️ 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);
    }
}
🔹 Задачи — Объяснить механизм катастрофического бэктрекинга на этом паттерне — Привести пример строки, которая «вешает» движок регулярных выражений — Переписать проверку Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.

Что такое 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) Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа должны зависеть от абстракций.

🔥 Как перестать слепо доверять ИИ и начать им управлять? 1–2 августа на «ИИ-выходных» вы научитесь проектировать архитектуру
🔥 Как перестать слепо доверять ИИ и начать им управлять? 1–2 августа на «ИИ-выходных» вы научитесь проектировать архитектуру автономных AI-агентов и контролировать их работу. Что будет в вашем портфолио после обучения: — Вы выйдете с готовым профилем AI-инженера (отлично дополнит ваши LinkedIn и GitHub). — Освоите связку Python, FastAPI, OpenAI API, Docker и PostgreSQL. — Соберете полноценный AI-сервис под вашу личную задачу. Для кого: junior-middle разработчики. Вы пишете на Python, работаете с Git и терминалом (с нуля не подойдет, темп очень быстрый!). 👨‍💻 Спикер: Алексей Жиряков (Сбер, GenAI). Места строго ограничены! 👉 Изучить программу и занять место

Чем match отличается от switch? → match сравнивает строго (===), является выражением и возвращает значение, не требует break и не имеет проваливания (fall-through). → switch сравнивает нестрого (==), ничего не возвращает и проваливается между case, если забыть break. Если совпадения нет и нет default, match бросит UnhandledMatchError, тогда как switch молча ничего не сделает.

Расскажите о enum? Enum — перечисление допустимых значений как полноценный тип. Бывают чистые (pure) и backed с привязанным скалярным значением (int или string). У backed-enum есть свойство -> value и методы from() / tryFrom(). Enum может содержать методы, константы и реализовывать интерфейсы, но не имеет свойств и не создаётся через new. Заменяет «магические» строковые и числовые константы, давая типобезопасность.

📹 Из чего на самом деле состоит ИИ-агент? Прикрепили для вас свежую вырезку из вебинара. Внутри, что прячется под капотом агентных систем: от LLM-ядра до вызова внешних инструментов. Обсуждаем, какими бывают агенты (спойлер: далеко не только автономными) и когда какой подход использовать. Готовы перейти от видео к практике и собрать свой первый продакшн-кейс? Прямо сейчас у нас действует акция «3 курса по цене 1»:
🔹 При покупке VIP-тарифа нового потока «Разработка ИИ-агентов» вы получаете в подарок хардкорный курс «AgentOps» + ещё один любой курс Академии на ваш выбор! 🔹 Ваша чистая экономия — 129 000 ₽! Два топовых курса по созданию и контролю агентов обойдутся вам всего в 134 000 ₽ вместо 263 000 ₽. Плюс третий курс бонусом (например, «Математика для AI»).
Сомневаетесь, подойдет ли вам формат? Оставьте заявку и пройдите бесплатный демо-урок, чтобы протестировать платформу перед покупкой. 👉 Пройти демо-урок и забрать 3 курса по цене 1