fa
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