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

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

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

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

نمایش بیشتر
2 334
مشترکین
-324 ساعت
-57 روز
-1830 روز
آرشیو پست ها
🤔 Зачем нужно ключевое слово final? Ключевое слово final в PHP используется для того, чтобы запретить наследование классов или переопределение методов в дочерних классах. Это помогает защитить важные части кода от изменения и сохранять логику в неприкосновенности. Final используется для обеспечения предсказуемости поведения в классах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое middleware? Это ПО, которое располагается между веб-сервером и приложением. Оно обрабатывает входящие запросы до того, как они достигнут вашего приложения, или обрабатывает исходящие ответы после того, как приложение их сгенерировало. 🚩Зачем нужен Middleware 🟠Управление запросами Может изменять или проверять запросы перед передачей их в приложение. Например, оно может проверять наличие валидных токенов доступа для аутентификации или осуществлять проверку прав доступа. 🟠Перехват ответов Также может изменять ответы перед тем, как они будут отправлены пользователю, например, добавлять нужные заголовки HTTP или сжимать данные. 🟠Логирование и мониторинг Оно может записывать информацию о запросах и ответах для анализа трафика или обнаружения ошибок. 🟠Обработка ошибок Часто используется для централизованной обработки ошибок, позволяя управлять ошибками элегантно и единообразно.
namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class CheckAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!Auth::check()) {
            return redirect('/login');
        }

        return $next($request);
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Пожизненный PRO доступ на easyoffer — по цене одного года! До 2 сентября вы можете купить PRO навсегда. Покупаешь один раз — пользуешься всю жизнь. – База вопросов и задач из собеседований – Примеры видео-ответов на вопросы – Записи реальных собеседований – Тренажеры "Проработка вопросов" и "Реальное собеседование" – Аналитика требований из вакансий – Автоотклики на вакансии – Агрегатор вакансий (скоро) 👉 Купить PRO со скидкой 70%: https://easyoffer.ru/pro

🤔 Какие паттерны знаешь? В программировании и разработке ПО существует множество паттернов проектирования, включая: - Порождающие: Singleton, Factory, Builder, Prototype. - Структурные: Adapter, Decorator, Facade, Proxy, Bridge. - Поведенческие: Observer, Strategy, Command, State, Template Method, Iterator, Mediator. Эти паттерны помогают решать общие проблемы проектирования, повышая уровень абстракции и уменьшая связность компонентов? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Самое интересное в российском PostgreSQL этой осенью! Регистрируйтесь на бесплатную конференцию по PostgreSQL и технологиям С
Самое интересное в российском PostgreSQL этой осенью! Регистрируйтесь на бесплатную конференцию по PostgreSQL и технологиям СУБД — Tantor JAM 2026. 10 сентября, Москва. 📅 Что будет на конференции: ✅ AI-first мониторинг СУБД: что уже сегодня можно передать ИИ-агентам и как меняется профессия DBA; ✅ аналитика и HTAP без внешней обвязки, внутри Postgres; ✅ как за два года изменился PostgreSQL для 1С; ✅ защита данных в Tantor Postgres. Как всегда — технические доклады, живое общение с разработчиками и архитекторами, обмен опытом, а еще — вечерняя программа в честь пятилетия «Тантор Лабс». Участие бесплатное. 10.09.2026, Москва Зарегистрироваться #реклама 16+ tantorlabs.ru О рекламодателе

🤔 Что такое агрегатные функции? Агрегатные функции в контексте управления базами данных и 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'; — объединяет имена пользователей из Нью-Йорка через запятую. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое типизация? Типизация в программировании — это механизм, который определяет, как значения различных типов (например, целые числа, строки, объекты и т.д.) обрабатываются и взаимодействуют в языке программирования. Типизация помогает предотвратить ошибки, связанные с некорректным использованием данных, и улучшает читаемость и поддержку кода. 🚩Виды типизации 🟠Статическая типизация: Типы переменных известны и проверяются на этапе компиляции. Примеры языков: Java, C++, TypeScript. 🟠Динамическая типизация: Типы переменных определяются и проверяются во время выполнения программы. Примеры языков: Python, JavaScript, PHP. 🟠Сильная типизация: Язык строго следит за типами, не позволяя неявные преобразования между ними. Примеры языков: Haskell, Java. 🟠Слабая типизация: Язык допускает неявные преобразования между типами. Примеры языков: PHP, JavaScript. PHP — язык с динамической и слабой типизацией, но с версией 7.0 и выше появилась возможность использовать строгую типизацию.
$number = 10;
$number = "ten"; // PHP позволяет это, так как тип переменной может изменяться
С PHP 7.0 можно использовать строгую типизацию для функций и методов. Это позволяет явно указывать, какого типа аргументы и возвращаемое значение должны быть.
declare(strict_types=1); // Включает строгую типизацию

function add(int $a, int $b): int {
    return $a + $b;
}

echo add(2, 3); // Работает
// echo add(2, "3"); // Ошибка, так как второй аргумент не является целым числом
🚩ПлюсыПредотвращение ошибок: Типизация помогает обнаруживать ошибки на ранних этапах разработки, таких как попытка выполнения некорректных операций с данными. ➕Улучшение читаемости и поддержки кода: Явное указание типов делает код более понятным и предсказуемым, что облегчает его поддержку и развитие. ➕Оптимизация выполнения: Статически типизированные языки позволяют компиляторам оптимизировать выполнение кода, так как типы известны на этапе компиляции. ➕Документирование кода: Типизация служит дополнительной документацией, помогая разработчикам понять, какие данные ожидаются и возвращаются функциями и методами. Ставь 👍 и забирай 📚 Базу знаний

Хочешь карьеру в ИТ? Начни с программы «Мини-СЕО» ⚡Попади в команду топ-менеджера Т-Банка и работай над стратегическими проек
Хочешь карьеру в ИТ? Начни с программы «Мини-СЕО» ⚡Попади в команду топ-менеджера Т-Банка и работай над стратегическими проектами компании. В зависимости от трека ты сможешь: — разрабатывать эффективные методологии для оценки влияния продукта на экосистему с Владимиром Любимовым; — исследовать экосистемы и находить наиболее перспективные точки роста с Максимом Безруковым; — развивать сегмент автолюбителей и заниматься региональной экспансией Т-Банка с Жорой Сукасяном; — вести стратегический план развития 3P, развивать AI-продукты и искать, где AI может упростить работу команды, c Денисом Коротовым; — участвовать в создании B2B-маркетплейса c Владимиром Абазовым. Программа подойдет студентам и джуниор-специалистам, которые сильны в математике, аналитике и программировании. Успей подать заявку до 25 сентября! Зарегистрироваться #реклама 16+ t-miniceo.ru О рекламодателе

🤔 В чем разница между вертикальным и горизонтальным масштабированием? Масштабирование (scaling) — это процесс увеличения мощности системы, чтобы она справлялась с увеличенной нагрузкой. В программировании и серверной архитектуре есть два типа масштабирования: Вертикальное масштабирование (Vertical Scaling, Scale-Up) Горизонтальное масштабирование (Horizontal Scaling, Scale-Out) 🚩Вертикальное масштабирование (Vertical Scaling) - Улучшение одного сервера: больше оперативной памяти (RAM), мощнее процессор (CPU), быстрее диск (SSD/NVMe). - Приложение остаётся на одном сервере, просто он становится мощнее. 🚩Горизонтальное масштабирование (Horizontal Scaling) - Добавляются новые серверы, работающие параллельно. - Нагрузка распределяется между несколькими машинами. - Используются балансировщики нагрузки (Nginx, HAProxy, AWS ELB). Ставь 👍 и забирай 📚 Базу знаний

🤔 Слово "global" для чего используется? Ключевое слово global используется в PHP для доступа к глобальным переменным внутри функций. 🚩Как работает `global`? Доступ к глобальной переменной внутри функции
$counter = 10; // Глобальная переменная

function increment() {
    global $counter; // Доступ к глобальной переменной
    $counter++;
}

increment();
echo $counter; // ✅ 11
Использование нескольких глобальных переменных
$a = 5;
$b = 10;

function sum() {
    global $a, $b;
    $b = $a + $b; // Меняем глобальную переменную $b
}

sum();
echo $b; // ✅ 15
🟠Альтернативный способ – `$GLOBALS` Можно использовать суперглобальный массив $GLOBALS, который хранит все глобальные переменные.
$x = 3;
$y = 7;

function multiply() {
    $GLOBALS['y'] = $GLOBALS['x'] * $GLOBALS['y'];
}

multiply();
echo $y; // ✅ 21
🚩Когда `global` – плохая идея? Глобальные переменные усложняют отладку (их можно случайно изменить). Функции становятся зависимыми от внешних данных (плохо для тестирования). Лучше передавать переменные через аргументы функции. Альтернативный способ (без global)
function increment($counter) {
    return $counter + 1;
}

$counter = 10;
$counter = increment($counter);
echo $counter; // ✅ 11
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое acid? Это акроним, описывающий четыре ключевых свойства транзакций в системах управления базами данных (СУБД), обеспечивающие надежное выполнение транзакций даже в условиях ошибок, сбоев и множественного доступа. Эти свойства важны для обеспечения правильности и устойчивости данных. Он состоит из следующих компонентов: 🟠Атомарность (Atomicity) Гарантирует, что все операции в рамках одной транзакции либо выполняются полностью, либо не выполняются вообще. Если какая-либо часть транзакции не может быть завершена, система откатит все уже выполненные операции, возвращая базу данных в состояние, которое существовало до начала транзакции. Это "всё или ничего". 🟠Согласованность (Consistency) Означает, что каждая транзакция переводит базу данных из одного согласованного состояния в другое. Согласованность обеспечивает соблюдение всех правил и ограничений базы данных, таких как ключи, ограничения целостности и триггеры, после завершения транзакции. 🟠Изолированность (Isolation) Определяет способ одновременного выполнения множества транзакций без оказания влияния друг на друга. Это свойство предотвращает проблемы, связанные с одновременным доступом, такие как "грязное чтение", "неповторяющееся чтение" и "фантомное чтение". СУБД обычно предлагают различные уровни изоляции, которые могут быть настроены в зависимости от нужд приложения. 🟠Долговечность (Durability) Гарантирует, что как только транзакция была подтверждена, все изменения, сделанные транзакцией, сохраняются и остаются в базе данных даже в случае сбоя, например, при потере питания. Это означает, что система должна сохранять все записи в надежное, неизменяемое хранилище. Ставь 👍 и забирай 📚 Базу знаний

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

Не знак свыше, а точный таргетинг Теперь всем, кто продвигается через CTV в Яндекс Директе, стало проще находить свою аудитор
Не знак свыше, а точный таргетинг Теперь всем, кто продвигается через CTV в Яндекс Директе, стало проще находить свою аудиторию. Таргетингов стало в 5 раз больше. Вот что нового: — Таргетинг по интересам. Например, можно выбрать не всех, кто интересуется спортом, а только любителей фитнеса или тенниса. — Таргетинг по привычкам. Находите аудиторию по поведению в онлайне и офлайне — например, тех, кто регулярно посещает торговые центры или часто покупает товары в интернете. — Более гибкие настройки. Можно сочетать интересы и социально-демографические характеристики с жанрами и тематиками контента. 👌 Используйте новые возможности, чтобы сделать рекламу на Connected TV еще эффективнее Узнать больше #реклама yandex.ru О рекламодателе

🤔 Что такое namespaces? Это механизм, позволяющий организовать код в логические группы и избежать конфликтов имен, особенно в больших проектах или при использовании сторонних библиотек. 🚩Зачем они нужны? 🟠Избежание конфликтов имен В больших проектах могут быть сотни классов, функций и констант. Пространства имен помогают избежать ситуаций, когда разные части кода используют одинаковые имена. 🟠Упрощение организации кода Они позволяют группировать связанные классы, интерфейсы, функции и константы, что делает код более читаемым и поддерживаемым. 🟠Упрощение автозагрузки Пространства имен облегчают использование автозагрузчиков, таких как PSR-4, где классы и файлы организованы в соответствии с их пространствами имен. 🚩Как их использовать? Для использования пространств имен, нужно объявить их в начале файла с помощью ключевого слова namespace.
<?php
namespace MyProject\Models;

class User {
    public function getName() {
        return "John Doe";
    }
}
?>

Теперь класс User находится в пространстве имен MyProject\Models. Чтобы использовать этот класс в другом файле, нужно указать его полное имя:
<?php
require 'User.php';

$user = new \MyProject\Models\User();
echo $user->getName();
?>

Можно также использовать ключевое слово use для упрощения кода:
<?php
require 'User.php';

use MyProject\Models\User;

$user = new User();
echo $user->getName();
?>

Пространства имен могут содержать не только классы, но и функции и константы:
<?php
namespace MyProject\Utils;

const PI = 3.14;

function calculateCircleArea($radius) {
    return PI * $radius * $radius;
}
?>

Использование этих элементов будет аналогичным:
<?php
require 'Utils.php';

echo \MyProject\Utils\calculateCircleArea(5);
echo \MyProject\Utils\PI;
?>
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое вертикальное и масштабирование в БД? Это два метода повышения производительности и пропускной способности баз данных. 🚩Вертикальное масштабирование (Vertical Scaling) Вертикальное масштабирование, также известное как масштабирование "вверх" (scale up), предполагает улучшение производительности базы данных за счет увеличения ресурсов на одном сервере. Это может включать: Добавление большего объема оперативной памяти (RAM), Увеличение мощности процессора (CPU), Увеличение объема хранилища (SSD или HDD), Использование более быстрого сетевого оборудования 🟠Плюсы и минусыПростота реализации Легко выполнить, поскольку не требует изменения архитектуры приложения. ➕Единая точка управления Администрирование базы данных проще, так как все данные находятся на одном сервере. ➖Ограничения оборудования Есть пределы, до которых можно увеличивать ресурсы на одном сервере. ➖Единая точка отказа Если сервер выходит из строя, вся база данных становится недоступной. 🟠Пример Допустим, у вас есть сервер с 16 ГБ оперативной памяти и 4-ядерным процессором. Вертикальное масштабирование может включать замену его на сервер с 64 ГБ оперативной памяти и 16-ядерным процессором. Ставь 👍 и забирай 📚 Базу знаний

Gurufy 📚 Gurufy — ИИ-сервис, который собирает персональный курс под вашу задачу: план из глав, статьи с иллюстрациями и инте
Gurufy 📚 Gurufy — ИИ-сервис, который собирает персональный курс под вашу задачу: план из глав, статьи с иллюстрациями и интерактивными виджетами, задания и ИИ-ассистент прямо в главе. ✨ Простой вопрос быстрее задать ChatGPT. Но когда на тему нужен день и больше, одним чатом её не закрыть: нет плана, нет визуализаций, нет заданий — всё тонет в одной переписке. 🎓 Готовый курс — десятки тысяч рублей против 500–1000 ₽. ⚡ Попробуйте сами. Старт бесплатный. Узнать больше #реклама 16+ gurufy.ru О рекламодателе

🤔 В чем отличие между двойным и тройным равно? 🚩Примеры разницы между `==` и `===` Сравнение чисел и строк
var_dump(5 == "5");  // ✅ true (PHP приводит строку "5" к числу 5)
var_dump(5 === "5"); // ❌ false (5 - это int, "5" - это string)
Сравнение true и false
var_dump(0 == false);  // ✅ true  (0 считается как false)
var_dump(0 === false); // ❌ false (0 - это int, а false - это bool)
Сравнение null
var_dump(null == false);  // ✅ true  (PHP считает null как false)
var_dump(null === false); // ❌ false (null != boolean)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что известно о Unit-тестах? Это тесты, проверяющие отдельные единицы кода (обычно функции, методы или классы) в изоляции от внешних зависимостей. Особенности: - Быстрые, запускаются локально. - Должны быть предсказуемыми и детерминированными. - Не используют базу данных, сеть или файловую систему (для этого есть интеграционные и e2e-тесты). - Помогают отлавливать баги на раннем этапе и облегчают рефакторинг. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Честно о бизнесе в проекте «Говорит дело» от Яндекс Пэй Как пройти путь от склада на балконе до сделки на 300 млн ₽? Зачем ни
Честно о бизнесе в проекте «Говорит дело» от Яндекс Пэй Как пройти путь от склада на балконе до сделки на 300 млн ₽? Зачем нишевому спортивному бренду отказываться от работы с топ-атлетами? И почему иногда выгоднее не расти, чем расти быстро? «Говорит дело» — не просто интервью. Это разговоры, которые обычно не выходят за стены переговорных. Мы пообщались с теми, кто строил, ошибался, пересобирал бизнес заново и продолжал идти. Основатели Poison Drop, GRI, STAYA, The Flex, BASE DIKIY, ресторатор Денис Бобков и социальный предприниматель Гузель Санжапова делятся своим опытом. Смотрите и вдохновляйтесь! Узнать больше #реклама 16+ pay.yandex.ru О рекламодателе