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

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

رفتن به کانال در Telegram

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

نمایش بیشتر
2 342
مشترکین
-224 ساعت
-67 روز
-2530 روز
آرشیو پست ها
🤔 Как работает динамическая типизация? Динамическая типизация позволяет переменной менять тип во время выполнения программы. Тип определяется автоматически на основе присвоенного значения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем принцип работы 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
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какое отличие у протоколов tcp и udp? Это два основных транспортных протокола в интернете. Они имеют разные характеристики и используются для различных целей. 🚩Основные отличия 🟠Надежность TCP: Обеспечивает надежную передачу данных. Он использует механизмы установления соединения, подтверждение получения (ACK), контроль потерь пакетов, повторную передачу потерянных пакетов и контроль потока. Это гарантирует, что данные будут доставлены корректно и в правильном порядке. UDP: Не обеспечивает надежную передачу данных. Нет подтверждений получения, нет повторной передачи потерянных пакетов и нет контроля потока. Это делает передачу менее надежной, но более быстрой и с меньшими накладными расходами. 🟠Установление соединения TCP: Перед началом передачи данных устанавливается соединение с помощью процедуры "трехстороннего рукопожатия" (three-way handshake). Это означает, что обе стороны сначала обмениваются сигналами SYN и ACK для установления соединения. UDP: Не требует установления соединения. Пакеты (датаграммы) просто отправляются к получателю без предварительного установления соединения. 🟠Порядок доставки TCP: Обеспечивает доставку данных в правильном порядке. Если пакеты приходят в неправильном порядке, TCP собирает их в правильном порядке перед передачей приложению. UDP: Не гарантирует порядок доставки. Пакеты могут приходить в произвольном порядке, и приложение должно обрабатывать их соответствующим образом, если это необходимо. 🟠Пропускная способность и задержки TCP: Из-за механизмов контроля потока и подтверждений имеет большие накладные расходы и, следовательно, может быть медленнее. Это особенно заметно на сетях с высокой задержкой или потерей пакетов. UDP: Из-за отсутствия контроля потока и подтверждений имеет меньшие накладные расходы, что может привести к меньшим задержкам и большей пропускной способности. Подходит для приложений, где важна скорость, а не надежность. 🟠Применение TCP: Используется для приложений, где важна надежность и порядок передачи данных, таких как веб-браузеры (HTTP/HTTPS), электронная почта (SMTP, IMAP, POP3), файловые передачи (FTP), удаленный доступ (SSH). UDP: Используется для приложений, где важна скорость и где потеря некоторых пакетов не критична, таких как потоковое видео и аудио (VoIP, IPTV), онлайн-игры, службы доменных имен (DNS). 🚩Примеры использования TCP
HTTP/HTTPS: Веб-серфинг
SMTP: Отправка электронной почты
IMAP/POP3: Получение электронной почты
FTP: Передача файлов
SSH: Безопасный удаленный доступ
UDP
DNS: Запросы доменных имен
VoIP: Передача голоса через IP
IPTV: Потоковое видео
Онлайн-игры: Быстрая передача данных игровой логики
NTP: Синхронизация времени
Ставь 👍 и забирай 📚 Базу знаний

Открой мощь новых MSI с GeForce RTX 50 Серия NVIDIA GeForce RTX 50 в ноутбуках MSI — это квантовый скачок в мире мощности. Иг
Открой мощь новых MSI с GeForce RTX 50 Серия NVIDIA GeForce RTX 50 в ноутбуках MSI — это квантовый скачок в мире мощности. Игры на максималках, 3D-рендер без ожиданий, монтаж видео в реальном времени и искусственный интеллект, работающий с небывалой скоростью. Эта техника создана не просто для задач — она их уничтожает. Будь в центре производительности нового поколения. MSI с RTX 50 — когда ты не хочешь ждать, а действуешь. Узнать больше #реклама msi.gm О рекламодателе

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

🤔 Для чего важна передача данных в РНР? Передача данных в PHP играет ключевую роль, потому что большинство веб-приложений работают с вводом и выводом данных. 🚩Основные способы передачи данных в PHP 🟠Передача данных через `GET` (в URL) Когда использовать: когда данные не секретные и нужно поделиться ссылкой.
// URL: example.com/page.php?name=Alice&age=25
echo $_GET['name']; // Alice
echo $_GET['age'];  // 25
🟠Передача данных через `POST` (скрыто, чаще через формы) Когда использовать: если данные конфиденциальные или большие (файлы, формы).
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    echo $_POST['username'];
}
🟠Передача данных через `SESSION` (сохраняются между страницами) Когда использовать: если нужно запомнить данные пользователя между запросами.
session_start();
$_SESSION['user'] = "Alice"; // Сохраняем данные

echo $_SESSION['user']; // Alice
🟠Передача данных через `COOKIE` (сохраняются в браузере) Когда использовать: если данные должны храниться даже после закрытия браузера.
setcookie("user", "Alice", time() + 3600); // Кука на 1 час
echo $_COOKIE['user']; // Alice
🟠Передача данных в API (JSON, `php://input`) Когда использовать: если PHP получает данные от другого сервиса (например, мобильного приложения или JavaScript).
$data = json_decode(file_get_contents("php://input"), true);
echo $data['name'];
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое логирование? Это запись событий, ошибок и действий приложения в журнал для диагностики и анализа. 1. Логи помогают отслеживать выполнение кода, анализировать сбои и выявлять узкие места. 2. Используются различные уровни логов: INFO, DEBUG, ERROR. 3. Это важный инструмент для отладки, мониторинга и аудита системы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 По какому принципу будешь выбирать архитектуру? Это сложный и ответственный процесс, который зависит от множества факторов. Принятие правильного решения требует анализа требований, условий и ограничений проекта. Основные принципы, по которым выбирается архитектура, включают следующие: 🚩Принципы выбор 🟠Требования к проекту Функциональные требования: Какие функции должно выполнять приложение? Нефункциональные требования: Производительность, масштабируемость, надежность, безопасность и т.д. 🟠Объем и сложность проекта Размер команды: Количество разработчиков, их опыт и навыки. Сложность бизнес-логики: Насколько сложны процессы и операции, которые будет выполнять система. 🟠Масштабируемость и производительность Нагрузка: Ожидаемое количество пользователей, объем данных и частота операций. Горизонтальная и вертикальная масштабируемость: Возможность добавления новых серверов или улучшения существующих для обработки увеличивающейся нагрузки. 🟠Надежность и отказоустойчивость Требования к доступности: Время безотказной работы и допустимые уровни простоя. Механизмы резервирования и восстановления: Способы обеспечения бесперебойной работы при сбоях. 🟠Безопасность Конфиденциальность данных: Как будет обеспечиваться защита данных от несанкционированного доступа. Целостность данных: Меры для предотвращения и обнаружения изменений данных. 🟠Управляемость и поддержка Обслуживаемость: Легкость управления, мониторинга и обновления системы. Документирование: Наличие подробной документации для поддержки и развития. 🟠Интеграция с другими системами Совместимость: Как система будет взаимодействовать с другими приложениями и сервисами. Стандарты и протоколы: Используемые стандарты для обеспечения совместимости и взаимодействия. 🟠Стоимость и сроки Бюджет: Стоимость разработки, развертывания и поддержки системы. Временные ограничения: Сроки выполнения проекта и время на разработку. 🚩Примеры выбора 🟠Monolithic Architecture (Монолитная архитектура) Небольшие или средние проекты с низкой сложностью. Ограниченные требования к масштабируемости. Ограниченные ресурсы и сроки разработки. Простое веб-приложение для управления контентом (CMS), где все компоненты (база данных, интерфейс пользователя, логика приложения) развернуты на одном сервере. 🟠Microservices Architecture (Микросервисная архитектура) Большие и сложные проекты с высокой нагрузкой. Требуется высокая масштабируемость и отказоустойчивость. Разделение разработки на независимые команды. Электронная коммерция, где отдельные микросервисы управляют различными аспектами системы, такими как управление продуктами, корзина, платежи, учетные записи пользователей и т.д. 🟠Event-Driven Architecture (Событийно-ориентированная архитектура) Системы, которые должны реагировать на события в реальном времени. Высокая гибкость и адаптивность к изменяющимся условиям. Финансовая торговая платформа, где события от биржи передаются и обрабатываются различными сервисами в реальном времени для выполнения сделок и анализа данных. 🟠Serverless Architecture (Безсерверная архитектура) Приложения с переменной нагрузкой. Минимизация операционных расходов и управление серверной инфраструктурой. Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Что такое HTTP? HTTP (HyperText Transfer Protocol) — это протокол передачи гипертекста, используемый для обмена данными между веб-браузером и сервером. HTTP определяет методы (GET, POST, DELETE и др.), которые управляют отправкой и получением данных через Интернет.? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что есть кроме микросервисной и монолитной архитектуры? Помимо монолитной и микросервисной архитектуры, существуют другие подходы к построению программных систем. Каждый из них решает свои задачи и подходит для разных типов проектов. 🚩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) для передачи данных. В нагруженных системах, где много событий (банковские системы, биржи). Когда нужна гибкость и асинхронность. Ставь 👍 и забирай 📚 Базу знаний

Бесплатный курс Digital-дизайна На бесплатном курсе ты сможешь: ✨попробовать себя в digital-дизайне: афиши, сайты, UX/UI ✨сде
Бесплатный курс Digital-дизайна На бесплатном курсе ты сможешь: ✨попробовать себя в digital-дизайне: афиши, сайты, UX/UI ✨сделать 3 проекта для портфолио с фидбэком от наставника ✨понять, как устроена работа дизайнера ✨получить доступ к «секретной базе» и гайдам по профессии Попробовать #реклама 16+ study.logomachine.ru О рекламодателе

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

🤔 Что такое абстрагирование? Это принцип программирования и проектирования, который позволяет выделить важные характеристики объекта или системы и скрыть их сложные детали. Основная цель абстрагирования – упростить сложные системы, делая их более понятными и управляемыми, сосредоточив внимание на их основных аспектах и поведении. 🚩Зачем нужно абстрагирование 🟠Снижение сложности Сокращает количество деталей, с которыми нужно работать, что облегчает понимание и работу с системой. 🟠Повышение читаемости кода Упрощает код, делая его более читаемым и легким для поддержки. 🟠Повторное использование кода Создаёт возможность повторного использования общих функций и логики. 🟠Инкапсуляция Позволяет скрывать реализацию и представлять только необходимые интерфейсы для взаимодействия. 🟠Гибкость и расширяемость Облегчает добавление новых функциональностей без изменения существующего кода. 🚩Как используется абстрагирование Абстрагирование в программировании часто реализуется через классы и интерфейсы. Ниже приведены примеры абстракции в объектно-ориентированном программировании (ООП). 🚩Пример абстракции с использованием классов и интерфейсов 🟠Интерфейс Определяет набор методов, которые должны быть реализованы, не указывая, как именно они должны быть реализованы.
interface Shape {
    public function draw();
}
🟠Классы, реализующие интерфейс Реализуют методы, определённые в интерфейсе.
class Circle implements Shape {
    public function draw() {
        echo "Drawing a circle";
    }
}

class Square implements Shape {
    public function draw() {
        echo "Drawing a square";
    }
}
Использование абстракции
function renderShape(Shape $shape) {
    $shape->draw();
}

$circle = new Circle();
$square = new Square();

renderShape($circle); // Вывод: Drawing a circle
renderShape($square); // Вывод: Drawing a square
🚩Плюсы и минусы Снижение сложности Абстракция скрывает сложные детали реализации, облегчая работу с системой. ➕Улучшение читаемости Код становится более понятным и структурированным. ➕Гибкость и расширяемость Облегчает добавление новых функций и изменений. ➕Повторное использование Позволяет использовать общий код в разных частях программы. ➖Избыточность Иногда может приводить к избыточной сложности, если абстракции слишком сложные или используются неправильно. ➖Накладные расходы Может потребоваться больше времени и усилий на создание абстракций и их поддержку. Ставь 👍 и забирай 📚 Базу знаний

REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызо
REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызовы и их решения. С докладами на актуальные темы выступят лидеры индустрии и медийные спикеры. Принять участие можно офлайн и онлайн. Мероприятие бесплатное, нужно только зарегистрироваться. Зарегистрироваться #реклама 18+ ya.rekonfa.ru О рекламодателе

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

🤔 Какая разница между self и this? self и this используются для ссылки на текущий класс и его экземпляр соответственно, но каждый из них имеет свои особенности и область применения. 🚩this Используется для обращения к текущему объекту класса. Он позволяет получить доступ к нестатическим свойствам и методам объекта. Является ссылкой на вызываемый объект и используется внутри методов объекта для обращения к его свойствам и методам.
class Car {
    public $color = 'red';

    public function getColor() {
        return $this->color; // Используется $this для доступа к свойству текущего объекта
    }
}

$myCar = new Car();
echo $myCar->getColor(); // Выведет 'red'
🚩self Используется для обращения к текущему классу и применяется в основном для доступа к статическим свойствам и методам класса. Ссылается на класс, в котором она была вызвана, и не требует создания экземпляра объекта для доступа к содержимому.
class Car {
    public static $count = 0;

    public function __construct() {
        self::$count++; // Используется self для доступа к статическому свойству
    }

    public static function getTotalCars() {
        return self::$count; // Обращение к статическому методу или свойству
    }
}

$newCar1 = new Car();
$newCar2 = new Car();
echo Car::getTotalCars(); // Выведет '2'
🚩Основные различия 🟠Контекст использования $this используется для доступа к свойствам и методам текущего объекта экземпляра, тогда как self используется для доступа к статическим свойствам и методам класса. 🟠Статический vs Нестатический $this нельзя использовать в статических методах, потому что статические методы могут быть вызваны без создания объекта класса. self, напротив, предназначена для использования в статическом контексте. 🟠Привязка self привязана к классу, в котором она написана, а $this — к объекту, через который вызывается метод. Ставь 👍 и забирай 📚 Базу знаний

Приглашаем на Yandex Neuro Scale В этом году главная конференция Yandex Cloud объединит разработчиков, архитекторов, инженеро
Приглашаем на Yandex Neuro Scale В этом году главная конференция Yandex Cloud объединит разработчиков, архитекторов, инженеров и IT-руководителей, чтобы обменяться опытом и увидеть, как работают технологии, которые меняют индустрии. 7 тематических треков, 50+ докладов, реальные бизнес-кейсы и нетворкинг! ✨Участие бесплатное, нужно только зарегистрироваться!✨ Зарегистрироваться #реклама 16+ scale.yandex.cloud О рекламодателе Реклама на Яндексе