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

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

前往频道在 Telegram

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

显示更多
2 341
订阅者
-224 小时
-57
-2330
帖子存档
🤔 Какие микросервисные паттерны знаешь? Микросервисные паттерны представляют собой различные архитектурные подходы и методики, используемые для проектирования и реализации микросервисных систем. 🟠Паттерны разбиения на микросервисы Decomposition by Business Capability (Декомпозиция по бизнес-возможностям). Разбиение системы на микросервисы на основе ключевых бизнес-функций, таких как выставление счетов, управление заказами и т.д. В интернет-магазине можно выделить микросервисы для управления продуктами, обработки заказов и управления пользователями. Decomposition by Subdomain (Декомпозиция по субдоменам). Использование методологии Domain-Driven Design (DDD) для разделения на микросервисы по субдоменам. В банковской системе могут быть субдомены для обработки платежей, управления счетами и управления кредитами. 🟠Паттерны взаимодействия и координации API Gateway (Шлюз API). Шлюз API действует как единая точка входа для всех клиентов, перенаправляя запросы к соответствующим микросервисам. Шлюз API может управлять аутентификацией, маршрутизацией запросов и агрегацией данных из нескольких микросервисов. Service Mesh (Сервисная сетка). Инфраструктурный слой для управления сетевыми взаимодействиями между микросервисами, предоставляющий такие функции, как балансировка нагрузки, наблюдаемость и безопасность. Использование Istio или Linkerd для управления сетевыми взаимодействиями между микросервисами. 🟠Паттерны управления данными Database per Service (База данных на микросервис). Каждый микросервис имеет свою собственную базу данных, что позволяет избежать проблем с общей базой данных. В системе электронной коммерции, микросервис для управления товарами может использовать MongoDB, а микросервис для обработки заказов — PostgreSQL. Event Sourcing (Источники событий). Сохранение состояния системы в виде последовательности событий, что позволяет легко восстанавливать состояние системы. В системе управления заказами, каждое изменение статуса заказа может сохраняться как отдельное событие. CQRS (Command Query Responsibility Segregation). Разделение модели данных на операции чтения и записи, что позволяет оптимизировать производительность и масштабируемость. Использование одной модели для обработки команд (записей) и другой модели для выполнения запросов (чтения). 🟠Паттерны устойчивости и отказоустойчивости Circuit Breaker (Схема размыкания цепи). Предотвращение избыточных попыток связи с неработающими микросервисами путем размыкания цепи после определенного числа неудач. В микросервисе обработки платежей использование схемы размыкания цепи для предотвращения перегрузки системы при сбоях в обработке платежей. Bulkhead (Переборка). Разделение ресурсов на изолированные группы для предотвращения каскадных сбоев. В системе управления заказами ограничение числа одновременных запросов к каждому микросервису для предотвращения перегрузки. 🟠Паттерны мониторинга и управления Health Check (Проверка состояния). Регулярная проверка состояния микросервисов для обеспечения их доступности и работоспособности. Реализация эндпоинта /health для каждого микросервиса, который возвращает статус его состояния. Centralized Logging (Централизованный логирование). Сбор и анализ логов из всех микросервисов в одном месте для упрощения мониторинга и отладки. Использование Elasticsearch, Logstash и Kibana (ELK Stack) для централизованного сбора и анализа логов. Ставь 👍 и забирай 📚 Базу знаний

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

Узнайте подробнее о «Золотой визе» Греции! «Золотая виза» Греции остаётся самой выгодной в Европе: ✅Минимальный порог инвести
Узнайте подробнее о «Золотой визе» Греции! «Золотая виза» Греции остаётся самой выгодной в Европе: ✅Минимальный порог инвестиций 250 000 евро ✅Без проживания ✅Инвестиции с высокой доходностью ✅Поможем разблокировать счета в Европе Узнайте актуальную информацию о программе, получите консультацию экспертов Запись вебинара доступна на сайте! Смотреть #реклама 16+ webinar.tranio.ru О рекламодателе

🤔 Может ли абстрактный класс содержать в себе частный метод и почему? Да, абстрактный класс в PHP может содержать частный (private) метод. Это возможно и иногда даже полезно по нескольким причинам. 🚩Почему это возможно и полезно 🟠Инкапсуляция Частные методы помогают скрыть внутреннюю реализацию абстрактного класса, позволяя использовать эти методы только внутри самого абстрактного класса. Это полезно для организации и упрощения кода, когда некоторые вспомогательные методы не должны быть доступны вне класса или его потомков. 🟠Повторное использование кода Частные методы могут использоваться для разбиения кода на логические блоки, что облегчает его повторное использование внутри класса. Это особенно полезно в больших абстрактных классах, где могут быть несколько сложных операций.
abstract class AbstractClass {
    // Абстрактный метод, который должен быть реализован в подклассах
    abstract protected function doSomething();

    // Пример частного метода
    private function helperMethod() {
        // Внутренняя логика, недоступная подклассам
        return "Helper method result";
    }

    // Публичный метод, использующий частный метод
    public function performTask() {
        echo $this->helperMethod();
        $this->doSomething();
    }
}

class ConcreteClass extends AbstractClass {
    protected function doSomething() {
        echo " Doing something in ConcreteClass";
    }
}

$instance = new ConcreteClass();
$instance->performTask(); // Выведет: Helper method result Doing something in ConcreteClass
🚩Основные моменты 🟠Частные методы в абстрактных классах Доступны только внутри самого абстрактного класса и не могут быть вызваны или переопределены в подклассах. 🟠Инкапсуляция и организация кода Частные методы помогают скрыть детали реализации и улучшить структуру кода. 🟠Повторное использование Вспомогательные методы могут быть использованы для выполнения повторяющихся задач внутри класса. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как происходит процесс раскатки (разворачивания) деплоя? Процесс раскатки включает сборку приложения, загрузку на сервер и настройку среды выполнения. Используются инструменты автоматизации, такие как Ansible, Jenkins или Docker, чтобы минимизировать ручной труд. Также применяются проверки на каждом этапе для предотвращения ошибок. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Попробуйте себя в мобильной разработке и аналитике Студенты, готовы прокачивать навыки программирования вместе с опытными пре
Попробуйте себя в мобильной разработке и аналитике Студенты, готовы прокачивать навыки программирования вместе с опытными преподавателями Т-Банка? Узнайте, как создавать приложения, анализировать данные и автоматизировать рутинные задачи, на одном из онлайн-курсов Т-Образования. Для учебы нужно 2—3 часа в неделю. Подайте заявку сейчас. Подать заявку #реклама 16+ education.tbank.ru О рекламодателе

🤔 Зачем придумали анонимные классы? Анонимные классы в PHP были введены в версии 7.0 и позволяют создавать одноразовые объекты без необходимости предварительного объявления класса. Они имеют несколько преимуществ и предназначены для решения ряда задач в программировании. Вот основные причины и случаи, для которых они были придуманы: 🚩Зачем придумали анонимные классы 🟠Упрощение кода Анонимные классы позволяют создать класс на месте, в том же файле, где он используется, без необходимости его предварительного определения. Это упрощает и сокращает код, особенно для одноразовых задач.
$logger = new class {
public function log($message) {
echo $message;
}
};

$logger->log("Hello, World!"); // Выведет: Hello, World!
🟠Инкапсуляция и уменьшение загрязнения пространства имен Поскольку анонимные классы не имеют имен, они не добавляют новых имен в глобальное пространство имен, что помогает избежать конфликтов имен и делает код более чистым. 🟠Использование одноразовых объектов Анонимные классы удобны, когда нужно создать объект для одноразового использования, например, в тестах, или для передачи в функции или методы.
function handleRequest($handler) {
$handler->process();
}

handleRequest(new class {
public function process() {
echo "Processing request";
}
}); // Выведет: Processing request
🟠Более гибкая реализация интерфейсов и абстрактных классов: Анонимные классы могут реализовывать интерфейсы или наследовать от абстрактных классов, предоставляя быстрый способ создать конкретные реализации на месте.
interface Logger {
public function log($message);
}

$logger = new class implements Logger {
public function log($message) {
echo $message;
}
};

$logger->log("Logging message"); // Выведет: Logging message
🟠Улучшение тестирования В юнит-тестах анонимные классы позволяют быстро создавать мок-объекты (mock objects) для тестирования без необходимости создавать отдельные классы для каждой тестовой ситуации.
class Service {
private $logger;

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

public function execute() {
$this->logger->log("Service executed");
}
}

$mockLogger = new class {
public function log($message) {
echo "Mock: " . $message;
}
};

$service = new Service($mockLogger);
$service->execute(); // Выведет: Mock: Service executed
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое анонимные функции? Анонимные функции — это функции, не имеющие имени, которые часто используются для коротких операций. Они объявляются в момент вызова и передаются как аргументы другим функциям. Например, в Python используются lambda, а в JavaScript — стрелочные функции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Курс по frontend-разработке с junior до middle Стань специалистом по frontend-разработке с помощью менторов. Оставь заявку! У
Курс по frontend-разработке с junior до middle Стань специалистом по frontend-разработке с помощью менторов. Оставь заявку! Узнать больше #реклама 16+ ykul.ru О рекламодателе

🤔 Как реализована структура в python в сравнении с другими языками? Структура данных может быть реализована несколькими способами, что делает язык гибким и мощным. Для сравнения с другими языками, такими как C++, Java, и PHP, рассмотрим основные способы создания структур данных. 🚩Python Структуры данных обычно реализуются с использованием классов. Класс позволяет объединить данные и методы, которые работают с этими данными, в одну логическую единицу. Пример простой структуры данных с использованием класса:
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

point = Point(2, 3)
print(point.x, point.y)  # Выведет: 2 3
🚩Namedtuple Python также предоставляет специализированную структуру данных namedtuple из модуля collections, которая позволяет создавать неизменяемые объекты с именованными полями.
from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
point = Point(2, 3)
print(point.x, point.y)  # Выведет: 2 3
🚩С++ Структуры данных могут быть реализованы с использованием struct или классов. struct в C++ аналогичен классу, но по умолчанию имеет публичные члены.
struct Point {
    int x;
    int y;
};

Point point = {2, 3};
std::cout << point.x << " " << point.y;  // Выведет: 2 3
🚩Java Структуры данных реализуются исключительно с использованием классов, поскольку Java не имеет понятия структур как отдельной сущности.
public class Point {
    public int x;
    public int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public static void main(String[] args) {
        Point point = new Point(2, 3);
        System.out.println(point.x + " " + point.y);  // Выведет: 2 3
    }
}
🚩PHP Структуры данных также реализуются с помощью классов. PHP 7 добавил поддержку типизированных свойств, что улучшает типизацию данных внутри классов.
class Point {
    public int $x;
    public int $y;

    public function __construct(int $x, int $y) {
        $this->x = $x;
        $this->y = $y;
    }
}

$point = new Point(2, 3);
echo $point->x . " " . $point->y;  // Выведет: 2 3
🚩Основные различия 🟠Python Использует классы и namedtuple для создания структур данных. Динамическая типизация и простота создания классов. 🟠C++ struct и классы, причем struct по умолчанию имеет публичные члены. Статическая типизация и высокая производительность. 🟠Java Только классы для создания структур данных. Статическая типизация и строгая объектно-ориентированная модель. 🟠PHP Использует классы для создания структур данных. Динамическая типизация с поддержкой типизированных свойств начиная с PHP 7. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое агрегатные функции? Агрегатные функции — это функции SQL, применяемые к набору данных для вычисления общего результата, например, SUM, AVG, MAX, MIN, COUNT. Они часто используются с группировкой данных с помощью оператора GROUP BY. Эти функции помогают анализировать данные, обобщая их характеристики. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

🤔 Какие магические методы у класса знаешь? Есть множество магических методов (также известных как специальные методы или dunder-методы), которые позволяют классу иметь особое поведение. Эти методы начинаются и заканчиваются двумя подчеркиваниями (например, __init__). 🚩Конструкторы и деструкторы 🟠`__init__(self, ...)` Инициализатор объекта. Вызывается при создании нового экземпляра класса. 🟠`__del__(self)` Деструктор. Вызывается перед уничтожением объекта.
class MyClass:
    def __init__(self, value):
        self.value = value
        print(f"Object created with value: {self.value}")

    def __del__(self):
        print(f"Object with value {self.value} is being destroyed")
🚩Представление объекта 🟠`__str__(self)` Возвращает строковое представление объекта для пользователей. 🟠`__repr__(self)` Возвращает строковое представление объекта для разработчиков (более подробное).
class MyClass:
    def __str__(self):
        return "This is a user-friendly string"

    def __repr__(self):
        return "MyClass()"
🚩Арифметические операторы 🟠`__add__(self, other)` Для оператора +. `__sub__(self, other)` Для оператора -. `__mul__(self, other)` Для оператора *. `__truediv__(self, other)` Для оператора /. `__floordiv__(self, other)` Для оператора //. `__mod__(self, other)` Для оператора %. `__pow__(self, other)` Для оператора **.
class MyNumber:
    def __init__(self, value):
        self.value = value

    def __add__(self, other):
        return MyNumber(self.value + other.value)

    def __str__(self):
        return str(self.value)
🚩Сравнительные операторы __eq__(self, other) Для оператора ==. __ne__(self, other) Для оператора !=. __lt__(self, other) Для оператора <. __le__(self, other) Для оператора <=. __gt__(self, other) Для оператора >. __ge__(self, other) Для оператора >=.
class MyNumber:
    def __init__(self, value):
        self.value = value

    def __eq__(self, other):
        return self.value == other.value
Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем HTTP первой версии отличается от второй? HTTP/2 отличается поддержкой мультиплексирования, позволяющего одновременно передавать несколько запросов через одно соединение. Также введены сжатие заголовков и бинарный формат данных вместо текстового, что ускоряет обмен данными. Эти улучшения делают HTTP/2 более производительным по сравнению с HTTP/1.1. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

😎 База IT собеседований – твоё секретное оружие для успешного прохождения этапов отбора! Собеседования от реальных компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и многие другие! 🏢 Мы собрали 230 собесов, чтобы ты мог подготовиться к интервью с уверенностью и успехом. 🎯 Присоединяйся к базе и прокачай свои шансы на успешное трудоустройство!

Гайд «Как собственнику управлять отделом маркетинга?» Собственник бизнеса — это не тот, кто занимается всем, от стратегических решений до маркетинга. Это человек, который создает систему, где каждый элемент работает как одно целое. Маркетолог — это специалист, который погружён в данные, анализ, тестирование гипотез и построение стратегии. Считаете, что можно совмещать это с управлением компанией? Ошибка. Собственник должен направлять бизнес, а не тратить время на то, что могут сделать другие, лучше и эффективнее. Наш гайд — инструкция, как выстроить отдел маркетинга, который будет работать автономно, результативно, а главное, без участия собственника. Это шаг к построению бизнеса, который работает слаженно, как система, а не как набор отдельных задач. Забирайте! Скачать #реклама 16+ cmonster.io О рекламодателе

🤔 Чем отличается left join от right join? Это типы соединений в SQL, которые используются для объединения строк из двух таблиц на основе условия соединения. Основное различие между ними заключается в том, какая таблица считается "основной" и будет возвращать все свои строки, даже если нет соответствующих строк в другой таблице. 🚩LEFT JOIN Возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если в правой таблице нет соответствующих строк, возвращаются NULL для всех столбцов из правой таблицы.
SELECT столбцы
FROM левая_таблица
LEFT JOIN правая_таблица
ON левая_таблица.столбец = правая_таблица.столбец;
Предположим, у нас есть две таблицы: employees (сотрудники) и departments (отделы).
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
🚩RIGHT JOIN Возвращает все строки из правой таблицы и соответствующие строки из левой таблицы. Если в левой таблице нет соответствующих строк, возвращаются NULL для всех столбцов из левой таблицы.
SELECT столбцы
FROM левая_таблица
RIGHT JOIN правая_таблица
ON левая_таблица.столбец = правая_таблица.столбец;
Используя те же таблицы employees и departments:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;
🚩Ключевые различия 🟠Фокусировка на таблице Фокусируется на всех строках левой таблицы. Фокусируется на всех строках правой таблицы. 🟠Отличие в результатах Возвращает все строки из левой таблицы, даже если в правой таблице нет соответствующих строк. Возвращает все строки из правой таблицы, даже если в левой таблице нет соответствующих строк. 🚩Визуальное представление 🟠LEFT JOIN Включает все элементы из левой таблицы и только те элементы из правой таблицы, которые соответствуют условию соединения. 🟠RIGHT JOIN Включает все элементы из правой таблицы и только те элементы из левой таблицы, которые соответствуют условию соединения. Ставь 👍 и забирай 📚 Базу знаний

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

Как выгодно инвестировать в недвижимость Грузии? Хотите узнать? Ответьте на 4 вопроса, и получите бесплатный обзор рынка недвижимости Грузии на 2024-2025 годы. Мы — независимое инвестиционное агентство с 7-летним опытом работы. Помогаем клиентам безопасно и прибыльно инвестировать, защищая их от рисков и обмана. 400+ клиентов уже заработали свыще $200 млн. с нашей помощью! Предоставляем полный анализ любого объекта в Батуми. Сопровождаем сделку на всех этапах. Проверяем юридическую чистоту документов. Узнайте, какие возможности вас ждут, начав с нашего бесплатного обзора рынка! Получить предложение #реклама quiz.internationalinvestment.biz О рекламодателе

🤔 Чем отличается команда composer install от composer update? Команды composer install и composer update в Composer выполняют разные задачи при управлении зависимостями проекта в PHP. 🚩`composer install` 🟠Установка зависимостей composer install используется для установки всех зависимостей, перечисленных в файле composer.lock. Если файла composer.lock нет, он создается на основе composer.json и затем устанавливаются зависимости. 🟠Гарантия версий Команда composer install гарантирует, что будут установлены точно те версии библиотек, которые указаны в composer.lock. Это особенно важно для воспроизводимости среды, например, в командной разработке или при деплое на сервер. 🟠Работа с новым проектом Обычно используется, когда вы клонируете проект и хотите установить те же зависимости, что и у других разработчиков проекта.
composer install
🚩`composer update` 🟠Обновление зависимостей composer update обновляет все зависимости до их последних версий, соответствующих ограничениям версий, указанным в composer.json. Обновляет файл composer.lock новыми версиями зависимостей. 🟠Рискованность Использование composer update может привести к несовместимости или новым багам, так как могут быть установлены новые версии библиотек, которые могут не проходить ваши тесты или не быть совместимыми с вашим кодом. 🟠Управление конкретными зависимостями Вы можете использовать composer update для обновления конкретных библиотек. Например, чтобы обновить только одну библиотеку: composer update vendor/package.
composer update
🚩Пример использования 🟠Когда использовать `composer install` Когда новый разработчик присоединяется к проекту. При деплое приложения на сервер, чтобы обеспечить стабильность. 🟠Когда использовать `composer update` Когда вам нужно обновить зависимости до последних версий для получения новых функций или исправлений. После изменения файла composer.json для добавления новых зависимостей или изменения версий существующих. Ставь 👍 и забирай 📚 Базу знаний