ru
Feedback
PHP | Вопросы собесов

PHP | Вопросы собесов

Открыть в Telegram
2 356
Подписчики
Нет данных24 часа
-27 дней
-1830 день
Архив постов
Аренда VPS/VDS-сервера. Виртуальные выделенные серверы в дата-центрах уровня Tier III — 7 готовых конфигураций от 200 ₽/мес.
Аренда 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 октября мы собераем ИБ-сообщество, чтобы честно обсудить на
Стань спикером на форуме по Кибербезопасности! С 30 сентября по 2 октября мы собераем ИБ-сообщество, чтобы честно обсудить настоящее и будущее кибербезопасности. В этом году форум «Global Information Security Days: дни глобальной информационной безопасности» ставит новые рекорды: еще больше участников, еще масштабнее программа и еще круче экспертный состав! Чувствуете в себе силы выступить на большой сцене? У нас открыт прием заявок для спикеров. Станьте голосом GIS DAYS 2026! Подать заявку #реклама 16+ gisdays.ru О рекламодателе

🤔 Что такое подготовка запросов? Это запросы, которые компилируются сервером перед выполнением. 1. Они защищают от SQL-инъекций, так как параметры передаются отдельно от запроса. 2. Улучшают производительность, так как один запрос можно выполнить несколько раз с разными данными. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Бизнес в порядке когда команда на связи, все задачи выполняются, а продажи растут Работайте в Битрикс24 — бесплатном онлайн-с
Бизнес в порядке когда команда на связи, все задачи выполняются, а продажи растут Работайте в Битрикс24 — бесплатном онлайн-сервисе для бизнеса и совместной работы. • Мессенджер с чатами, каналы, видеозвонками и нейросетью • Таск-менеджер с контролем сроков и проектами • CRM для повышения продаж • Документы и совместная работа онлайн • Онлайн-доски вместо офисного флипчарта • Искусственный интеллект для автоматизации +10 инструментов для бизнеса в одном сервисе Битрикс24. Это выгоднее, чем платить за кучу приложений отдельно. Зарегистрироваться #реклама 16+ bitrix24.ru О рекламодателе

🤔 Что такое медленный запрос? Это запрос, выполнение которого занимает больше времени, чем заданный порог. 1. Причины: отсутствие индексов, сложные объединения, большой объём данных. 2. Оптимизация: использование индексов, анализ плана выполнения (EXPLAIN) и уменьшение объёма данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

ИИ стремительно меняет бизнес, людей и организации. И вместе с ними должно меняться само управление: то, чему учили менеджеро
ИИ стремительно меняет бизнес, людей и организации. И вместе с ними должно меняться само управление: то, чему учили менеджеров вчера, сегодня работает всё хуже. 19 июня СберУниверситет проведёт форум «Больше чем менеджмент». Тема — «Переизобретая менеджмент»: что оставить в прошлом, что переизобрести, а что создать с нуля. На форуме разберем: - Почему одни компании меняются быстро, а другие теряют темп? - Как находить и выращивать лидеров будущего? - Как стать руководителем дополненным ИИ? Вас ждут TED-выступления лидеров ведущих российских компаний, открытый диалог о личных практиках управления, демонстрации и практика работы с AI от Сбера — от решения простых задач до создания ИИ-агентов и моделирования рабочих сценариев Формат — онлайн. Зарегистрироваться Номер реестровой записи: С502024004938. #реклама 16+ sberuniversity.ru О рекламодателе

🤔 Что делает бэкслеш перед глобальными функциями? Бэкслеш (\) используется для обращения к глобальным функциям или классам, чтобы избежать их переопределения в текущем пространстве имён. Например, \strlen() вызовет глобальную функцию strlen, а не её версию из текущего namespace. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Обнулите все свои кредиты и долги по госпрограмме! Долги от 200т.р. Законно по ФЗ127. 0 проигранных дел. Консультация 0₽. Сох
Обнулите все свои кредиты и долги по госпрограмме! Долги от 200т.р. Законно по ФЗ127. 0 проигранных дел. Консультация 0₽. Сохраню ипотеку. Узнать больше Банкротство влечет негативные последствия, в том числе ограничения на получение кредита и повторное банкротство в течение пяти лет. Предварительно обратитесь к своему кредитору и в МФЦ. #реклама spishy-dolg.ru О рекламодателе

🤔 Чем отличается BacktimeTable от Backtime? 1. BacktimeTable может быть структурой данных или таблицей, используемой для хранения промежуточных результатов в задаче обратного отсчёта или обработки данных. 2. Backtime часто означает сам процесс обратного отсчёта или времени ожидания. 3. Различие зависит от контекста: таблица — для хранения, backtime — для логики. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Боевые роботы — тактическая RPG в стиле sci-fi! Присоединяйся к битве роботов — начни свою мех-легенду уже сейчас! Узнать бол
Боевые роботы — тактическая RPG в стиле sci-fi! Присоединяйся к битве роботов — начни свою мех-легенду уже сейчас! Узнать больше #реклама 16+ yandex.ru О рекламодателе

🤔 В чем разница кэширования, кодирования, шифрования? 1. Кэширование: - Сохранение данных для быстрого повторного доступа, уменьшая время загрузки и нагрузку на сервер. - Пример: сохранение веб-страницы в браузере. 2. Кодирование: - Преобразование данных в другой формат для удобства передачи или совместимости. - Пример: Base64 для передачи бинарных данных через текстовые протоколы. 3. Шифрование: - Защита данных с использованием ключей, чтобы их мог прочитать только авторизованный получатель. - Пример: AES или RSA для передачи конфиденциальной информации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Хочешь начать карьеру в ИТ на оплачиваемой стажировке? Присоединяйся к ИТ-лагерю Т1 для студентов вузов технических и ИТ-спец
Хочешь начать карьеру в ИТ на оплачиваемой стажировке? Присоединяйся к ИТ-лагерю Т1 для студентов вузов технических и ИТ-специальностей. Теперь в обновлённом формате: ещё больше практики, доступ к платформам Т1, а участие — оплачивается и оформляется как стажировка. За 2,5 месяца вместе с проектной командой ты пройдешь полный цикл создания ИТ-продукта: от идеи до разработки прототипа и финальной защиты. Превратить идею в проект помогут мастер-классы, общение с экспертами и погружение в процессы Т1. Направления подготовки: ✅ ручное тестирование; ✅ прикладное администрирование (DevOps); ✅ системный анализ; ✅ фронтенд-разработка (React); ✅ бэкэнд-разработка (Java). Подай заявку до 30 июня! Старт — в июле. Узнать больше #реклама 16+ career.t1.ru О рекламодателе

🤔 Расскажи про полиморфизм Полиморфизм — это концепция ООП, которая позволяет объектам разных классов обрабатывать одинаковые сообщения или методы по-разному. Полиморфизм позволяет использовать общий интерфейс для взаимодействия с объектами разных типов, не зная их конкретный класс. Он облегчает расширение и поддержку кода, делая его более гибким и удобным для добавления новых классов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое namespaces Namespaces в PHP — это способ организации кода для предотвращения конфликтов имен между классами, функциями и константами. Использование пространства имен позволяет создать уникальные идентификаторы, чтобы избежать пересечений между именами в крупных проектах или при использовании сторонних библиотек. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний