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

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

前往频道在 Telegram

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

显示更多
2 344
订阅者
+224 小时
-27
-2430
帖子存档
🤔 Что такое миграции? Это механизм управления изменениями в структуре базы данных. 1. Позволяют добавлять, изменять или удалять таблицы, столбцы и индексы в контролируемой форме. 2. Помогают синхронизировать структуру базы данных между разработчиками и окружениями. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что если в классе есть публичное свойство, это означает что класс иммутабельный или нет? Нет, наличие публичного свойства в классе не делает его автоматически иммутабельным. 🚩Что такое иммутабельность Означает, что состояние объекта не может измениться после его создания. Все изменения создают новый объект, вместо изменения состояния существующего объекта. 🚩Публичные свойства и иммутабельность Означает, что его можно изменить из любого места, где доступен экземпляр класса. Таким образом, если у класса есть публичное свойство, этот класс не может считаться иммутабельным, поскольку его состояние можно изменять напрямую. 🚩Пример неиммутабельного класса В этом примере свойство name публичное, и его значение может быть изменено после создания объекта, что нарушает иммутабельность.
class Person {
    public $name;

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

$person = new Person("John");
$person->name = "Doe"; // Состояние объекта изменено
🚩Иммутабельный класс Для создания иммутабельного класса свойства должны быть приватными или защищёнными, и изменение этих свойств должно быть невозможным после создания объекта.
class ImmutablePerson {
    private $name;

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

    public function getName() {
        return $this->name;
    }
}

$person = new ImmutablePerson("John");
// $person->name = "Doe"; // Это вызовет ошибку, т.к. свойство приватное
echo $person->getName(); // Выведет: John
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое агрегатные функции? Агрегатные функции в контексте управления базами данных и SQL — это специальные функции, которые выполняют вычисление над набором значений и возвращают единственный результат. Они часто используются для выполнения математических, статистических и других операций с данными в запросах для анализа и обобщения информации из множества записей. 🚩Основные агрегатные функции 🟠COUNT() Подсчитывает количество элементов в наборе. Эта функция может использоваться для подсчета количества строк в таблице или количества строк, соответствующих определенным критериям. Пример: SELECT COUNT(*) FROM users; — подсчитывает количество всех строк в таблице users. 🟠SUM() Суммирует числовые значения столбца. Используется для получения общей суммы числовых данных. Пример: SELECT SUM(salary) FROM employees; — считает общую сумму зарплат всех сотрудников. 🟠AVG() Вычисляет среднее значение числовых данных. Эта функция полезна для нахождения среднего значения определенного столбца. Пример: SELECT AVG(price) FROM products; — рассчитывает среднюю цену продукта. 🟠MIN() и MAX() Возвращают минимальное и максимальное значения в столбце соответственно. Эти функции используются для нахождения наименьших и наибольших значений. Пример: SELECT MIN(age), MAX(age) FROM users; — находит минимальный и максимальный возраст среди пользователей. 🟠GROUP_CONCAT() (в MySQL) / STRING_AGG() (в PostgreSQL) Склеивают строки из столбца, объединяя их в одну строку с разделителем. Пример (MySQL): SELECT GROUP_CONCAT(username SEPARATOR ', ') FROM users WHERE city = 'New York'; — объединяет имена пользователей из Нью-Йорка через запятую. Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какие протоколы ты знаешь? Протоколы в сетевых системах обеспечивают правила передачи данных. Они работают на разных уровнях модели OSI и TCP/IP. Вот основные виды протоколов: 🚩Основные виды протоколов 🟠Физический и канальный уровни Ethernet: Передача данных по проводным сетям. Wi-Fi (IEEE 802.11): Беспроводная передача данных. PPP (Point-to-Point Protocol): Соединение между двумя узлами. HDLC (High-Level Data Link Control): Передача данных на канальном уровне. 🟠Сетевой уровень IP (Internet Protocol): Основной протокол для передачи данных в интернете (IPv4 и IPv6). ICMP (Internet Control Message Protocol): Передача сообщений об ошибках и контроля. 🟠Транспортный уровень TCP (Transmission Control Protocol): Надежная передача данных. UDP (User Datagram Protocol): Быстрая, но ненадежная передача данных. 🟠Сеансовый и представительный уровни SSL/TLS (Secure Sockets Layer / Transport Layer Security): Обеспечение безопасности передачи данных. NetBIOS: Работа сетевых приложений в локальных сетях. 🟠Прикладной уровень HTTP/HTTPS (HyperText Transfer Protocol / Secure): Передача веб-страниц. FTP (File Transfer Protocol): Передача файлов. SMTP (Simple Mail Transfer Protocol): Передача электронной почты. POP3/IMAP: Получение электронной почты. DNS (Domain Name System): Преобразование доменных имен в IP-адреса. SSH (Secure Shell): Безопасное удаленное управление серверами. SNMP (Simple Network Management Protocol): Управление сетевыми устройствами. LDAP (Lightweight Directory Access Protocol): Доступ и управление каталогами. DHCP (Dynamic Host Configuration Protocol): Динамическое назначение IP-адресов. 🟠Специализированные протоколы VoIP (Voice over IP): Передача голосовых данных (SIP, RTP). MQTT (Message Queuing Telemetry Transport): Обмен сообщениями в IoT. CoAP (Constrained Application Protocol): Работа с ограниченными устройствами в IoT. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие типы данных есть в PHP? В PHP есть восемь основных типов данных: четыре скалярных (integer, float, string, boolean) и четыре составных (array, object, callable, iterable). Также существуют два специальных типа: `resource` для ссылок на внешние ресурсы и `null` для отсутствия значения. Эти типы данных позволяют гибко работать с различными структурами данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что реализует класс Datetime? Класс DateTime в PHP предоставляет удобные инструменты для работы с датами и временем. Он заменяет устаревшие функции date(), strtotime() и делает код более читаемым и гибким. 🚩Что умеет `DateTime`? Создавать даты и время. Изменять, прибавлять, вычитать дни, месяцы, годы. Преобразовывать дату в строку (format()). Работать с часовыми поясами (DateTimeZone). Сравнивать даты (diff()). Преобразовывать в Unix Timestamp (getTimestamp()). 🚩Примеры использования `DateTime` 1⃣Создание объекта DateTime
$date = new DateTime(); // Текущая дата и время
echo $date->format('Y-m-d H:i:s'); // 2025-02-24 15:30:00
2⃣Создание DateTime с конкретной датой
$date = new DateTime('2023-12-31 23:59:59');
echo $date->format('d.m.Y H:i'); // 31.12.2023 23:59
3⃣Прибавить / Вычесть дни, месяцы, годы (modify())
$date = new DateTime('2024-01-01');
$date->modify('+1 month'); // Добавить 1 месяц
echo $date->format('Y-m-d'); // 2024-02-01

$date->modify('-10 days'); // Вычесть 10 дней
echo $date->format('Y-m-d'); // 2024-01-22
4⃣Разница между датами (diff())
$date1 = new DateTime('2024-01-01');
$date2 = new DateTime('2025-01-01');

$diff = $date1->diff($date2);
echo $diff->days; // 366 (разница в днях)
echo $diff->y;    // 1 (разница в годах)
5⃣Работа с часовыми поясами (DateTimeZone)
$date = new DateTime('now', new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:s'); // Время в Нью-Йорке
6⃣Преобразование DateTime в Timestamp (getTimestamp())
$date = new DateTime('2024-01-01');
echo $date->getTimestamp(); // 1704067200 (Unix-время)
7⃣Создание DateTime из Timestamp (setTimestamp())
$date = new DateTime();
$date->setTimestamp(1704067200);
echo $date->format('Y-m-d H:i:s'); // 2024-01-01 00:00:00
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Расскажи про букву D в SOLID и ее связь с интерфейсами? Принцип Dependency Inversion (DIP) гласит: Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций (интерфейсов). Код не должен зависеть от конкретных классов, а должен работать через интерфейсы или абстракции. Это делает код гибче и меньше зависящим от деталей реализации. 🚩Как DIP связан с интерфейсами? Плохой код (без инверсии зависимостей)
class MySQLDatabase {
    public function connect() {
        return "Подключение к MySQL";
    }
}

class UserRepository {
    private MySQLDatabase $db; // Жёсткая зависимость!

    public function __construct() {
        $this->db = new MySQLDatabase();
    }
}
Хороший код (через интерфейс, следуя DIP)
interface DatabaseInterface {
    public function connect();
}

class MySQLDatabase implements DatabaseInterface {
    public function connect() {
        return "Подключение к MySQL";
    }
}

class PostgreSQLDatabase implements DatabaseInterface {
    public function connect() {
        return "Подключение к PostgreSQL";
    }
}

class UserRepository {
    private DatabaseInterface $db;

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

// Теперь можно подставить любую базу данных!
$mysqlRepo = new UserRepository(new MySQLDatabase());
$pgRepo = new UserRepository(new PostgreSQLDatabase());
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 По чему WHERE AVG считает в среднем? В SQL, когда мы используем AVG(), мы рассчитываем среднее значение по множеству строк. Но WHERE фильтрует отдельные строки, а не группы данных. Проблема
SELECT * FROM products WHERE AVG(price) > 100; -- ❌ Ошибка!
🚩Как правильно использовать `AVG()` в фильтрах? Использовать HAVING вместо WHERE (если есть GROUP BY)
SELECT category, AVG(price) as avg_price 
FROM products 
GROUP BY category 
HAVING AVG(price) > 100;
Использовать подзапрос (SUBQUERY) в WHERE
SELECT * FROM products 
WHERE price > (SELECT AVG(price) FROM products);
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что есть кроме микросервисной и монолитной архитектуры? Помимо монолитной и микросервисной архитектуры, существуют другие подходы к построению программных систем. Каждый из них решает свои задачи и подходит для разных типов проектов. 🚩Service-Oriented Architecture (SOA) – Сервисно-ориентированная архитектура - Это переходный вариант между монолитом и микросервисами. - В SOA приложение делится на крупные сервисы (например, "Платежи", "Пользователи", "Заказы"). - Все сервисы взаимодействуют через ESB (Enterprise Service Bus) – специальный слой для связи между сервисами. Для крупных корпоративных систем, где много интеграций. Когда нужна централизованная логика взаимодействия сервисов. 🚩Serverless (Бессерверная архитектура) - Код выполняется в облаке, а не на собственных серверах. - Программист пишет функции (FaaS – Function as a Service), которые выполняются по запросу. - Серверы управляются автоматически (AWS Lambda, Google Cloud Functions). Когда нужно автоматическое масштабирование (например, обработка миллионов событий). Для маленьких ивентовых задач (обработка файлов, уведомления, API-эндпоинты). 🚩Event-Driven Architecture (EDA) – Событийно-ориентированная архитектура - Компоненты системы не вызывают друг друга напрямую, а общаются через события. - Используется*message broker (Kafka, RabbitMQ, Redis Pub/Sub) для передачи данных. В нагруженных системах, где много событий (банковские системы, биржи). Когда нужна гибкость и асинхронность. Ставь 👍 и забирай 📚 Базу знаний

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

Repost from easyoffer
Я поставил целью сбора скромные 300 тыс. рублей, но ребята, вы накидали больше млн. всего за 1 день. Это просто невероятно! Б
Я поставил целью сбора скромные 300 тыс. рублей, но ребята, вы накидали больше млн. всего за 1 день. Это просто невероятно! Благодаря вашей поддержке, я смогу привлечь еще больше людей для разработки сайта и обработки собеседований. Ваш вклад сделает проект качественнее и ускорит его выход! Огромное вам спасибо! Краудфандинг будет продолжаться еще 31 день и все кто поддержать проект сейчас, до его выхода, смогут получить: 🚀 PRO-тариф на 1 год, по цене месячной подписки на релизе. ➕ Доступ к закрытому бета-тесту easyoffer 2.0 (середина–конец мая) Поддержать проект можно здесь: https://planeta.ru/campaigns/easyoffer Огромное спасибо за вашу поддержку! 🤝

Repost from easyoffer
🎉 Краудфандинг easyoffer 2.0 стартовал! Друзья, с этого момента вы можете поддержать проект и получить существенный бонус: �
🎉 Краудфандинг easyoffer 2.0 стартовал! Друзья, с этого момента вы можете поддержать проект и получить существенный бонус: 🚀 PRO-тариф на 1 год, по цене месячной подписки на релизе. ➕ Доступ к закрытому бета-тесту easyoffer 2.0 (середина–конец мая) Поддержать проект можно здесь: https://planeta.ru/campaigns/easyoffer 📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ

🤔 Что такое агрегат? Агрегат – это термин, часто используемый в области баз данных и программирования, который обозначает способ группировки данных для выполнения различных операций, таких как суммирование, подсчёт, нахождение среднего значения и другие. В реляционных базах данных агрегаты применяются для выполнения агрегатных функций, таких как SUM(), COUNT(), AVG(), MAX(), MIN() и других. 🚩Зачем нужны? 🟠Анализ данных: Агрегаты позволяют получить сводные данные, которые помогают анализировать и понимать большие наборы данных. Например, можно узнать общее количество продаж, среднюю стоимость заказа, максимальную и минимальную зарплату сотрудников и т.д. 🟠Оптимизация запросов: Использование агрегатных функций позволяет выполнять сложные вычисления на сервере базы данных, что экономит время и ресурсы по сравнению с выполнением этих операций на клиентской стороне. 🚩Примеры использования агрегатных функций: Суммирование (SUM):
-- Получение общей суммы всех заказов
SELECT SUM(total_amount) AS total_sales
FROM orders;
Подсчёт (COUNT):
-- Подсчёт общего количества заказов
SELECT COUNT(*) AS total_orders
FROM orders;
Среднее значение (AVG):
-- Нахождение средней суммы заказа
SELECT AVG(total_amount) AS average_order_value
FROM orders;
Максимальное значение (MAX):
-- Нахождение максимальной суммы заказа
SELECT MAX(total_amount) AS max_order_value
FROM orders;
Минимальное значение (MIN):
-- Нахождение минимальной суммы заказа
SELECT MIN(total_amount) AS min_order_value
FROM orders;
🚩 Группировка данных с использованием GROUP BY: Для более сложных запросов можно использовать агрегатные функции вместе с оператором GROUP BY, чтобы группировать данные по определённому критерию. В этом запросе результаты будут сгруппированы по customer_id, и для каждого клиента будет рассчитана общая сумма заказов.
-- Получение общей суммы заказов для каждого клиента
SELECT customer_id, SUM(total_amount) AS total_sales_per_customer
FROM orders
GROUP BY customer_id;
Ставь 👍 и забирай 📚 Базу знаний

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

Надежный поставщик IT-оборудования для бизнеса Ваша компания нуждается в современном компьютерном оборудовании? Мы — ваш наде
+3
Надежный поставщик IT-оборудования для бизнеса Ваша компания нуждается в современном компьютерном оборудовании? Мы — ваш надежный партнер в мире IT! 🏠 Что мы предлагаем: Персональные компьютеры и серверы Источники бесперебойного питания Коммутаторы и сетевое оборудование Сборка ПК под ваши задачи 👍 Почему выбирают нас: Прямые контракты с производителями Легальный параллельный импорт Быстрая обработка заявок Конкурентные цены Работаем с НДС ✅Сервис на высоте: Оперативная доставка по Москве и всей России Официальная гарантия на всё оборудование Техническая поддержка после покупки Участвуем в тендерах и госзакупках 💰Специальные условия: Для постоянных клиентов При оптовых заказах 📞+7 (499) 130 99 29 Работаем с юр.лицами с 2010 года Написать в Telegram #реклама i-clover.ru О рекламодателе