PHP | Вопросы собесов
Відкрити в Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Показати більше2 345
Підписники
+124 години
-47 днів
-2630 день
Архів дописів
🤔 Как реализуется полиморфизм ?
1. Полиморфизм реализуется через наследование, интерфейсы и абстрактные классы.
2. Родительский класс или интерфейс может быть заменён его наследником, сохраняя единообразие вызовов.
3. Пример: использование одного метода render() для вывода разного контента в зависимости от конкретного класса.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Получи грант на обучение в Центральном университете
Центральный университет выдает гранты на 4 года обучения в бакалавриате.
Грант покрывает до 100% стоимости обучения. Участвуй в отборе, чтобы получить грант.
Получи доступ к уникальным активностям для абитуриентов. Для выпускников 10-х, 11-х классов и колледжей.
Подать заявку
#реклама
apply.centraluniversity.ru
О рекламодателе
🤔 Какие бывают индексы?
Чтобы продемонстрировать, как можно использовать индексы, прежде всего нужно рассмотреть процесс создания индексов в базе данных и последующее выполнение SQL запросов с использованием PHP. Возьмем MySQL в качестве примера базы данных и использование PDO (PHP Data Objects) для взаимодействия с базой данных из PHP.
🚩Создание индексов в MySQL
Допустим, у вас есть таблица
users с полями id, email, name, и age. Вы хотите оптимизировать поиск по email, который часто используется для входа в систему или других операций. Вы можете создать уникальный индекс для столбца email
CREATE UNIQUE INDEX idx_email ON users (email);
Если вы также часто выполняете запросы, которые фильтруют пользователей по возрасту, вы можете создать простой индекс для столбца age
CREATE INDEX idx_age ON users (age);
🚩Использование индексов
Теперь, когда у вас есть индексы, давайте посмотрим, как вы можете использовать PHP для выполнения запросов, которые могут извлекать выгоду из этих индексов. Мы будем использовать PDO для создания безопасных запросов с использованием подготовленных выражений.
<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = '';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Запрос с использованием индекса по email
$email = 'user@example.com';
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "Имя: " . $row['name'] . ", Email: " . $row['email'] . ", Возраст: " . $row['age'] . "<br/>";
}
// Запрос с использованием индекса по возрасту
$age = 25;
$stmt = $pdo->prepare("SELECT * FROM users WHERE age >= :age");
$stmt->execute(['age' => $age]);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "Имя: " . $row['name'] . ", Email: " . $row['email'] . ", Возраст: " . $row['age'] . "<br/>";
}
} catch (PDOException $e) {
die("Ошибка подключения: " . $e->getMessage());
}
?>
Ставь 👍 и забирай 📚 Базу знанийОфисные башни JOIS от MR Office в 10 мин от Москва-Сити
JOIS - это современные башни класса А от нового бренда, объединяющего все офисные объекты MR Group.
Проект премиального бизнес-центра включает две башни:
1) 43-этажный небоскреб MAST с офисами от 96 м² и возможностью приобретения офисных помещений по отдельности, а также целыми этажами или блоками
2) Башня CREDO представляет из себя единый офис площадью 22 000 м²
Главные преимущества будущего проекта:
✨Ландшафтный парк площадью 1,3 Га и пешеходный маршрут более 2,3 км
✨Расположение в 5 минутах до ТТК и 10 минутах от Москва-сити
✨3-уровневый подземный паркинг, рассчитанный на 400 машиномест
✨Отделка Shell&Core - оптимальное решение для создания эксклюзивного интерьера
✨Рассрочка 0% на приобретение коммерческой недвижимости
Узнать больше
Проектная декларация на сайте https://наш.дом.рф/. Застройщик: ООО СЗ Л2-ДЕВЕЛОПМЕНТ
#реклама
mr-group.ru
О рекламодателе
🤔 Что известно про букву D в SOLID и её связь с интерфейсами?
D означает Dependency Inversion Principle — принцип инверсии зависимостей.
1. Модули верхнего уровня не должны зависеть от модулей нижнего уровня, оба должны зависеть от абстракций.
2. В коде это реализуется через интерфейсы: классы работают с интерфейсами, а не с конкретными реализациями.
3. Это упрощает тестирование и замену модулей без изменения основного кода.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Высшее образование онлайн — поменяйте жизнь в 2025 году!
✅Набор в мае: от 6700 ₽/мес.*
Московский технологический институт предлагает:
— Высшее образование в московском вузе без выезда на сессии
— Полностью дистанционный онлайн-формат
— Возможность обучаться дома, на работе, в путешествии
— Диплом государственного образца
— Более 60 направлений на выбор (IT, инженерные, экономические, педагогические, управленческие и другие)
— 5 способов оплаты обучения
— Поддержка персонального куратора: от поступления до получения диплома
Узнать больше
#реклама 16+
mti-education.ru
О рекламодателе
🤔 Что такое составной индекс?
Составной индекс (Composite Index) – это индекс, который создаётся сразу на несколько колонок таблицы.
🚩Как работает составной индекс?
🟠Пример без индекса (медленный поиск)
Допустим, у нас есть таблица
orders
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
status VARCHAR(50),
created_at DATETIME
);
И мы выполняем поиск по user_id и status
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid';
Создаём составной индекс (ускоряем поиск)
CREATE INDEX idx_user_status ON orders(user_id, status);
Как SQL использует составной индекс? (Правило слева направо)
Важный момент: составной индекс работает слева направо.
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid'; -- ✅ Использует индекс
SELECT * FROM orders WHERE user_id = 5; -- ✅ Использует индекс (user_id - первый в индексе)
НЕ работает
SELECT * FROM orders WHERE status = 'paid'; -- ❌ Индекс не используется (user_id пропущен)
Ставь 👍 и забирай 📚 Базу знаний🤔 Чем отличается абстрактный класс от интерфейса?
Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией, в то время как интерфейс не содержит реализации методов до PHP 8. Абстрактный класс может содержать поля и конструкторы, а интерфейс — только сигнатуры методов. Класс может наследовать только один абстрактный класс, но реализовать несколько интерфейсов. Абстрактный класс используется, когда требуется частичная реализация, а интерфейс — для создания контракта.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
+7
Сколько приложений нужно вашей команде для работы?
Всего один сервис — Битрикс24! А внутри десятки инструментов для совместной работы и бизнеса.
Читайте подробнее в карточках. Регистрируйтесь сейчас, чтобы забрать их все себе бесплатно😊
Зарегистрироваться
#реклама 16+
office-online.bitrix24.ru
О рекламодателе
🤔 Расскажи про фабрики
Это шаблон проектирования, который относится к порождающим шаблонам и используется для создания объектов без необходимости указывать точный класс создаваемого объекта. Основная идея фабрики заключается в том, чтобы делегировать создание объектов специальному классу или методу, что упрощает управление кодом и позволяет добиться большей гибкости и расширяемости.
🚩Зачем нужны фабрики?
🟠Инкапсуляция процесса создания объектов
Если создание объекта требует сложной логики или конфигурации, фабрика позволяет скрыть эту сложность от остальной части кода.
🟠Снижение зависимости от конкретных классов
Вы используете интерфейсы или абстрактные классы вместо конкретных реализаций. Это упрощает замену одного типа объекта на другой.
🟠Гибкость и расширяемость
Фабрики позволяют добавлять новые классы без изменения существующего кода.
🚩Типы фабрик
🟠Простая фабрика (Simple Factory)
Это метод, который возвращает объект одного из нескольких возможных классов в зависимости от переданных параметров.
class ShapeFactory {
public static function createShape(string $type) {
return match ($type) {
'circle' => new Circle(),
'square' => new Square(),
default => throw new Exception("Unknown shape type"),
};
}
}
$circle = ShapeFactory::createShape('circle'); // Возвращает объект Circle
🟠Фабричный метод (Factory Method)
В этом шаблоне создание объекта делегируется подклассам. Основной класс определяет интерфейс для создания объектов, но сам не знает, какие конкретные классы будут созданы.
interface Logger {
public function log(string $message);
}
class FileLogger implements Logger {
public function log(string $message) {
echo "Logging to a file: $message";
}
}
class DatabaseLogger implements Logger {
public function log(string $message) {
echo "Logging to a database: $message";
}
}
abstract class LoggerFactory {
abstract public function createLogger(): Logger;
}
class FileLoggerFactory extends LoggerFactory {
public function createLogger(): Logger {
return new FileLogger();
}
}
$factory = new FileLoggerFactory();
$logger = $factory->createLogger();
$logger->log("Hello World");
🟠Абстрактная фабрика (Abstract Factory)
Этот шаблон используется для создания семейств взаимосвязанных объектов.
interface GUIFactory {
public function createButton(): Button;
public function createCheckbox(): Checkbox;
}
class WindowsFactory implements GUIFactory {
public function createButton(): Button {
return new WindowsButton();
}
public function createCheckbox(): Checkbox {
return new WindowsCheckbox();
}
}
class MacOSFactory implements GUIFactory {
public function createButton(): Button {
return new MacOSButton();
}
public function createCheckbox(): Checkbox {
return new MacOSCheckbox();
}
}
$factory = new WindowsFactory();
$button = $factory->createButton();
$checkbox = $factory->createCheckbox();
🚩Как использовать фабрики?
Если вы работаете с приложением, где объекты часто меняются, например, в зависимости от окружения (Windows, MacOS).
Когда создание объектов сложное и требует дополнительной логики.
Когда нужно уменьшить зависимость между модулями.
Ставь 👍 и забирай 📚 Базу знанийВиртуальный сервер в аренду в Турции или России.
Отказоустойчивый виртуальный облачный сервер на базе виртуализации VMWARE по модели подписки.
- Бесплатная миграция инфраструктуры в Турцию
- Размещайте ресурсы в Турции или России и оплачивайте в рублях, турицких лирах или евро.
- Храните резервные копии данных за рубежом для минимизации рисков
- Продолжайте использовать импортное ПО, скачивайте обновления и патчи, общайтесь с техподдержкой
- Доступность сервиса — от 99,982% SLA
- Дата центры Tier III в России и Турции
- Почасовой биллинг и постоплата
Подключите услугу сегодня со скидкой 50% на инфраструктуру.
Подать заявку
#реклама
cloud4y.ru
О рекламодателе
🤔 Какой принцип из SOLID позволяет соблюдать добавочные преобразования в работе?
Принцип открытости/закрытости (Open/Closed Principle) из SOLID утверждает, что программные сущности должны быть открыты для расширения, но закрыты для модификации. Это позволяет добавлять новые функциональности без изменения существующего кода.?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Получи грант до 1,2 млн руб. на обучение в магистратуре
Хочешь развиваться в сфере ИТ и получить фундаментальные знания с практикой?
Поступай в магистратуру Центрального университета!
- 4 офлайн программы по востребованным направлениям ИТ
- Онлайн-программа по машинному обучению
- 300 мест с грантами до 1,2 млн руб.
- Вечерние занятия и учеба по выходным — удобно совмещать с работой
- Обучение по модели STEM-образования: на стыке науки, технологий и бизнеса
- Возможность стажировок и трудоустройства в ведущих компаниях
- Государственный диплом за 2 года
Магистратура в Центральном университете — это современный подход к образованию, сильный преподавательский состав и актуальные кейсы от индустрии.
Оставляй заявку на грант уже сейчас!
Подать заявку
#реклама 16+
apply.centraluniversity.ru
О рекламодателе
🤔 Что такое middleware?
Это ПО, которое располагается между веб-сервером и приложением. Оно обрабатывает входящие запросы до того, как они достигнут вашего приложения, или обрабатывает исходящие ответы после того, как приложение их сгенерировало.
🚩Зачем нужен Middleware
🟠Управление запросами
Может изменять или проверять запросы перед передачей их в приложение. Например, оно может проверять наличие валидных токенов доступа для аутентификации или осуществлять проверку прав доступа.
🟠Перехват ответов
Также может изменять ответы перед тем, как они будут отправлены пользователю, например, добавлять нужные заголовки HTTP или сжимать данные.
🟠Логирование и мониторинг
Оно может записывать информацию о запросах и ответах для анализа трафика или обнаружения ошибок.
🟠Обработка ошибок
Часто используется для централизованной обработки ошибок, позволяя управлять ошибками элегантно и единообразно.
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class CheckAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (!Auth::check()) {
return redirect('/login');
}
return $next($request);
}
}
Ставь 👍 и забирай 📚 Базу знанийКрупнейший университет искусственного интеллекта
Учим использовать ChatGPT в профессиональных целях, создавать нейро-сотрудников и зарабатывать на искусственном интеллекте.
✨ 8 000+ студентов со всего мира
✨ 600+ AI-проектов, созданных студентами
✨ Сборная Университета — победители крупнейших AI-хакатонов России
✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие)
✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие)
Будем рады видеть тебя в наших рядах!
Узнать больше
#реклама 16+
neural-university.ru
О рекламодателе
🤔 Как работает динамическая типизация?
Динамическая типизация позволяет переменной менять тип во время выполнения программы. Тип определяется автоматически на основе присвоенного значения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Устроиться аналитиком в Яндекс за выходные
7–8 июня проводим Weekend Offer Analytics. До 3 июня оставьте заявку на участие, 7 июня пройдите два технические собеседования, а 8 июня познакомьтесь с командами и получите офер.
В мероприятии участвует 12 команд: Алиса и Умные устройства, Игры, R&D, Рекламные технологии, Поиск и Суперапп, Безопасность, Коммерческий департамент, Автономный транспорт, Ecom-сценарии Поиска, Качество Поиска, Международный Поиск, Карты. Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным.
Зарегистрироваться
#реклама 16+
yandex.ru
О рекламодателе
🤔 Что такое абстрагирование?
Это принцип программирования и проектирования, который позволяет выделить важные характеристики объекта или системы и скрыть их сложные детали. Основная цель абстрагирования – упростить сложные системы, делая их более понятными и управляемыми, сосредоточив внимание на их основных аспектах и поведении.
🚩Зачем нужно абстрагирование
🟠Снижение сложности
Сокращает количество деталей, с которыми нужно работать, что облегчает понимание и работу с системой.
🟠Повышение читаемости кода
Упрощает код, делая его более читаемым и легким для поддержки.
🟠Повторное использование кода
Создаёт возможность повторного использования общих функций и логики.
🟠Инкапсуляция
Позволяет скрывать реализацию и представлять только необходимые интерфейсы для взаимодействия.
🟠Гибкость и расширяемость
Облегчает добавление новых функциональностей без изменения существующего кода.
🚩Как используется абстрагирование
Абстрагирование в программировании часто реализуется через классы и интерфейсы. Ниже приведены примеры абстракции в объектно-ориентированном программировании (ООП).
🚩Пример абстракции с использованием классов и интерфейсов
🟠Интерфейс
Определяет набор методов, которые должны быть реализованы, не указывая, как именно они должны быть реализованы.
interface Shape {
public function draw();
}
🟠Классы, реализующие интерфейс
Реализуют методы, определённые в интерфейсе.
class Circle implements Shape {
public function draw() {
echo "Drawing a circle";
}
}
class Square implements Shape {
public function draw() {
echo "Drawing a square";
}
}
Использование абстракции
function renderShape(Shape $shape) {
$shape->draw();
}
$circle = new Circle();
$square = new Square();
renderShape($circle); // Вывод: Drawing a circle
renderShape($square); // Вывод: Drawing a square
🚩Плюсы и минусы
➕Снижение сложности
Абстракция скрывает сложные детали реализации, облегчая работу с системой.
➕Улучшение читаемости
Код становится более понятным и структурированным.
➕Гибкость и расширяемость
Облегчает добавление новых функций и изменений.
➕Повторное использование
Позволяет использовать общий код в разных частях программы.
➖Избыточность
Иногда может приводить к избыточной сложности, если абстракции слишком сложные или используются неправильно.
➖Накладные расходы
Может потребоваться больше времени и усилий на создание абстракций и их поддержку.
Ставь 👍 и забирай 📚 Базу знанийИщу помощников, которые хотят подработку от 3 тыс в день
Без опыта, нужен только компьютер, занятость 3-6 часов в день
Всему обучат на бесплатном курсе и после возьму на работу:
✅ 3 дня уроков по 30 минут
✅ Домашки с проверкой и оплатой
✅ Плачу 10 тыс за каждую выполненную домашку
Все кто пройдет курс, получат сертификат от школы с образовательной лицензией.
👍 Для регистрации жмите кнопку "Зарегистрироваться".
Зарегистрироваться
#реклама 16+
course.wildmanager.ru
О рекламодателе
🤔 Какие у вас знания об инструменте Git?
Git — это распределенная система контроля версий, которая позволяет отслеживать изменения в файлах и сотрудничать с другими разработчиками. Git поддерживает ветвление, слияние и возможность восстановления предыдущих состояний проекта.?
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
