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

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

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

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

إظهار المزيد
3 105
المشتركون
-124 ساعات
لا توجد بيانات7 أيام
-1830 أيام
جذب المشتركين
سبتمبر '26
سبتمبر '26
+13
في 0 قنوات
أغسطس '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 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
15 سبتمبر+5
14 سبتمبر0
13 سبتمبر0
12 سبتمبر0
11 سبتمبر+3
10 سبتمبر0
09 سبتمبر+1
08 سبتمبر0
07 سبتمبر+1
06 سبتمبر+1
05 سبتمبر0
04 سبتمبر+1
03 سبتمبر0
02 سبتمبر0
01 سبتمبر+1
منشورات القناة
Расскажите о паттерне Bridge Bridge — это структурный паттерн, который разделяет абстракцию и реализацию так, чтобы они могли изменяться независимо друг от друга. Простыми словами: вместо одной толстой иерархии наследования вы разбиваете её на две независимые — «что делать» и «как делать» — и связываете их композицией. ▪️ Когда использовать — Есть две ортогональные оси изменения (тип × реализация) — Хотите избежать «взрыва» подклассов — Нужно переключать реализацию в runtime ▪️ Bridge vs Strategy — Strategy: меняет один алгоритм внутри объекта — Bridge: разделяет целые иерархии абстракции и реализации ▪️ Минус Усложняет код, если оси изменения всего одна — тогда достаточно обычного полиморфизма.

2
😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потер
😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода. 🔘 Поговорим о том: — когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge. ✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после. ⬇️ 18 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок 💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре. 🔗 Зарегистрироваться на вебинар⁠
259
3
Какова разница между «cookie» и «session»? В PHP «cookie» и «session» — это механизмы управления состоянием в веб-приложениях, но они служат немного разным целям: Cookie: Куки — это небольшие фрагменты данных, которые отправляются с веб-сервера на веб-браузер пользователя и хранятся локально на компьютере пользователя. Куки обычно используются для хранения информации, специфичной для пользователя, такой как учетные данные для входа, предпочтения или элементы корзины покупок. Они часто используются для отслеживания поведения пользователя и персонализации пользовательского опыта. У куки может быть время истечения, после которого они автоматически удаляются из браузера пользователя. Session: Сессия — это способ хранения информации о пользователе на протяжении нескольких страниц или запросов в рамках одного посещения веб-сайта. В отличие от куки, которые хранятся на компьютере пользователя, данные сессии хранятся на сервере. Сессии обычно используются для поддержания аутентификации пользователя и для хранения временной информации, связанной с взаимодействием пользователя с веб-сайтом. Сессии часто реализуются с помощью уникального идентификатора, называемого идентификатором сессии, который передается между сервером и клиентом для ассоциирования последующих запросов с той же сессией.
582
4
👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах. Через пару недель появляется зада
👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science. 🔜 Именно поэтому подписка на обучение многим оказывается удобнее отдельных курсов. Можно спокойно переключаться между темами, когда меняются задачи, а не покупать новую программу каждый раз. В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков. Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки 😎 🔗 Узнать подробнее 🏃‍♀️ Proglib Academy
481
5
Один доступ вместо вечного выбора между «нужно для работы» и «давно хотелось изучить» 👇
535
6
❓ Объясни разницу между 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
7
❓ Использует ли 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
8
🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами Но цель одна: перейти
🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности ✔️ На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка. ⚡️ Предзапись на осенний поток уже открыта 🏃‍♀️ Proglib Academy
512
9
Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇
598
10
❓ Что такое 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
11
❓ Отличие Docker от виртуальной машины? Основное отличие в уровне виртуализации. Виртуальная машина виртуализирует железо целиком: у неё есть собственная ОС со всеми компонентами, гипервизор, ядро. Это тяжеловесно — VM может весить гигабайты и стартовать минутами. Docker виртуализирует только уровень приложения. Контейнеры используют ядро хостовой ОС, изолируясь через namespaces и cgroups. Они легковесны — образ может весить десятки мегабайт, запускается за секунды. 🔹 На практике это означает — Docker быстрее и экономнее по ресурсам. — VM даёт полную изоляцию и может запускать разные ОС на одном хосте. — Для микросервисов обычно выбирают Docker, для полной изоляции окружений — VM.
690
12
У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓ Что делаете с таким легаси? ❤️ Не трогаю:
У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓ Что делаете с таким легаси? ❤️ Не трогаю: работает — и ладно 👍 Переписываю с нуля и надеюсь на лучшее 🔥 Сначала покрываю тестами, потом рефакторю по частям 👾 У нас такого нет — честно-честно На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов. До 31 июля действует скидка и бессрочный доступ к материалам. 🔗 Занять место со скидкой 🏃‍♀️ Proglib Academy
584
13
Когда название файла уже само по себе считается техническим долгом 👇
630
14
❓ Что такое DDD? DDD (Domain-Driven Design) — подход к проектированию, при котором структура кода отражает структуру бизнес-домена. Основные строительные блоки: → Entity — объект с уникальной идентичностью. Два объекта с одним ID — один и тот же объект, даже если остальные поля разные. Пример: User, Order. → Value Object — объект без идентичности, определяется своими атрибутами. Иммутабелен. Пример: Money(100, 'USD'), Email('alice@example.com'). Два Money(100, 'USD') — одно и то же значение. → Aggregate — кластер связанных сущностей с одним корнем (Aggregate Root). Все изменения внутри агрегата — только через корень. Граница транзакции = граница агрегата. Пример: Order содержит OrderItems, но только Order — корень. → Domain Service — бизнес-операция, которая не принадлежит ни одной сущности. Пример: TransferService(fromAccount, toAccount, amount). → Repository — абстракция доступа к хранилищу для агрегатов. Один репозиторий — один агрегат. → Domain Event — факт, произошедший в домене. OrderPlaced, PaymentFailed. → Bounded Context — явная граница, внутри которой модель имеет единое значение. User в контексте Billing ≠ User в контексте Shipping.
789
15
📈 Скоро фраза «умею пользоваться AI» в резюме будет звучать так же странно, как сегодня «умею пользоваться Git» Это просто с
📈 Скоро фраза «умею пользоваться AI» в резюме будет звучать так же странно, как сегодня «умею пользоваться Git» Это просто станет частью профессии. А вот умение встроить AI в процесс разработки так, чтобы он действительно ускорял работу команды, останется конкурентным преимуществом 💡 🔜 На курсе «ИИ для разработчиков» участники работают со своими проектами и учатся делать AI частью ежедневной разработки: планировать задачи, писать код, проверять изменения, готовить PR и автоматизировать рутину. До конца июля действует специальная цена — 59 990 ₽ вместо 79 990 ₽ 🥳 И получить бессрочный доступ ко всем материалам курса. 🔗 Посмотреть, как устроен курс 🏃‍♀️ Proglib Academy
526
16
🙂 До конца июля сохраняются две приятные вещи: специальная цена и бессрочный доступ к материалам курса. Подробнее — в посте 👇
667
17
❓ Что делает паттерн Repository? Repository инкапсулирует доступ к хранилищу и отдаёт доменные объекты, пряча SQL/ORM за интерфейсом-«коллекцией» (find, save, delete). Доменный код зависит от интерфейса репозитория, а не от конкретной БД, реализацию можно подменить, например на in-memory для тестов.
811
18
❓ Что такое Fibers в PHP 8.1 и чем они отличаются от async/await в других языках? Fiber — примитив для кооперативной многозадачности. Позволяет приостановить выполнение функции в произвольной точке через Fiber::suspend() и возобновить позже, передав значение обратно. Главное отличие от async/await: Fibers не заражают сигнатуры. В JS как только где-то await, вся цепочка выше должна быть async. В PHP Fiber::suspend() можно вызвать на любой глубине стека, не меняя сигнатуры вызывающих функций. Второе отличие: Fibers это низкоуровневый примитив, event loop в них не встроен. Сами по себе они не дают параллелизма — это строительный блок, поверх которого ReactPHP, Revolt и Amp строят настоящую неблокирующую конкурентность.
981
19
😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой
😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой код команда пропустит на ревью. Для человека это естественная часть работы. У Claude Code этого контекста по умолчанию нет — только задача и инструкции, которые ему дали. Поэтому в большой команде недостаточно просто выбрать хорошую модель. ❗️ Нужно ещё объяснить ей, как у вас устроена разработка: какие подходы приняты, что обязательно проверять и по каким правилам принимать решения. 🗓 23 июля в 19:00 МСК поговорим об этом на бесплатном вебинаре с Алексеем Жиряковым — он Executive Director в Сбере, руководит GenAI Data Platform, и с этой проблемой сталкивался не раз 🔥 Покажет живое демо, разберём, как встроить AI в процесс разработки так, чтобы он реально помогал, а не добавлял ещё один повод для споров на ревью. 🔗 Занять место на вебинаре 🏃‍♀️ Proglib Academy
548
20
❓ Ты деплоишь новую версию. Половина серверов на старом коде, половина на новом. Как не сломать пользователей? Три зоны ответственности — три правила: 🔹 БД — только аддитивные миграции. Не удалять, не переименовывать колонки в том же деплое. Сначала добавь — потом убери старое отдельным деплоем. 🔹 API — не меняй формат ответа, только расширяй. Сломал контракт — версионируй (/v2/). 🔹 Очереди — не меняй свойства Job-классов, только добавляй. Старый воркер может достать джоб от нового кода. Главное: feature flags вместо big bang деплоя. Код едет отдельно от включения фичи.
668