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

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

الذهاب إلى القناة على Telegram
2 349
المشتركون
+124 ساعات
+77 أيام
+530 أيام
أرشيف المشاركات
🤔 Какие бывают области видимости? Область видимости (или видимость) определяет, где в коде можно получить доступ к переменным, функциям и другим объектам. В PHP есть несколько видов областей видимости, которые контролируют доступность этих элементов в разных частях программы. 🚩Основные области видимости 🟠Локальная область видимости Переменные, объявленные внутри функции, имеют локальную область видимости и доступны только внутри этой функции.
<?php
function test() {
    $localVar = "I'm local";
    echo $localVar; // Выведет "I'm local"
}
test();
echo $localVar; // Ошибка: переменная не найдена
?>
🟠Глобальная область видимости Переменные, объявленные вне функций и классов, имеют глобальную область видимости и доступны везде в скрипте, кроме внутренних областей видимости (например, внутри функций), если не использовать ключевое слово global.
<?php
$globalVar = "I'm global";

function test() {
    global $globalVar;
    echo $globalVar; // Выведет "I'm global"
}

test();
?>
🟠Область видимости функций и методов Переменные, объявленные внутри функции или метода класса, имеют свою локальную область видимости и не видны за её пределами.
<?php
class Test {
    public function method() {
        $localVar = "I'm local in method";
        echo $localVar; // Выведет "I'm local in method"
    }
}

$test = new Test();
$test->method();
echo $localVar; // Ошибка: переменная не найдена
?>
🟠Область видимости классов Публичная (public) Публичные свойства и методы доступны отовсюду: как внутри класса, так и вне его.
<?php
class Test {
    public $publicVar = "I'm public";

    public function publicMethod() {
        echo $this->publicVar;
    }
}

$test = new Test();
echo $test->publicVar; // Доступно и выведет "I'm public"
$test->publicMethod(); // Доступно и выведет "I'm public"
?>
🟠Защищённая (protected) Защищённые свойства и методы доступны только внутри класса и его наследников.
<?php
class Base {
    protected $protectedVar = "I'm protected";

    protected function protectedMethod() {
        echo $this->protectedVar;
    }
}

class Derived extends Base {
    public function accessProtected() {
        echo $this->protectedVar; // Доступно
        $this->protectedMethod(); // Доступно
    }
}

$derived = new Derived();
$derived->accessProtected(); // Выведет "I'm protected"
// echo $derived->protectedVar; // Ошибка: доступ запрещен
// $derived->protectedMethod(); // Ошибка: доступ запрещен
?>
🟠Приватная (private) Приватные свойства и методы доступны только внутри класса, в котором они объявлены, и недоступны в наследниках.
<?php
class Test {
    private $privateVar = "I'm private";

    private function privateMethod() {
        echo $this->privateVar;
    }

    public function accessPrivate() {
        $this->privateMethod(); // Доступно
    }
}

$test = new Test();
$test->accessPrivate(); // Выведет "I'm private"
// echo $test->privateVar; // Ошибка: доступ запрещен
// $test->privateMethod(); // Ошибка: доступ запрещен
?>
🟠Локальная область видимости Переменные доступны только внутри функции или метода, где они объявлены. 🟠Глобальная область видимости Переменные доступны везде в скрипте, кроме внутренних областей видимости, если не используется global. 🟠Публичная область видимости Свойства и методы доступны отовсюду. 🟠Защищённая область видимости Свойства и методы доступны только внутри класса и его наследников. 🟠Приватная область видимости Свойства и методы доступны только внутри класса, в котором они объявлены. Ставь 👍 и забирай 📚 Базу знаний

Как внедрить ИИ в маркетинг - разбираем на вебинаре Система маркетинга с ИИ: 1. Как отдать креативы ИИ агенту? 2. Может ли ИИ
Как внедрить ИИ в маркетинг - разбираем на вебинаре Система маркетинга с ИИ: 1. Как отдать креативы ИИ агенту? 2. Может ли ИИ закупать трафик ? 3. Приносит ли это прибыль? Узнать больше #реклама 16+ aimogetvse.ru О рекламодателе

🤔 Слово "global" для чего используется? Слово global позволяет получить доступ к переменной, определённой за пределами текущей функции. Используется, чтобы модифицировать глобальные переменные внутри функций. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Приложение #1 для управления личными финансами Ясность в расходах. Больше выгоды при покупках. Подскажем, какая из ваших карт даст больше кэшбэка Установить #реклама 16+ zenmoney.ru О рекламодателе

🤔 В чем принцип работы HashTable? Хеш-таблица – это структура данных, которая хранит пары "ключ → значение" и использует хеш-функцию для быстрого поиска, добавления и удаления данных. 🚩Основная идея Ключ обрабатывается хеш-функцией → превращается в числовой индекс. По индексу данные хранятся в массиве. Быстрое обращение к данным по ключу: O(1) в среднем. 🚩Как это работает? 🟠Хеширование ключа Представим, что у нас есть ключ "apple", и мы храним для него значение 100. Применяем хеш-функцию к "apple"
$hash = hash('md5', 'apple'); 
echo $hash; // 1f3870be274f6c49b3e31a0c6728957f
Это хеш – длинное число, но нам нужно индексировать данные, поэтому мы берем его остаток от деления на размер массива (mod):
$index = hexdec(substr($hash, 0, 8)) % 10; 
echo $index; // Например, 3
🟠Поиск элемента Когда мы ищем apple, алгоритм: Применяет ту же хеш-функцию, получает индекс 3 Ищет значение в ячейке 3 Таким образом, поиск данных по ключу происходит мгновенно – O(1). Коллизия – это когда разные ключи дают один и тот же индекс. Пример: "apple" и "banana" могут попасть в одну ячейку! Решения: Метод цепочек – внутри каждой ячейки храним список значений (например, массив или связанный список). Открытая адресация – если ячейка занята, ищем следующую свободную. 🚩Хеш-таблица в PHP В PHP массивы (array) работают как хеш-таблицы!
$hashTable = [];
$hashTable['apple'] = 100;
$hashTable['banana'] = 200;

echo $hashTable['apple']; // 100
Ставь 👍 и забирай 📚 Базу знаний

Получите 400 рублей на счет мобильного телефона Выберите Яндекс Поиск в настройках браузера, ищите в нём — и они ваши! Узнать больше #реклама 16+ portal.yandex.ru О рекламодателе

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

Привезем авто из Кореи! За 70 000₽ под ключ! Привезем авто из Кореи в Россию! Авто по параметрам. Точные сроки. 100% проверка
Привезем авто из Кореи! За 70 000₽ под ключ! Привезем авто из Кореи в Россию! Авто по параметрам. Точные сроки. 100% проверка. Узнать больше #реклама titaniumdrive.ru О рекламодателе

🤔 Как работает зацепление? Зацепление (coupling) — это степень зависимости одного модуля от другого. В PHP (и вообще в разработке) мы стремимся уменьшить зацепление, чтобы код был гибким, удобным для тестирования и сопровождения. 🚩Виды зацепления 🟠Слабое зацепление (Loose Coupling) – Хорошо - Модули мало зависят друг от друга. - Можно заменять части системы без изменений в других частях. - Используется интерфейсы, DI (Dependency Injection), события.
interface Logger {
    public function log($message);
}

class FileLogger implements Logger {
    public function log($message) {
        echo "Запись в файл: $message\n";
    }
}

class DatabaseLogger implements Logger {
    public function log($message) {
        echo "Запись в базу: $message\n";
    }
}

class User {
    private $logger;

    public function __construct(Logger $logger) {
        $this->logger = $logger;
    }

    public function register($name) {
        echo "Регистрация пользователя: $name\n";
        $this->logger->log("Пользователь $name зарегистрирован.");
    }
}

// Можно легко менять логгер без изменения класса User
$user = new User(new FileLogger());
$user->register("Иван");

$user = new User(new DatabaseLogger());
$user->register("Петр");
🟠Жёсткое зацепление (Tight Coupling) – Плохо - Модули сильно связаны, нельзя поменять один без изменения другого. - Код трудно тестировать и расширять. - Используется жёсткая привязка классов внутри других классов.
class FileLogger {
    public function log($message) {
        echo "Запись в файл: $message\n";
    }
}

class User {
    private $logger;

    public function __construct() {
        $this->logger = new FileLogger(); // Жесткая зависимость!
    }

    public function register($name) {
        echo "Регистрация пользователя: $name\n";
        $this->logger->log("Пользователь $name зарегистрирован.");
    }
}

// User всегда использует FileLogger, его нельзя легко заменить
$user = new User();
$user->register("Иван");
Ставь 👍 и забирай 📚 Базу знаний

Теплоизоляция из стекловолокна для каркасных стен ТЕХНОНИКОЛЬ: идеальная геометрия для стоечного каркаса. Монтаж простой и бы
Теплоизоляция из стекловолокна для каркасных стен ТЕХНОНИКОЛЬ: идеальная геометрия для стоечного каркаса. Монтаж простой и быстрый. Узнать больше #реклама tn.ru О рекламодателе

🤔 Для чего нужен ELT? ELT (Extract, Load, Transform) – это процесс обработки данных, используемый в аналитике: - Extract (Извлечение) – загрузка данных из источников (БД, API). - Load (Загрузка) – сохранение данных в хранилище (например, в Data Warehouse). - Transform (Преобразование) – очистка, фильтрация, агрегация данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Яндекс Музыка до 360 дней бесплатно Яндекс Музыка для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в мультиподписке
Яндекс Музыка до 360 дней бесплатно Яндекс Музыка для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в мультиподписке. Попробуйте бесплатно❤️ Слушать #реклама 18+ music.yandex.ru О рекламодателе

🤔 Что такое ссылочная целостность связей? Ссылочная целостность (Referential Integrity) – это правило, которое гарантирует, что связи между таблицами остаются корректными. 🚩Пример в базе данных Допустим, у нас есть 2 таблицы: users (Пользователи) orders (Заказы) Связь: каждый заказ (orders) должен ссылаться на существующего пользователя (users) через user_id.
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
🚩Как работает ссылочная целостность? Запрещает вставку "несуществующих" ссылок
INSERT INTO orders (id, user_id, amount) VALUES (1, 999, 100.00);
-- ❌ Ошибка! Пользователя с id = 999 нет в users
Запрещает удаление родительской записи, если есть зависимые
DELETE FROM users WHERE id = 1;
-- ❌ Ошибка! Есть заказы, которые ссылаются на пользователя id = 1
Автоматическое удаление связанных данных (ON DELETE CASCADE)
DELETE FROM users WHERE id = 1;
-- ✅ Все заказы с user_id = 1 тоже удалятся
🚩Способы управления ссылочной целостностью ON DELETE CASCADE → при удалении пользователя удаляются все его заказы. ON DELETE SET NULL → при удалении пользователя поле user_id в заказах становится NULL. ON DELETE RESTRICT → запрещает удалять пользователя, если у него есть заказы.
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL;
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что делать, если у двух trait'ов один и тот же метод? 1. Если два trait содержат методы с одинаковыми именами, необходимо явно указать, какой метод использовать, с помощью use TraitName::methodName. 2. В сложных случаях можно переопределить метод в классе для явной реализации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Советы и методики для специалистов, работающих с РАС Хотите развиваться в сфере инклюзивного образования и работать с детьми
+1
Советы и методики для специалистов, работающих с РАС Хотите развиваться в сфере инклюзивного образования и работать с детьми с РАС и ОВЗ? Подписывайтесь на канал ИПАП — Института прикладного анализа поведения. Здесь вы найдете, полезные материалы, разборы практических кейсов, рекомендации экспертов и анонсы образовательных программ. Мы рассказываем о современных подходах в АВА-терапии, альтернативной коммуникации, обучении и сопровождении детей с особенностями развития. Контент будет полезен педагогам, психологам, логопедам, дефектологам, тьюторам и всем, кто хочет повышать свою профессиональную квалификацию. Присоединяйтесь к сообществу специалистов и будьте в курсе актуальных знаний и практических инструментов для работы. Подписаться #реклама 16+ max.ru О рекламодателе

🤔 Что такое абстрактный класс? Абстрактный класс — это класс в ООП, который не может быть инстанциирован напрямую, то есть нельзя создать объект абстрактного класса используя оператор new. Они предназначены для того, чтобы служить базой для других классов, которые должны реализовать определенные методы, заданные в нем. Обеспечение общего определения класса, которое может быть использовано в качестве основы для создания производных классов. Производные классы должны реализовать все абстрактные методы абстрактного родительского класса, но при этом они могут также иметь дополнительные методы и свойства или переопределять существующие.
abstract class Животное {
    public function ест() {
        echo "Это животное ест";
    }

    abstract public function издаетЗвук();
}

class Собака extends Животное {
    public function издаетЗвук() {
        echo "Гав";
    }
}

// $животное = new Животное(); // Ошибка: нельзя инстанциировать абстрактный класс
$собака = new Собака();
$собака->ест(); // Вывод: Это животное ест
$собака->издаетЗвук(); // Вывод: Гав
Ставь 👍 и забирай 📚 Базу знаний

Эксперт, как зарабатывать предсказуемо без контента 24/7 Я вела экспертный блог несколько лет и была уверена: хочешь больше к
Эксперт, как зарабатывать предсказуемо без контента 24/7 Я вела экспертный блог несколько лет и была уверена: хочешь больше клиентов и — выдавай больше контента. Сторис. Эфиры. Видео. И так без выходных. Я выгорала. Но клиенты то были, то исчезали. Я думала: зачем мне всё это, если я впахиваю больше, чем в найме? Всё поменялось, когда я нашла простую систему для микроблога. Я начинала со 100 подписчиков и уже через год вышла на 12 млн в месяц. Без постоянных съёмок и огромной командыкоманды. Всю систему я разложила в бесплатном разборе — с примерами даже на блоге в 500 человек. Смотри по кнопке ниже Узнать больше #реклама 16+ mariesuhorukih.chatium.ru О рекламодателе

🤔Что такое Service Locator? Это паттерн проектирования, предоставляющий объект (локатор), который отвечает за предоставление зависимостей (сервисов) в приложении. • Он хранит ссылки на зависимости и позволяет получить их по запросу. • Недостаток: сложнее отслеживать зависимости и тестировать код, так как локатор создаёт скрытые связи. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Аксессуары для Вашего автомобиля Kia и для Вас Оригинальные аксессуары Kia. От бейсболки до колесных дисков на сайте kia.ru У
Аксессуары для Вашего автомобиля Kia и для Вас Оригинальные аксессуары Kia. От бейсболки до колесных дисков на сайте kia.ru Узнать больше #реклама kia.ru О рекламодателе