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

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

前往频道在 Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

显示更多
2 347
订阅者
-124 小时
-47
-2330
帖子存档
🤔 Что такое абстрактный класс? Абстрактный класс — это класс, который не может быть создан как объект и служит для того, чтобы задавать общие свойства и методы для классов-наследников. Он может содержать как абстрактные, так и конкретные методы с реализацией. Наследники обязаны реализовать все абстрактные методы родительского класса. Абстрактные классы полезны, когда требуется частичная реализация с обязательной реализацией некоторых методов в дочерних классах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Завтра конец акции на возможность приобрести PRO тариф по цене одного года Доступный функционал включает базы вопросов с собе
Завтра конец акции на возможность приобрести PRO тариф по цене одного года Доступный функционал включает базы вопросов с собеседований, задач для live-coding, реальных интервью и тестовых заданий от топ-компаний, а также аналитику требований для резюме и тренажеры с режимом симуляции собеседования под конкретную компанию. Акция до 20 февраля (включительно) на PRO-тариф. Покупаешь сейчас один раз — пользуешься всю жизнь без лимита, включая все будущие функции. 👉 Смотри подробности тарифа и покупай на https://easyoffer.ru/

🤔 Что такое динамические переменные? Это переменные, имена которых определяются во время выполнения программы. Это позволяет создавать, модифицировать или обращаться к переменным динамически, основываясь на входных данных или условиях выполнения программы. Такой подход может быть полезен в сценариях, где структура данных неизвестна на момент написания кода или когда нужно генерировать переменные на лету в зависимости от контекста выполнения. 🚩PHP Имена переменных могут быть динамически сформированы с использованием переменных переменных
$name = "variable";
$$name = "Hello, World!";

echo $variable; // Выведет "Hello, World!"
Плюсы и минусы ➕Гибкость позволяет создавать более адаптивные и динамические программы, которые могут работать с данными, структура которых заранее неизвестна. ➕Удобство упрощает работу с большим количеством похожих переменных или свойств объекта без необходимости явного объявления каждой переменной. ➖Читаемость кода использование динамических переменных может сделать код менее понятным и труднее для отладки, поскольку не всегда ясно, какие переменные создаются и используются. ➖Управление памятью динамическое создание большого количества переменных может привести к неэффективному использованию памяти и снижению производительности. Ставь 👍 и забирай 📚 Базу знаний

IT-магистратура ИТМО, МИФИ в партнёрстве с Яндексом Освойте высокооплачиваемую IT-профессию. Актуальные программы ИТМО и МФТИ
IT-магистратура ИТМО, МИФИ в партнёрстве с Яндексом Освойте высокооплачиваемую IT-профессию. Актуальные программы ИТМО и МФТИ 2026 года, диплом гособразца, много практики от Яндекса. Гибкий график, обучение полностью онлайн, господдержка оплаты, отсрочка от армии Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Что такое поведение copy-on-write? Это механизм оптимизации памяти, при котором копия объекта создаётся только в случае изменения исходного объекта. До изменений объекты разделяют один и тот же адрес в памяти. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как расшифровывается Rest? REST расшифровывается как REpresentational State Transfer (Представленческая передача состояния). Это архитектурный стиль для создания сетевых приложений, который определяет набор ограничений и принципов для проектирования и взаимодействия с веб-службами. 🚩Основные принципы 🟠Клиент-серверная архитектура (Client-Server) Клиент и сервер разделены. Клиенты запрашивают ресурсы, а серверы предоставляют их. Это разделение позволяет независимое развитие клиента и сервера. 🟠Отсутствие состояния (Stateless) Каждое взаимодействие между клиентом и сервером не зависит от предыдущих взаимодействий. Вся необходимая информация для выполнения запроса должна быть включена в сам запрос. 🟠Кешируемость (Cacheable) Ответы могут быть кешируемыми. Это улучшает производительность, снижая необходимость повторных обращений к серверу для получения одних и тех же данных. 🟠Единообразный интерфейс (Uniform Interface) Определяет единообразный способ взаимодействия с ресурсами, независимо от конкретного клиента или сервера. Включает четыре подпринципа: Идентификация ресурсов: Каждый ресурс имеет уникальный идентификатор (обычно URL). Манипуляция ресурсами через представления: Клиенты взаимодействуют с ресурсами, используя их представления (например, JSON, XML). Самоописываемые сообщения: Сообщения содержат всю необходимую информацию для обработки запроса или ответа. Гипермедиа как движок приложения (HATEOAS): Клиенты получают информацию о доступных действиях через гиперссылки в ответах сервера. 🟠Слои (Layered System) Архитектура может быть многослойной, где каждый слой имеет свои обязанности и скрывает сложность соседних слоев. 🟠Код по требованию (Code on Demand, необязательный) Сервер может передавать исполняемый код клиенту для выполнения. Например, JavaScript для выполнения на стороне клиента. 🚩Пример REST GET: Получить ресурс. POST: Создать новый ресурс. PUT: Обновить существующий ресурс. DELETE: Удалить ресурс. 🚩Пример API 1⃣Получить список пользователей
GET /users
Ответ
      [
       {"id": 1, "name": "Alice"},
       {"id": 2, "name": "Bob"}
   ]
2⃣Получить пользователя по ID
GET /users/1
Ответ
      {"id": 1, "name": "Alice"}
   
3️⃣Создать нового пользователя
POST /users
Тело запроса
{"name": "Charlie"}
Ответ
{"id": 3, "name": "Charlie"}
4⃣Обновить информацию о пользователе
PUT /users/1   
Тело запроса
{"name": "Alice Smith"}
5⃣Удалить пользователя
DELETE /users/1
Ставь 👍 и забирай 📚 Базу знаний

Самоклеящаяся пластырная повязка Cosmopor Стерильная пластырная повязка для ухода за послеоперационными и бытовыми ранами, по
Самоклеящаяся пластырная повязка Cosmopor Стерильная пластырная повязка для ухода за послеоперационными и бытовыми ранами, порезами и ссадинами! - Подходит для чувствительной кожи - Силиконовый слой снижает риск прилипания к ране - Не содержит латекс Cosmopor silicone - бережная защита и комфортные перевязки! Купить Есть противопоказания. Посоветуйтесь с врачом. #реклама ozon.ru О рекламодателе

🤔 Что реализует класс DateTime? 1. Класс DateTime в PHP предоставляет объектно-ориентированный способ работы с датой и временем. 2. Он позволяет создавать, изменять, форматировать и сравнивать даты. 3. Также включает функционал для работы с временными зонами через класс DateTimeZone. 4. Упрощает работу с датами благодаря методам, таким как add(), sub(), и форматированию с помощью format(). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Все 16 времен английского за 1 час. Бесплатно. Звучит нереально? Я, Сергей Сердюков, докажу вам обратное на своем бесплатном
Все 16 времен английского за 1 час. Бесплатно. Звучит нереально? Я, Сергей Сердюков, докажу вам обратное на своем бесплатном вебинаре. Вы поймете всю логику времен без зубрежки, через мою авторскую систему английский как "Остров". Она показывает, как правильно учить язык простому человеку, а не лингвисту Что это даст? ✅ Вы сможете строить любые фразы уверенно и без ошибок ✅ Перестанете бояться грамматики и путаться во временах Это ваш шанс увидеть, как мой метод поможет вам заговорить на английском свободно всего за 6 месяцев. Хотите получить реальный результат от изучения языка? ⚡ Регистрируйтесь прямо сейчас и получите в подарок сборник: "Топ 3000 разговорных слов", чтобы за 2 месяца понимать 80% английской речи. Зарегистрироваться #реклама 16+ eng.int-traf.com О рекламодателе

🤔 Для чего предназначены форматы запросов и ответов приложения? Форматы запросов и ответов в приложении предназначены для стандартизированного обмена данными между клиентом (браузером, мобильным приложением) и сервером (PHP-приложением). Они позволяют: Обеспечить совместимость между разными системами Облегчить обработку данных на сервере и клиенте Структурировать данные в удобном формате 🚩Форматы запросов (Request Formats) Когда клиент отправляет запрос на сервер, данные могут передаваться разными способами. 🟠GET – передача данных через URL Используется для получения информации. Данные передаются в строке запроса.
GET /api/users?id=10
Пример обработки в PHP
$id = $_GET['id']; // Получаем id из URL
🟠POST – передача данных в теле запроса Используется для отправки данных (например, формы).
POST /api/users
Content-Type: application/json

{
    "name": "Иван",
    "email": "ivan@example.com"
}
Пример обработки в PHP
$data = json_decode(file_get_contents("php://input"), true);
echo "Имя: " . $data['name'];
🟠PUT, PATCH, DELETE – для обновления и удаления данных Используются в REST API для изменения или удаления данных. 🚩Форматы ответов (Response Formats) Сервер отправляет ответ в определённом формате, который клиент сможет распознать. 🟠JSON – самый популярный формат Используется в API и веб-приложениях.
{
    "status": "success",
    "message": "Данные получены"
}
Пример ответа в PHP
header("Content-Type: application/json");
echo json_encode(["status" => "success", "message" => "Данные получены"]);
🟠XML – используется в старых системах Пример XML-ответа
<response>
    <status>success</status>
    <message>Данные получены</message>
</response>
🟠HTML – если сервер возвращает веб-страницу Например, при загрузке сайта.
echo "<h1>Привет, мир!</h1>";
🟠Текстовый формат (Plain Text) Если нужен простой текст
header("Content-Type: text/plain");
echo "Привет, это просто текст!";
🚩Как сервер определяет формат ответа? Сервер анализирует заголовок Accept в запросе:
Accept: application/json
PHP может обработать это так:
$accept = $_SERVER['HTTP_ACCEPT'];
if (strpos($accept, "application/json") !== false) {
    header("Content-Type: application/json");
    echo json_encode(["message" => "Привет, JSON!"]);
} else {
    echo "Привет, обычный текст!";
}
Ставь 👍 и забирай 📚 Базу знаний

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

Пожизненная PRO подписка на easyoffer по цене одного года. Акция до 20 февраля. Покупаешь сейчас один раз – пользуешься всю ж
Пожизненная PRO подписка на easyoffer по цене одного года. Акция до 20 февраля. Покупаешь сейчас один раз – пользуешься всю жизнь без лимита, включая все будущие функции. Запланированные новые фичи на ближайшие пол года: 1. Агрегатор вакансий 2. Улучшение резюме, чтобы проходить ATS системы 3. Генерация уникального резюме и сопроводительного письма под вакансию Покупай на https://easyoffer.ru/

🤔 Что содержит инкапсуляция кроме сокрытия данных? Инкапсуляция — это не только скрытие данных, но и ограничение доступа к внутренним деталям объекта + защита логики от внешнего вмешательства. 🚩Основные аспекты инкапсуляции Сокрытие данных (private, protected). Контроль доступа через геттеры и сеттеры. Защита объекта от некорректных данных. Чёткое API для работы с объектом. Разделение ответственности внутри класса. 🟠Сокрытие данных (`private`, `protected`) Скрываем внутренние переменные, чтобы их нельзя было изменить напрямую.
class User {
    private string $password; // Прямой доступ запрещён

    public function __construct(string $password) {
        $this->password = $password;
    }
}

$user = new User("123456");
// echo $user->password; // ❌ Ошибка! Доступ запрещён
🟠Контроль доступа через геттеры и сеттеры Предоставляем доступ к данным через методы (контролируем поведение).
class User {
    private string $password;

    public function __construct(string $password) {
        $this->setPassword($password);
    }

    public function getPassword(): string {
        return "Секретный пароль скрыт"; // Никогда не выдаём оригинал
    }

    public function setPassword(string $password) {
        if (strlen($password) < 6) {
            throw new Exception("Пароль слишком короткий!");
        }
        $this->password = password_hash($password, PASSWORD_DEFAULT);
    }
}

$user = new User("securePass");
// echo $user->password; // ❌ Ошибка! Доступ запрещён
echo $user->getPassword(); // ✅ "Секретный пароль скрыт"
🟠Защита объекта от некорректных данных Инкапсуляция позволяет проверять данные перед их сохранением.
class Product {
    private float $price;

    public function setPrice(float $price) {
        if ($price < 0) {
            throw new Exception("Цена не может быть отрицательной!");
        }
        $this->price = $price;
    }
}
🟠Чёткое API для работы с объектом Инкапсуляция создаёт удобный интерфейс для работы с классом.
class Order {
    private array $items = [];

    public function addItem(string $item) {
        $this->items[] = $item;
    }

    public function getItems(): array {
        return $this->items;
    }
}

$order = new Order();
$order->addItem("Телефон");
print_r($order->getItems()); // ✅ ["Телефон"]
🟠Разделение ответственности внутри класса Инкапсуляция помогает отделить внутреннюю логику от интерфейса.
class BankAccount {
    private float $balance = 0;

    private function logTransaction(float $amount) {
        echo "Транзакция: $amount\n";
    }

    public function deposit(float $amount) {
        $this->balance += $amount;
        $this->logTransaction($amount);
    }

    public function getBalance(): float {
        return $this->balance;
    }
}

$account = new BankAccount();
$account->deposit(100);
echo $account->getBalance(); // ✅ 100
Ставь 👍 и забирай 📚 Базу знаний

Счастливая жизнь в Таиланде с Thailand Privilege Card Thailand Privilege Card – все включено: ✅ Мульти-виза от 5 до 20+ лет с
Счастливая жизнь в Таиланде с Thailand Privilege Card Thailand Privilege Card – все включено: ✅ Мульти-виза от 5 до 20+ лет с безлимитными въездами* ✅ FastTrack в аэропортах и ВИП-сопровождение ✅ Открытие банковских счетов и карт и др. ✅ Поддержка при подаче резидентских отчетов и др. Комфорт, статус и свобода жить так, как любишь. Заявка на бесплатную онлайн-консультацию визового специалиста: Подать заявку #реклама thailandprivilege.co.th О рекламодателе

🤔 Разница между pull и fetch? git pull выполняет fetch (загружает изменения из удалённого репозитория) и автоматически сливает их с локальной веткой. git fetch только загружает изменения, не изменяя локальные файлы, что позволяет вручную контролировать слияние. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем преимущество hash индекс и btree индекс? Hash-индексы и B-Tree-индексы являются двумя типами индексов, используемыми для ускорения операций поиска в базах данных. Оба типа имеют свои преимущества и недостатки в зависимости от конкретных сценариев использования. 🚩Hash-индексыБыстрый доступ по точному совпадению Hash-индексы обеспечивают очень быстрый доступ к данным при выполнении точных поисков (например, SELECT * FROM table WHERE column = 'value'). Время поиска практически константное (O(1)), что делает такие запросы очень эффективными. ➕Простота реализации Hash-индексы просты в реализации и не требуют сложных структур данных для управления. 🚩B-Tree-индексыПоддержка диапазонных запросов B-Tree-индексы поддерживают операции поиска по диапазону и сортировку (например, BETWEEN, >, <, ORDER BY). Данные в B-Tree отсортированы, что делает такие запросы возможными и эффективными. ➕Сбалансированность B-Tree автоматически поддерживает балансировку, что обеспечивает стабильную производительность для всех операций (поиск, вставка, удаление). ➕Универсальность B-Tree-индексы поддерживают широкий спектр операций и типов данных, включая текстовые данные, даты и числа. 🟠Hash-индекс Подходит для сценариев, где часто выполняются точные запросы равенства, например, поиск пользователя по уникальному идентификатору или email.
CREATE INDEX idx_email_hash ON users USING HASH (email);
SELECT * FROM users WHERE email = 'example@example.com';
🟠B-Tree-индекс Подходит для сценариев, где часто выполняются диапазонные запросы, сортировка или комбинированные условия.
CREATE INDEX idx_name_btree ON users (name);
SELECT * FROM users WHERE name BETWEEN 'A' AND 'M';
Ставь 👍 и забирай 📚 Базу знаний

Нужны 7 желающих для работы с искусственным интеллектом. Работа из дома. График свободный. Пришло задание — изучили — выполни
Нужны 7 желающих для работы с искусственным интеллектом. Работа из дома. График свободный. Пришло задание — изучили — выполнили — получили свои деньги. Деньги вы получаете в зависимости от сложности задания. Например: За задание могут платить 500-10.000 рублей. 500 рублей — это около 5-30 минут. 10 000 руб. это 5-6 часов. Работа может быть разной: Оживить фото, создать видео, реставрировать старое фото и т.д. 💰 В среднем новичок получает до 150.000 руб в месяц. А опытный может и 300-500т. Мы обучим вас сами: — 3 дня уроков по 30 минут — Домашки с проверкой и оплатой бонусами — Платим 10 тыс за каждую выполненную домашку ⚡ Набор заканчивается завтра. Для регистрации жмите кнопку "Зарегистрироваться": Зарегистрироваться #реклама 16+ ganstaagency.com О рекламодателе

🤔 Что такое алгоритмическая сложность? Алгоритмическая сложность описывает эффективность алгоритма в зависимости от объёма входных данных. Измеряется во времени выполнения (Time Complexity) и потреблении памяти (Space Complexity). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Расскажи про фабрики Это шаблон проектирования, который относится к порождающим шаблонам и используется для создания объектов без необходимости указывать точный класс создаваемого объекта. Основная идея фабрики заключается в том, чтобы делегировать создание объектов специальному классу или методу, что упрощает управление кодом и позволяет добиться большей гибкости и расширяемости. 🚩Зачем нужны фабрики? 🟠Инкапсуляция процесса создания объектов Если создание объекта требует сложной логики или конфигурации, фабрика позволяет скрыть эту сложность от остальной части кода. 🟠Снижение зависимости от конкретных классов Вы используете интерфейсы или абстрактные классы вместо конкретных реализаций. Это упрощает замену одного типа объекта на другой. 🟠Гибкость и расширяемость Фабрики позволяют добавлять новые классы без изменения существующего кода. 🚩Типы фабрик 🟠Простая фабрика (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). Когда создание объектов сложное и требует дополнительной логики. Когда нужно уменьшить зависимость между модулями. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как устроен Git? Это распределенная система контроля версий, работающая на основе графа коммитов и хранения изменений через хеши (SHA-1). 1. Объектная модель: - Commit – снимок состояния проекта. - Tree – каталог файлов в коммите. - Blob – сами файлы (содержимое). 2. Система ссылок (HEAD, branches, tags). 3. Механизм staging (индексация изменений) перед коммитом. 4. Быстрая работа за счет хранения только изменений (deltas) и поддержки локального репозитория. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний