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 день. Это просто невероятно!
Благодаря вашей поддержке, я смогу привлечь еще больше людей для разработки сайта и обработки собеседований. Ваш вклад сделает проект качественнее и ускорит его выход! Огромное вам спасибо!
Краудфандинг будет продолжаться еще 31 день и все кто поддержать проект сейчас, до его выхода, смогут получить:
🚀 PRO-тариф на 1 год, по цене месячной подписки на релизе.
➕ Доступ к закрытому бета-тесту easyoffer 2.0 (середина–конец мая)
Поддержать проект можно здесь:
https://planeta.ru/campaigns/easyoffer
Огромное спасибо за вашу поддержку! 🤝
Repost from easyoffer
🎉 Краудфандинг 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 — для логики.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
+3
Надежный поставщик IT-оборудования для бизнеса
Ваша компания нуждается в современном компьютерном оборудовании? Мы — ваш надежный партнер в мире IT!
🏠 Что мы предлагаем:
Персональные компьютеры и серверы
Источники бесперебойного питания
Коммутаторы и сетевое оборудование
Сборка ПК под ваши задачи
👍 Почему выбирают нас:
Прямые контракты с производителями
Легальный параллельный импорт
Быстрая обработка заявок
Конкурентные цены
Работаем с НДС
✅Сервис на высоте:
Оперативная доставка по Москве и всей России
Официальная гарантия на всё оборудование
Техническая поддержка после покупки
Участвуем в тендерах и госзакупках
💰Специальные условия:
Для постоянных клиентов
При оптовых заказах
📞+7 (499) 130 99 29
Работаем с юр.лицами с 2010 года
Написать в Telegram
#реклама
i-clover.ru
О рекламодателе
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
