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

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

Статистика

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

Последний пост
4 авг.
Последнее чтение
18:03
Постов за неделю
0
Всего постов
21
Тип
открытый
Язык
русский
Категория
Технологии (по похожим)
В каталоге с
12 авг.
Подписчики
3 122
−2 за 4 дн.
Сутки
0
0,00%
Неделя
 
Месяц
 
Просмотров на пост
663
21 постов
Вовлечённость
21,2%
к подписчикам
Постов в день
0,0
всего 21
Упоминаний
2
каналов
Охват размещения
оценка
1/24сутки в ленте
576
1/48двое суток
660
1/72трое суток
711

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • Какова разница между «cookie» и «session»? В PHP «cookie» и «session» — это механизмы управления состоянием в веб-приложениях, но они служат немного разным целям: Cookie: Куки — это небольшие фрагменты данных, которые отправляются с веб-сервера на веб-браузер пользователя и хранятся локально на компьютере пользователя. Куки обычно используются для хранения информации, специфичной для пользователя, такой как учетные данные для входа, предпочтения или элементы корзины покупок. Они часто используются для отслеживания поведения пользователя и персонализации пользовательского опыта. У куки может быть время истечения, после которого они автоматически удаляются из браузера пользователя. Session: Сессия — это способ хранения информации о пользователе на протяжении нескольких страниц или запросов в рамках одного посещения веб-сайта. В отличие от куки, которые хранятся на компьютере пользователя, данные сессии хранятся на сервере. Сессии обычно используются для поддержания аутентификации пользователя и для хранения временной информации, связанной с взаимодействием пользователя с веб-сайтом. Сессии часто реализуются с помощью уникального идентификатора, называемого идентификатором сессии, который передается между сервером и клиентом для ассоциирования последующих запросов с той же сессией.

  • 4 авг.473из proglib_academy

    👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science. 🔜 Именно поэтому подписка на обучение многим оказывается удобнее отдельных курсов. Можно спокойно переключаться между темами, когда меняются задачи, а не покупать новую программу каждый раз. В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков. Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки 😎 🔗 Узнать подробнее 🏃‍♀️ Proglib Academy

  • Один доступ вместо вечного выбора между «нужно для работы» и «давно хотелось изучить» 👇

  • ❓ Объясни разницу между 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

  • ❓ Использует ли 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 для управления зависимостями.

  • 30 июл.508из proglib_academy

    🎯 У разработчика, DevOps-инженера и техлида разные причины задуматься о системной работе с AI-агентами Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности ✔️ На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка. ⚡️ Предзапись на осенний поток уже открыта 🏃‍♀️ Proglib Academy

  • Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇

  • ❓ Что такое 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.

  • ❓ Отличие Docker от виртуальной машины? Основное отличие в уровне виртуализации. Виртуальная машина виртуализирует железо целиком: у неё есть собственная ОС со всеми компонентами, гипервизор, ядро. Это тяжеловесно — VM может весить гигабайты и стартовать минутами. Docker виртуализирует только уровень приложения. Контейнеры используют ядро хостовой ОС, изолируясь через namespaces и cgroups. Они легковесны — образ может весить десятки мегабайт, запускается за секунды. 🔹 На практике это означает — Docker быстрее и экономнее по ресурсам. — VM даёт полную изоляцию и может запускать разные ОС на одном хосте. — Для микросервисов обычно выбирают Docker, для полной изоляции окружений — VM.

  • 27 июл.5815из proglib_academy

    У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓ Что делаете с таким легаси? ❤️ Не трогаю: работает — и ладно 👍 Переписываю с нуля и надеюсь на лучшее 🔥 Сначала покрываю тестами, потом рефакторю по частям 👾 У нас такого нет — честно-честно На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов. До 31 июля действует скидка и бессрочный доступ к материалам. 🔗 Занять место со скидкой 🏃‍♀️ Proglib Academy

  • Когда название файла уже само по себе считается техническим долгом 👇

  • ❓ Что такое 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.

  • 24 июл.5254из proglib_academy

    📈 Скоро фраза «умею пользоваться AI» в резюме будет звучать так же странно, как сегодня «умею пользоваться Git» Это просто станет частью профессии. А вот умение встроить AI в процесс разработки так, чтобы он действительно ускорял работу команды, останется конкурентным преимуществом 💡 🔜 На курсе «ИИ для разработчиков» участники работают со своими проектами и учатся делать AI частью ежедневной разработки: планировать задачи, писать код, проверять изменения, готовить PR и автоматизировать рутину. До конца июля действует специальная цена — 59 990 ₽ вместо 79 990 ₽ 🥳 И получить бессрочный доступ ко всем материалам курса. 🔗 Посмотреть, как устроен курс 🏃‍♀️ Proglib Academy

  • 🙂 До конца июля сохраняются две приятные вещи: специальная цена и бессрочный доступ к материалам курса. Подробнее — в посте 👇

  • ❓ Что делает паттерн Repository? Repository инкапсулирует доступ к хранилищу и отдаёт доменные объекты, пряча SQL/ORM за интерфейсом-«коллекцией» (find, save, delete). Доменный код зависит от интерфейса репозитория, а не от конкретной БД, реализацию можно подменить, например на in-memory для тестов.

  • ❓ Что такое Fibers в PHP 8.1 и чем они отличаются от async/await в других языках? Fiber — примитив для кооперативной многозадачности. Позволяет приостановить выполнение функции в произвольной точке через Fiber::suspend() и возобновить позже, передав значение обратно. Главное отличие от async/await: Fibers не заражают сигнатуры. В JS как только где-то await, вся цепочка выше должна быть async. В PHP Fiber::suspend() можно вызвать на любой глубине стека, не меняя сигнатуры вызывающих функций. Второе отличие: Fibers это низкоуровневый примитив, event loop в них не встроен. Сами по себе они не дают параллелизма — это строительный блок, поверх которого ReactPHP, Revolt и Amp строят настоящую неблокирующую конкурентность.

  • 22 июл.54812из proglib_academy

    😸 Каждый разработчик подходит к задаче со своим опытом: помнит прошлые решения, знает ограничения проекта и понимает, какой код команда пропустит на ревью. Для человека это естественная часть работы. У Claude Code этого контекста по умолчанию нет — только задача и инструкции, которые ему дали. Поэтому в большой команде недостаточно просто выбрать хорошую модель. ❗️ Нужно ещё объяснить ей, как у вас устроена разработка: какие подходы приняты, что обязательно проверять и по каким правилам принимать решения. 🗓 23 июля в 19:00 МСК поговорим об этом на бесплатном вебинаре с Алексеем Жиряковым — он Executive Director в Сбере, руководит GenAI Data Platform, и с этой проблемой сталкивался не раз 🔥 Покажет живое демо, разберём, как встроить AI в процесс разработки так, чтобы он реально помогал, а не добавлял ещё один повод для споров на ревью. 🔗 Занять место на вебинаре 🏃‍♀️ Proglib Academy

  • ❓ Ты деплоишь новую версию. Половина серверов на старом коде, половина на новом. Как не сломать пользователей? Три зоны ответственности — три правила: 🔹 БД — только аддитивные миграции. Не удалять, не переименовывать колонки в том же деплое. Сначала добавь — потом убери старое отдельным деплоем. 🔹 API — не меняй формат ответа, только расширяй. Сломал контракт — версионируй (/v2/). 🔹 Очереди — не меняй свойства Job-классов, только добавляй. Старый воркер может достать джоб от нового кода. Главное: feature flags вместо big bang деплоя. Код едет отдельно от включения фичи.

  • ❓ Чем PDO::FETCH_ASSOC отличается от PDO::FETCH_OBJ на низком уровне? ​В PDO существуют различные режимы выборки данных, определяемые константами, такими как PDO::FETCH_ASSOC и PDO::FETCH_OBJ. Они влияют на то, в каком формате будет возвращена строка из результирующего набора при выполнении запроса.​ PDO::FETCH_ASSOC: при использовании этого режима каждая строка возвращается в виде ассоциативного массива, где ключами являются названия столбцов. Это позволяет обращаться к значениям столбцов по их именам. PDO::FETCH_OBJ: в этом режиме каждая строка возвращается как объект анонимного класса, где свойства соответствуют названиям столбцов. Доступ к данным осуществляется через свойства объекта. 🔹 Низкоуровневые различия: На низком уровне основное различие между этими режимами заключается в типе возвращаемой структуры данных. 🔸 PDO::FETCH_ASSOC: возвращает ассоциативный массив (array), где ключами являются строки (имена столбцов), а значениями — соответствующие данные.​ 🔸 PDO::FETCH_OBJ: возвращает объект (object) стандартного класса (stdClass), где свойства объекта соответствуют именам столбцов.

  • ❓ Что такое PSR? PSR (PHP Standards Recommendations) — набор стандартов от PHP-FIG, которые обеспечивают совместимость кода между проектами и пакетами. Ключевые стандарты: • PSR-1 / PSR-12 — стиль кода (отступы, имена классов, методов) • PSR-4 — автозагрузка: пространство имён → путь к файлу • PSR-3 — интерфейс логгера (LoggerInterface) • PSR-7 — HTTP-сообщения (Request / Response) • PSR-11 — контейнер зависимостей (ContainerInterface) • PSR-15 — HTTP middleware

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