ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

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

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

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

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

إظهار المزيد
3 072
المشتركون
لا توجد بيانات24 ساعات
-107 أيام
-1930 أيام
جذب المشتركين
أكتوبر '26
أكتوبر '26
+19
في 2 قنوات
سبتمبر '26
+24
في 0 قنوات
Get PRO
أغسطس '26
+14
في 1 قنوات
Get PRO
يوليو '26
+21
في 2 قنوات
Get PRO
يونيو '26
+25
في 2 قنوات
Get PRO
مايو '26
+34
في 2 قنوات
Get PRO
أبريل '26
+41
في 2 قنوات
Get PRO
مارس '26
+48
في 2 قنوات
Get PRO
فبراير '26
+49
في 1 قنوات
Get PRO
يناير '26
+48
في 1 قنوات
Get PRO
ديسمبر '25
+28
في 0 قنوات
Get PRO
نوفمبر '25
+31
في 0 قنوات
Get PRO
أكتوبر '25
+26
في 0 قنوات
Get PRO
سبتمبر '25
+12
في 0 قنوات
Get PRO
أغسطس '25
+11
في 2 قنوات
Get PRO
يوليو '25
+20
في 0 قنوات
Get PRO
يونيو '25
+42
في 1 قنوات
Get PRO
مايو '25
+45
في 0 قنوات
Get PRO
أبريل '25
+52
في 1 قنوات
Get PRO
مارس '25
+124
في 52 قنوات
Get PRO
فبراير '25
+73
في 31 قنوات
Get PRO
يناير '25
+114
في 35 قنوات
Get PRO
ديسمبر '24
+94
في 35 قنوات
Get PRO
نوفمبر '24
+169
في 37 قنوات
Get PRO
أكتوبر '24
+156
في 35 قنوات
Get PRO
سبتمبر '24
+152
في 35 قنوات
Get PRO
أغسطس '24
+209
في 35 قنوات
Get PRO
يوليو '24
+146
في 35 قنوات
Get PRO
يونيو '24
+242
في 30 قنوات
Get PRO
مايو '24
+129
في 35 قنوات
Get PRO
أبريل '24
+1 082
في 36 قنوات
Get PRO
مارس '24
+303
في 30 قنوات
Get PRO
فبراير '24
+254
في 32 قنوات
Get PRO
يناير '24
+216
في 25 قنوات
Get PRO
ديسمبر '23
+102
في 25 قنوات
Get PRO
نوفمبر '23
+1 306
في 4 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
26 أكتوبر0
25 أكتوبر+1
24 أكتوبر0
23 أكتوبر0
22 أكتوبر+1
21 أكتوبر+1
20 أكتوبر+1
19 أكتوبر0
18 أكتوبر0
17 أكتوبر+1
16 أكتوبر0
15 أكتوبر+3
14 أكتوبر0
13 أكتوبر+3
12 أكتوبر0
11 أكتوبر+2
10 أكتوبر0
09 أكتوبر+1
08 أكتوبر0
07 أكتوبر+1
06 أكتوبر0
05 أكتوبر+2
04 أكتوبر0
03 أكتوبر+1
02 أكتوبر+1
01 أكتوبر0
منشورات القناة
❓ Почему переименование параметра может сломать вызовы с именованными аргументами? Ответ: Потому что с PHP 8 имя параметра используется при связывании именованного аргумента с параметром функции. Допустим, есть функция findUser(int $userId), а клиент вызывает findUser(userId: 42). Если переименовать параметр в $id, позиционный вызов findUser(42) продолжит работать. Но прежний именованный вызов завершится ошибкой Unknown named parameter $userId, если функция не принимает этот аргумент через вариативный параметр. Порядок и тип параметра при этом могли вообще не измениться. Ломается именно обращение по старому имени. Это касается и переопределения методов: язык может разрешать другие имена параметров в реализации, но именованный вызов будет зависеть от фактически выбранного метода. Поэтому имена параметров публичного API стоит учитывать при оценке обратной совместимости, а не считать их исключительно внутренней деталью. Подробнее в документации PHP 🐸 Библиотека собеса по PHP

2
📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше. В Proglib Academy действует акция: покупаешь один кур
📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше. В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок. Например, можно совместить два направления по работе с ИИ: 💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений. 📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета. А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога. Акция действует до 31 октября включительно ⏳ ⏮️ Пора прокачать свой стек
347
3
❓ Почему try вокруг создания генератора может не поймать исключение из его тела? Ответ: Потому что вызов функции-генератора создаёт объект Generator, а выполнение её тела начинается при запуске или обходе генератора. Представьте, что функция содержит проверку файла, затем yield. Вы обернули только получение генератора в try, а foreach разместили после catch. Если проверка файла выбросит исключение при начале обхода, этот catch его уже не перехватит. Даже код, записанный до первого yield, относится к отложенному выполнению тела генератора. Чтобы обработать его исключения, нужно охватить try и ту часть программы, которая запускает или продолжает обход. Но не все ошибки откладываются. Вычисление аргументов и проверка их типов происходят при вызове и могут завершиться ошибкой сразу. Если проверку нужно выполнить именно в момент вызова, можно вынести её в обычную функцию-обёртку, которая после проверки вернёт генератор. Подробнее в документации PHP 🐸 Библиотека собеса по PHP
385
4
❓ Перехватит ли catch (Exception) ошибку TypeError? Ответ: Нет. TypeError не наследуется от Exception — он наследуется от Error. В PHP 7 и новее Exception и Error образуют две отдельные ветки, которые реализуют общий интерфейс Throwable. Поэтому catch (Exception $e) перехватит исключения из ветки Exception, но пропустит TypeError. Если обработчику действительно нужно принимать обе категории, используют catch (Throwable $e). Если требуется обработать только ошибку типов, можно явно указать catch (TypeError $e). Например, строгая проверка аргумента обнаружила несовместимый тип. Обработчик Exception не сработает, а обработчик TypeError или Throwable — сработает. При этом Throwable не превращает любой сбой процесса в перехватываемое исключение. И перехват ошибки типов не означает, что её стоит скрыть: часто она указывает на дефект программы, который нужно исправить. Подробнее в документации PHP 🐸 Библиотека собеса по PHP
419
5
❓ Почему callable можно использовать для параметра, но нельзя для типа свойства? Ответ: Потому что PHP не поддерживает callable как тип свойства. Объявление public callable $handler недопустимо, хотя параметр функции с типом callable разрешён. Одна из причин ограничения — возможность вызова зависит от контекста доступа. Например, массив с объектом и именем его private-метода может быть вызываемым внутри класса, но недоступным для вызова снаружи. Поэтому недостаточно однажды проверить значение при записи в свойство и считать, что оно будет вызываемым в любом месте программы. Для хранения обработчика можно использовать свойство типа Closure. Переданный callable при необходимости преобразуют через Closure::fromCallable(). Полученное замыкание сохраняет возможность вызова с учётом контекста, в котором оно было создано. С PHP 8.1 доступен и синтаксис создания вызываемого объекта первого класса, например $object->method(...). Правила видимости при его создании всё равно действуют. Подробнее в документации PHP 🐸 Библиотека собеса по PHP
455
6
😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция! До 31 октября в Proglib Academy можно выбрать два курса
😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция! До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один. Например, можно совместить: 💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений. Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥 Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога. Акция действует до 31 октября включительно ⏳ ⏬ Собрать свой учебный билд
475
7
❓ В каком файле strict_types определяет проверку аргументов функции? Ответ: Для проверки скалярных аргументов обычного прямого вызова важен файл, из которого вызывают функцию. Допустим, функция sum(int $value) объявлена в файле с declare(strict_types=1). Если вызвать sum('42') из другого файла без строгого режима, числовая строка может быть преобразована в int. Одного strict_types рядом с объявлением недостаточно, чтобы сделать все внешние вызовы строгими. Если же strict_types включён в вызывающем файле, такая строка приведёт к TypeError. При этом int разрешено передавать в параметр float даже в строгом режиме. Для возвращаемого значения правило другое: режим определяется файлом, где объявлена функция. Строгая типизация не заменяет проверку входных данных и не меняет правила операторов сравнения. Здесь речь именно о проверке объявленных скалярных типов. Подробнее в документации PHP 🐸 Библиотека собеса по PHP
524
8
SensitiveParameter скрывает пароль во всех логах? Параметр функции помечен атрибутом SensitiveParameter. Внутри функция записала его значение в прикладной лог, затем выбросила исключение. Что атрибут скроет? Ответ: Значение аргумента в stack trace, но не самостоятельную запись в прикладной лог. В трассировке оно представлено SensitiveParameterValue. В проверенном примере значение demo-secret осталось в файле лога. Атрибут появился в PHP 8.2, он не шифрует переменную и не очищает все места, куда код её передал. Если выводите аргументы исключения, отдельно проверяйте настройку zend.exception_ignore_args. Назначение SensitiveParameter
736
9
👀 Как вы смотрите видео? Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране? Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить. 🕰️ Опрос займёт около 3 минут. В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео. 🔗 Поделиться опытом 🐸 Библиотека программиста
625
10
Почему modify не изменил DateTimeImmutable? Объект хранит 2026-10-15 в UTC. Вызвали modify('+1 day'), но возвращённое значение не сохранили. Какая дата останется в исходном объекте? Ответ: 2026-10-15. Метод возвращает новый объект, исходный DateTimeImmutable не меняется. Если сохранить результат вызова, новый объект будет содержать 2026-10-16. Это отличается от изменяемого DateTime: одинаковое название метода не означает одинаковую семантику изменения. Передача исходного объекта в другую функцию сама по себе не заменит ссылку на новый результат. Контракт DateTimeImmutable
848
11
❓ Расскажите о паттерне Bridge Bridge — это структурный паттерн, который разделяет абстракцию и реализацию так, чтобы они могли изменяться независимо друг от друга. Простыми словами: вместо одной толстой иерархии наследования вы разбиваете её на две независимые — «что делать» и «как делать» — и связываете их композицией. ▪️ Когда использовать — Есть две ортогональные оси изменения (тип × реализация) — Хотите избежать «взрыва» подклассов — Нужно переключать реализацию в runtime ▪️ Bridge vs Strategy — Strategy: меняет один алгоритм внутри объекта — Bridge: разделяет целые иерархии абстракции и реализации ▪️ Минус Усложняет код, если оси изменения всего одна — тогда достаточно обычного полиморфизма.
560
12
😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потер
😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода. 🔘 Поговорим о том: — когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge. ✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после. ⬇️ 18 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок 💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре. 🔗 Зарегистрироваться на вебинар⁠
501
13
Какова разница между «cookie» и «session»? В PHP «cookie» и «session» — это механизмы управления состоянием в веб-приложениях, но они служат немного разным целям: Cookie: Куки — это небольшие фрагменты данных, которые отправляются с веб-сервера на веб-браузер пользователя и хранятся локально на компьютере пользователя. Куки обычно используются для хранения информации, специфичной для пользователя, такой как учетные данные для входа, предпочтения или элементы корзины покупок. Они часто используются для отслеживания поведения пользователя и персонализации пользовательского опыта. У куки может быть время истечения, после которого они автоматически удаляются из браузера пользователя. Session: Сессия — это способ хранения информации о пользователе на протяжении нескольких страниц или запросов в рамках одного посещения веб-сайта. В отличие от куки, которые хранятся на компьютере пользователя, данные сессии хранятся на сервере. Сессии обычно используются для поддержания аутентификации пользователя и для хранения временной информации, связанной с взаимодействием пользователя с веб-сайтом. Сессии часто реализуются с помощью уникального идентификатора, называемого идентификатором сессии, который передается между сервером и клиентом для ассоциирования последующих запросов с той же сессией.
582
14
👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах. Через пару недель появляется зада
👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science. 🔜 Именно поэтому подписка на обучение многим оказывается удобнее отдельных курсов. Можно спокойно переключаться между темами, когда меняются задачи, а не покупать новую программу каждый раз. В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков. Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки 😎 🔗 Узнать подробнее 🏃‍♀️ Proglib Academy
481
15
Один доступ вместо вечного выбора между «нужно для работы» и «давно хотелось изучить» 👇
535
16
❓ Объясни разницу между Gate и Policy в Laravel? Оба инструмента для авторизации, но с разной областью применения. Gate — простые одиночные проверки, не привязанные к модели: // Определяем в AuthServiceProvider Gate::define('access-admin-panel', function (User $user) { return $user->is_admin; }); // Проверяем if (Gate::allows('access-admin-panel')) { ... } // или в контроллере $this->authorize('access-admin-panel'); Policy — класс с набором правил для конкретной модели: // php artisan make:policy PostPolicy --model=Post class PostPolicy { public function update(User $user, Post $post): bool { return $user->id === $post->user_id; } public function delete(User $user, Post $post): bool { return $user->id === $post->user_id || $user->is_admin; } } // Использование $this->authorize('update', $post); Правило выбора — Нет модели → Gate — Есть модель, несколько действий → Policy
765
17
❓ Использует ли Laravel Symfony? Да, Laravel широко использует компоненты фреймворка Symfony. Laravel, популярный PHP-фреймворк, использует несколько компонентов Symfony, чтобы предоставить надежную и богатую функциями основу для создания веб-приложений. Некоторые из компонентов Symfony, используемых в Laravel, включают: HTTP Foundation: этот компонент используется для обработки HTTP-запросов и ответов. Консоль (Console): командный интерфейс Artisan в Laravel построен с использованием компонента консоли Symfony. Диспетчер событий (Event Dispatcher): система обработки событий в Laravel работает на основе компонента диспетчера событий Symfony. Файловая система (Filesystem): компонент файловой системы Symfony используется для операций с файлами. Внедрение зависимостей (Dependency Injection): Laravel использует контейнер внедрения зависимостей Symfony для управления зависимостями.
781
18
🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами Но цель одна: перейти
🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности ✔️ На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка. ⚡️ Предзапись на осенний поток уже открыта 🏃‍♀️ Proglib Academy
512
19
Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇
598
20
❓ Что такое Idempotency в контексте HTTP и очередей? Как обеспечить? Идемпотентность — повторный вызов с теми же параметрами даёт тот же результат без дополнительных побочных эффектов. HTTP методы: GET, HEAD, PUT, DELETE — идемпотентны по спецификации. POST — нет. Для POST-запросов применяется Idempotency Key: клиент генерирует UUID и передаёт в заголовке. Сервер кэширует результат под этим ключом. При повторном запросе возвращает закэшированный ответ, не выполняя операцию повторно. В очередях: воркер может упасть после обработки задачи, но до подтверждения (ack). Брокер переотправит задачу. Обработчик должен быть идемпотентным — повторная обработка одной и той же задачи не должна создавать дублей. Техники обеспечения идемпотентности: — Хранить processed_ids и проверять перед обработкой — Использовать INSERT IGNORE / ON DUPLICATE KEY в MySQL — Использовать upsert (INSERT ... ON CONFLICT DO NOTHING в PostgreSQL) — Проверять состояние перед изменением ("уже оплачен — пропустить") Идемпотентность — обязательное требование для любого обработчика в распределённой системе с at-least-once delivery.
640