PHP | Вопросы собесов
Открыть в Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+pSDoLEZBQRZlNmFi Задачи t.me/+YlYIxUyg8bM4ZmYy Вакансии t.me/+J-DKRUtjUgMxZGNi
Больше2 356
Подписчики
Нет данных24 часа
-27 дней
-1830 день
Архив постов
Аренда VPS/VDS-сервера.
Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Преимущества аренды:
- Выделенные ресурсы без переплаты;
- KVM-виртуализация;
- Быстрые NVMe SSD;
- Соответствие 152-ФЗ, PCI DSS;
- Бесплатная защита от DDoS;
- Управление через панель, API и Terraform;
- Техподдержка 24/7.
Запустите сервер за несколько минут!
Попробовать
#реклама 16+
selectel.ru
О рекламодателе
🤔 Что известно про букву D в SOLID и её связь с интерфейсами?
D означает Dependency Inversion Principle — принцип инверсии зависимостей.
1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня, оба должны зависеть от абстракций.
2. В коде это реализуется через интерфейсы: классы работают с интерфейсами, а не с конкретными реализациями.
3. Это упрощает тестирование и замену модулей без изменения основного кода.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как типы связи реализуются в Larevel?
В Laravel связи между моделями реализуются через Eloquent ORM. Eloquent предоставляет удобные методы для работы с отношениями (relations) между таблицами в базе данных.
🚩Один к одному (`One to One`)
Каждая модель
User имеет один Profile.
class User extends Model
{
public function profile()
{
return $this->hasOne(Profile::class);
}
}
В модели Profile
class Profile extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
Теперь можно получить профиль пользователя так
$user = User::find(1);
$profile = $user->profile; // Получаем профиль пользователя
🟠Один ко многим (`One to Many`)
Каждый Post может иметь много Comment.
В модели Post
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
В модели Comment
class Comment extends Model
{
public function post()
{
return $this->belongsTo(Post::class);
}
}
Теперь можно получить все комментарии к посту:
$post = Post::find(1);
$comments = $post->comments; // Коллекция комментариев
🟠Многие ко многим (`Many to Many`)
Каждый User может подписаться на несколько Role, и наоборот.
В Laravel для связи многие ко многим нужна промежуточная таблица role_user (название должно быть singular_singular в алфавитном порядке).
В модели User
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
}
В модели Role
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}
Теперь можно получить роли пользователя:
$user = User::find(1);
$roles = $user->roles;
Добавить роль:
$user->roles()->attach($roleId);
Удалить роль
$user->roles()->detach($roleId);
Синхронизировать (удалить старые и добавить новые):
$user->roles()->sync([1, 2, 3]);
🟠Связь через другую таблицу (`Has One / Has Many Through`)
Например, у нас есть Country, User, Post. Мы хотим получить все посты в стране.
class Country extends Model
{
public function posts()
{
return $this->hasManyThrough(Post::class, User::class);
}
}
Теперь можно получить все посты страны
$country = Country::find(1);
$posts = $country->posts;
🟠Полиморфные связи (`Polymorphic Relations`)
Позволяет разным моделям использовать одну таблицу для хранения данных.
Пример: у нас есть Post и Video, к которым могут быть Comment
В модели Comment
class Comment extends Model
{
public function commentable()
{
return $this->morphTo();
}
}
В модели Post
class Post extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}
В модели Video
class Video extends Model
{
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
}
Использование
$post = Post::find(1);
$post->comments()->create(['content' => 'Отличный пост!']);
$video = Video::find(1);
$video->comments()->create(['content' => 'Крутое видео!']);
Ставь 👍 и забирай 📚 Базу знаний🤔 Что такое шифрование?
Это процесс преобразования данных в защищённый формат (шифртекст) с использованием алгоритмов и ключей. Оно защищает информацию от несанкционированного доступа.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какая разница между self и this?
self и this используются для ссылки на текущий класс и его экземпляр соответственно, но каждый из них имеет свои особенности и область применения.
🚩this
Используется для обращения к текущему объекту класса. Он позволяет получить доступ к нестатическим свойствам и методам объекта. Является ссылкой на вызываемый объект и используется внутри методов объекта для обращения к его свойствам и методам.
class Car {
public $color = 'red';
public function getColor() {
return $this->color; // Используется $this для доступа к свойству текущего объекта
}
}
$myCar = new Car();
echo $myCar->getColor(); // Выведет 'red'
🚩self
Используется для обращения к текущему классу и применяется в основном для доступа к статическим свойствам и методам класса. Ссылается на класс, в котором она была вызвана, и не требует создания экземпляра объекта для доступа к содержимому.
class Car {
public static $count = 0;
public function __construct() {
self::$count++; // Используется self для доступа к статическому свойству
}
public static function getTotalCars() {
return self::$count; // Обращение к статическому методу или свойству
}
}
$newCar1 = new Car();
$newCar2 = new Car();
echo Car::getTotalCars(); // Выведет '2'
🚩Основные различия
🟠Контекст использования
$this используется для доступа к свойствам и методам текущего объекта экземпляра, тогда как self используется для доступа к статическим свойствам и методам класса.
🟠Статический vs Нестатический
$this нельзя использовать в статических методах, потому что статические методы могут быть вызваны без создания объекта класса. self, напротив, предназначена для использования в статическом контексте.
🟠Привязка
self привязана к классу, в котором она написана, а $this — к объекту, через который вызывается метод.
Ставь 👍 и забирай 📚 Базу знаний🤔 В чем цель кодирования?
Кодирование обеспечивает:
1. Совместимость: преобразование данных в формат, который можно безопасно передавать или хранить.
2. Эффективность передачи: упрощение работы с различными системами и протоколами.
3. Защиту от ошибок: предотвращение искажений данных при передаче через сети.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие виды запросов есть?
В контексте веб-разработки и работы с API, "виды запросов" обычно относятся к HTTP-методам. HTTP-методы — это стандартизированные типы запросов, которые определяют действие, требуемое от веб-сервера. Каждый метод указывает на определённый тип операции над ресурсами. Вот основные методы (виды запросов), используемые в веб-разработке:
🟠GET
Назначение: Запрос содержимого указанного ресурса. GET-запросы должны быть идемпотентными, что означает, что их многократное выполнение приводит к одному и тому же результату и не изменяет состояние сервера.
Пример использования: Запрос веб-страницы или изображения.
🟠POST
Назначение: Отправка данных на сервер для создания нового ресурса. Данные отправляются в теле запроса. POST-запросы не идемпотентны, то есть многократное выполнение может приводить к разным результатам.
Пример использования: Отправка формы на веб-сайте.
🟠PUT
Назначение: Обновление существующего ресурса или создание нового ресурса по указанному URI. В отличие от POST, PUT идемпотентен.
Пример использования: Обновление деталей пользователя.
🟠DELETE
Назначение: Удаление указанного ресурса.
Пример использования: Удаление записи из базы данных.
🟠PATCH
Назначение: Частичное обновление существующего ресурса. PATCH может быть не идемпотентным, в зависимости от того, как он реализован на сервере.
Пример использования: Обновление части данных пользователя, например, смена пароля.
🟠HEAD
Назначение: Аналогичен GET, но сервер возвращает только заголовки ответа без тела. Используется для извлечения метаданных.
Пример использования: Проверка существования ресурса или его последнего обновления.
🟠OPTIONS
Назначение: Определение возможностей веб-сервера или параметров подключения для конкретного ресурса.
Пример использования: Определение поддерживаемых методов HTTP для URL.
🟠TRACE
Назначение: Эхо-запрос. Возвращает в теле ответа полученный запрос. Это может использоваться для диагностики. Из-за соображений безопасности его поддержка на серверах часто отключена.
Пример использования: Отладка веб-запросов.
Ставь 👍 и забирай 📚 Базу знаний
Стань спикером на форуме по Кибербезопасности!
С 30 сентября по 2 октября мы собераем ИБ-сообщество, чтобы честно обсудить настоящее и будущее кибербезопасности. В этом году форум «Global Information Security Days: дни глобальной информационной безопасности» ставит новые рекорды: еще больше участников, еще масштабнее программа и еще круче экспертный состав!
Чувствуете в себе силы выступить на большой сцене? У нас открыт прием заявок для спикеров. Станьте голосом GIS DAYS 2026!
Подать заявку
#реклама 16+
gisdays.ru
О рекламодателе
🤔 Что такое подготовка запросов?
Это запросы, которые компилируются сервером перед выполнением.
1. Они защищают от SQL-инъекций, так как параметры передаются отдельно от запроса.
2. Улучшают производительность, так как один запрос можно выполнить несколько раз с разными данными.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Бизнес в порядке
когда команда на связи, все задачи выполняются, а продажи растут
Работайте в Битрикс24 — бесплатном онлайн-сервисе для бизнеса и совместной работы.
• Мессенджер с чатами, каналы, видеозвонками и нейросетью
• Таск-менеджер с контролем сроков и проектами
• CRM для повышения продаж
• Документы и совместная работа онлайн
• Онлайн-доски вместо офисного флипчарта
• Искусственный интеллект для автоматизации
+10 инструментов для бизнеса в одном сервисе Битрикс24. Это выгоднее, чем платить за кучу приложений отдельно.
Зарегистрироваться
#реклама 16+
bitrix24.ru
О рекламодателе
🤔 Что такое медленный запрос?
Это запрос, выполнение которого занимает больше времени, чем заданный порог.
1. Причины: отсутствие индексов, сложные объединения, большой объём данных.
2. Оптимизация: использование индексов, анализ плана выполнения (EXPLAIN) и уменьшение объёма данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
ИИ стремительно меняет бизнес, людей и организации.
И вместе с ними должно меняться само управление: то, чему учили менеджеров вчера, сегодня работает всё хуже.
19 июня СберУниверситет проведёт форум «Больше чем менеджмент».
Тема — «Переизобретая менеджмент»: что оставить в прошлом, что переизобрести, а что создать с нуля.
На форуме разберем:
- Почему одни компании меняются быстро, а другие теряют темп?
- Как находить и выращивать лидеров будущего?
- Как стать руководителем дополненным ИИ?
Вас ждут TED-выступления лидеров ведущих российских компаний, открытый диалог о личных практиках управления, демонстрации и практика работы с AI от Сбера — от решения простых задач до создания ИИ-агентов и моделирования рабочих сценариев
Формат — онлайн.
Зарегистрироваться
Номер реестровой записи: С502024004938.
#реклама 16+
sberuniversity.ru
О рекламодателе
🤔 Что делает бэкслеш перед глобальными функциями?
Бэкслеш (\) используется для обращения к глобальным функциям или классам, чтобы избежать их переопределения в текущем пространстве имён.
Например, \strlen() вызовет глобальную функцию strlen, а не её версию из текущего namespace.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Обнулите все свои кредиты и долги по госпрограмме!
Долги от 200т.р. Законно по ФЗ127. 0 проигранных дел. Консультация 0₽. Сохраню ипотеку.
Узнать больше
Банкротство влечет негативные последствия, в том числе ограничения на получение кредита и повторное банкротство в течение пяти лет. Предварительно обратитесь к своему кредитору и в МФЦ.
#реклама
spishy-dolg.ru
О рекламодателе
🤔 Чем отличается BacktimeTable от Backtime?
1. BacktimeTable может быть структурой данных или таблицей, используемой для хранения промежуточных результатов в задаче обратного отсчёта или обработки данных.
2. Backtime часто означает сам процесс обратного отсчёта или времени ожидания.
3. Различие зависит от контекста: таблица — для хранения, backtime — для логики.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Боевые роботы — тактическая RPG в стиле sci-fi!
Присоединяйся к битве роботов — начни свою мех-легенду уже сейчас!
Узнать больше
#реклама 16+
yandex.ru
О рекламодателе
🤔 В чем разница кэширования, кодирования, шифрования?
1. Кэширование:
- Сохранение данных для быстрого повторного доступа, уменьшая время загрузки и нагрузку на сервер.
- Пример: сохранение веб-страницы в браузере.
2. Кодирование:
- Преобразование данных в другой формат для удобства передачи или совместимости.
- Пример: Base64 для передачи бинарных данных через текстовые протоколы.
3. Шифрование:
- Защита данных с использованием ключей, чтобы их мог прочитать только авторизованный получатель.
- Пример: AES или RSA для передачи конфиденциальной информации.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Хочешь начать карьеру в ИТ на оплачиваемой стажировке?
Присоединяйся к ИТ-лагерю Т1 для студентов вузов технических и ИТ-специальностей. Теперь в обновлённом формате: ещё больше практики, доступ к платформам Т1, а участие — оплачивается и оформляется как стажировка.
За 2,5 месяца вместе с проектной командой ты пройдешь полный цикл создания ИТ-продукта: от идеи до разработки прототипа и финальной защиты. Превратить идею в проект помогут мастер-классы, общение с экспертами и погружение в процессы Т1.
Направления подготовки:
✅ ручное тестирование;
✅ прикладное администрирование (DevOps);
✅ системный анализ;
✅ фронтенд-разработка (React);
✅ бэкэнд-разработка (Java).
Подай заявку до 30 июня! Старт — в июле.
Узнать больше
#реклама 16+
career.t1.ru
О рекламодателе
🤔 Расскажи про полиморфизм
Полиморфизм — это концепция ООП, которая позволяет объектам разных классов обрабатывать одинаковые сообщения или методы по-разному. Полиморфизм позволяет использовать общий интерфейс для взаимодействия с объектами разных типов, не зная их конкретный класс. Он облегчает расширение и поддержку кода, делая его более гибким и удобным для добавления новых классов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое namespaces
Namespaces в PHP — это способ организации кода для предотвращения конфликтов имен между классами, функциями и константами. Использование пространства имен позволяет создать уникальные идентификаторы, чтобы избежать пересечений между именами в крупных проектах или при использовании сторонних библиотек.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
