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

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

Открыть в Telegram
2 343
Подписчики
-224 часа
-57 дней
-2430 день
Архив постов
🤔 Что такое типизация? Это система правил, определяющих, какие типы данных можно использовать в коде. - Статическая типизация – (Java, C++, Kotlin) – типы проверяются на этапе компиляции. - Динамическая типизация – (Python, JavaScript) – типы определяются во время выполнения. - Сильная типизация – (Kotlin, Rust) – строгий контроль типов, запрещены неявные преобразования. - Слабая типизация – (JavaScript, PHP) – допускает неявные преобразования типов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое DRY и KISS? Они помогают писать чистый, понятный и эффективный код. 🟠DRY (Don't Repeat Yourself – Не повторяйся) Смысл: Избегайте дублирования кода, выносите повторяющуюся логику в функции, классы или модули. Улучшает читаемость кода. Упрощает поддержку: изменили код в одном месте – обновилось везде. Исключает ошибки при дублировании кода. Плохо (нарушение DRY)
// Дублирование кода для расчёта скидки
$price1 = 100;
$discount1 = $price1 * 0.1;

$price2 = 200;
$discount2 = $price2 * 0.1;

$price3 = 300;
$discount3 = $price3 * 0.1;
Хорошо (принцип DRY)
function calculateDiscount($price) {
    return $price * 0.1;
}

$discount1 = calculateDiscount(100);
$discount2 = calculateDiscount(200);
$discount3 = calculateDiscount(300);
🟠KISS (Keep It Simple, Stupid – Делай проще) Смысл: Не усложняйте код, он должен быть простым и понятным. Код легче понимать и исправлять. Простота = меньше ошибок. Улучшает производительность (сложные конструкции могут замедлять код). Плохо (нарушение KISS)
function isEven($num) {
    if ($num % 2 == 0) {
        return true;
    } else {
        return false;
    }
}
Хорошо (KISS)
function isEven($num) {
    return $num % 2 == 0;
}
Ставь 👍 и забирай 📚 Базу знаний

Простой тест для выбора профессии в IT Пройдите тест на профессию и забирайте: ✅ Бесплатную карьерную консультацию с эксперто
Простой тест для выбора профессии в IT Пройдите тест на профессию и забирайте: ✅ Бесплатную карьерную консультацию с экспертом ✅ Доступ к чат-боту с гайдами по профессиям и заданиями для самопроверки ✅ Мини-курсы для погружения в IT и дизайн, чтобы точнее выбрать направление ✨130 000 человек уже прошли профтестирование и выбрали перспективную профессию в IT или дизайне Пройдите тест бесплатно за 5 минут! Начать #реклама 16+ free.skillfactory.ru О рекламодателе

🤔 Какие есть минусы у монолитов и микросервисов? Монолиты: - Сложность масштабирования – весь код в одном приложении, сложно разделять нагрузку. - Долгие развертывания – любые изменения требуют деплоя всего приложения. - Слабая модульность – сложнее управлять зависимостями между частями системы. Микросервисы: - Сложность взаимодействия – требуется настройка API, сервисов и коммуникации. - Высокие затраты на инфраструктуру – каждый сервис требует отдельного развертывания. - Сложное управление данными – приходится использовать event-driven или distributed transactions. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Бесплатный проект для новичков в DevOps. Подписывайся! Сообщество для начинающих DevOps-инженеров. В канале собраны фишки Dev
Бесплатный проект для новичков в DevOps. Подписывайся! Сообщество для начинающих DevOps-инженеров. В канале собраны фишки DevOps. Как быстро стартануть в DevOps и внедрить методологию в свои проекты? Какие инструменты осваивать в первую очередь? Лекции, статьи и вебинары от ведущих практиков IT-рынка. Практические задания, еженедельные разборы и лайвы от наставника проекта Подписаться #реклама 16+ slurm.io О рекламодателе

📺 Уникальная база IT собеседований 456+ реальных собеседований на программиста, тестировщика, аналитика и прочие IT профы. Е
📺 Уникальная база IT собеседований 456+ реальных собеседований на программиста, тестировщика, аналитика и прочие IT профы. Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!

🤔 Что такое стрелочные и анонимные функции? Стрелочные функции (также известные как лямбда-функции) и анонимные функции служат для создания функций без имени, которые могут быть использованы в качестве значений переменных, параметров функций или просто для выполнения некоторого действия на месте. 🚩Анонимные функции Это функции без имени, которые часто используются для создания функций-замыканий. Замыкания позволяют функциям захватывать переменные из своей области видимости. Анонимные функции создаются с использованием ключевого слова function.
<?php
$sayHello = function($name) {
    return "Привет, $name!";
};

echo $sayHello("Мир"); // Выведет: Привет, Мир!
?>
🚩Стрелочные функции Были введены в PHP 7.4 и представляют собой более компактный способ создания анонимных функций. Они используют синтаксис fn и автоматически захватывают переменные из внешней области видимости по значению.
<?php
$factor = 10;

$multiply = fn($x) => $x * $factor;

echo $multiply(5); // Выведет: 50
?>
🚩Зачем это нужно? 🟠Удобство Создание функций на месте без необходимости придумывать имена. 🟠Замыкания Возможность захвата переменных из внешней области видимости. 🟠Читабельность кода Стрелочные функции делают код более лаконичным и читаемым. 🚩Как это используется? 🟠Фильтрация и сортировка массивов Часто используются в функциях вроде array_filter, array_map и usort. 🟠Колбэки Передача функции в качестве аргумента в другие функции (например, для обработки событий).
<?php
$numbers = [1, 2, 3, 4, 5];

$squared = array_map(fn($n) => $n * $n, $numbers);

print_r($squared); // Выведет: Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
?>
Ставь 👍 и забирай 📚 Базу знаний

Repost from easyoffer
На easyoffer 2.0 появится: 🎯 Тренажер "Проработка вопросов" ✅ Метод интервальных повторений и флеш-карточки ✅ Персональный подход изучения на основе ваших ответов ✅ Упор на самые частые вопросы 📌 Интервальные повторения по карточкам это научно доказанный метод эффективного обучения. Каждая карточка – это вопрос, который задают на собеседовании, вы можете выбрать "Не знаю", "Знаю", "Не спрашивать". После ответа вам показывается правильный ответ и возможность изучить вопрос подробнее (примеры ответов других людей). От ваших ответов зависит то, как часто карточки будут показываться на следующей тренировке. Трудные вопросы показываются чаще, простые – реже. Это позволяет бить в слабые места. Кроме того, изначальный порядок карточек зависит от частотности (вероятности встретить вопрос). 🚀 Благодаря этому тренажеру вы сможете очень быстро подготовиться к собеседованию, т.к. фокусируетесь отвечать на самые частые вопросы. Именно так готовился я сам, когда искал первую работу программистом. Уже в течение недели я объявлю о старте краудфандинговой кампании на сбор финансирования, чтобы ускорить разработку сайта. Все кто поддержит проект до официального релиза получат самые выгодные условия пользования сервисом. А именно 1 год доступа к сайту по цене месячной подписки. ‼️ Очень важно, чтобы как можно больше людей поддержали проект в первые дни, по-этому те кто окажет поддержку первыми получат еще более выгодную стоимость на годовую подписку и существенный 💎 бонус о котором я позже расскажу в этом телеграм канале. Подписывайтесь, чтобы узнать о старте проекта раньше других и воспользоваться лимитированными вознаграждениями.

Крупнейший университет искусственного интеллекта Приглашаем на бесплатный однодневный интенсив по AI! Освой искусственный инт
Крупнейший университет искусственного интеллекта Приглашаем на бесплатный однодневный интенсив по AI! Освой искусственный интеллект для профессионального роста: создавай нейросети, автоматизируй бизнес-задачи и зарабатывай на AI-решениях. ✨ 8 000+ студентов со всего мира ✨ 600+ AI-проектов, созданных студентами ✨ Сборная Университета — победители крупнейших AI-хакатонов России ✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие) ✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие) Будем рады видеть тебя в наших рядах! Узнать больше #реклама 16+ neural-university.ru О рекламодателе

🤔 Что такое иммутабельный объект? Это объект, который нельзя изменить после создания. Примеры: - String в Java и Python - Кортежи (tuple) в Python Преимущества иммутабельности: - Упрощает многопоточность (нет проблем с изменением данных). - Повышает предсказуемость кода. - Уменьшает количество багов, связанных с изменением данных. Недостатки: - Необходимость создания новых объектов при каждом изменении. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Почему вы не используете Битрикс24 CRM с AI-помощником? 1- не знал 2- забыл Рассказываем и напоминаем! ✅Битрикс24 CRM с AI помогает увеличивать продажи, работать с постоянными клиентами и сохранять все важные данные. AI-помощник CoPilot внутри сервиса расшифрует телефонные разговоры и автоматически заполнит карточки клиента в CRM. Битрикс24 можно использовать бесплатно для всех команд, независимо от их размера. ⚡Не тратьте время на рутину. Узнать больше #реклама 16+ bitrix24.ru О рекламодателе

🤔 Какие бывают индексы? Чтобы продемонстрировать, как можно использовать индексы, прежде всего нужно рассмотреть процесс создания индексов в базе данных и последующее выполнение SQL запросов с использованием PHP. Возьмем MySQL в качестве примера базы данных и использование PDO (PHP Data Objects) для взаимодействия с базой данных из PHP. 🚩Создание индексов в MySQL Допустим, у вас есть таблица users с полями id, email, name, и age. Вы хотите оптимизировать поиск по email, который часто используется для входа в систему или других операций. Вы можете создать уникальный индекс для столбца email
CREATE UNIQUE INDEX idx_email ON users (email);
Если вы также часто выполняете запросы, которые фильтруют пользователей по возрасту, вы можете создать простой индекс для столбца age
CREATE INDEX idx_age ON users (age);
🚩Использование индексов Теперь, когда у вас есть индексы, давайте посмотрим, как вы можете использовать PHP для выполнения запросов, которые могут извлекать выгоду из этих индексов. Мы будем использовать PDO для создания безопасных запросов с использованием подготовленных выражений.
<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = '';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Запрос с использованием индекса по email
    $email = 'user@example.com';
    $stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
    $stmt->execute(['email' => $email]);

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "Имя: " . $row['name'] . ", Email: " . $row['email'] . ", Возраст: " . $row['age'] . "<br/>";
    }

    // Запрос с использованием индекса по возрасту
    $age = 25;
    $stmt = $pdo->prepare("SELECT * FROM users WHERE age >= :age");
    $stmt->execute(['age' => $age]);

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "Имя: " . $row['name'] . ", Email: " . $row['email'] . ", Возраст: " . $row['age'] . "<br/>";
    }
} catch (PDOException $e) {
    die("Ошибка подключения: " . $e->getMessage());
}
?>
Ставь 👍 и забирай 📚 Базу знаний

Как айтишнику быстро получить оффер Бесплатный воркшоп 20 марта Почему одному кандидату предлагают оффер после первого интервью, а другому говорят: «Мы вам перезвоним»? Причина в подаче своего опыта. Записывайся, чтобы узнать: — Как подготовиться к собеседованию — Как презентовать свой опыт так, чтобы тебя запомнили — Как проверяют hard skills и как к этому подготовиться — Как произвести хорошее впечатление, запомнится рекрутеру и сделать так, чтобы захотели работать именно с тобой Приходи на бесплатный воркшоп и узнай, как прокачать навык самопрезентации и получить работу мечты Зарегистрироваться #реклама 16+ my.mts-link.ru О рекламодателе

🤔 Что такое SOLID? Это пять принципов объектно-ориентированного программирования, повышающих гибкость, читаемость и масштабируемость кода. 1. S – Single Responsibility Principle (Принцип единственной ответственности) - У каждого класса должна быть одна задача. 2. O – Open-Closed Principle (Принцип открытости/закрытости) - Код должен быть открыт для расширения, но закрыт для модификации. 3. L – Liskov Substitution Principle (Принцип подстановки Барбары Лисков) - Дочерний класс должен заменять родительский без изменения логики. 4. I – Interface Segregation Principle (Принцип разделения интерфейсов) - Лучше много маленьких интерфейсов, чем один большой. 5. D – Dependency Inversion Principle (Принцип инверсии зависимостей) - Зависимости должны строиться от абстракций, а не от конкретных реализаций. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Бесплатный карьерный форум для молодых специалистов в IT Найти IT — бесплатный карьерный форум для студентов и недавних выпус
Бесплатный карьерный форум для молодых специалистов в IT Найти IT — бесплатный карьерный форум для студентов и недавних выпускников IT-направлений, где тебя ждет возможность найти работу в Data Science! Преимущества: — Вакансии и стажировки от 40+ топовых компаний (Сбер, Авито, Альфа Банк, ВТБ и другие) — Нетворкинг с экспертами и другими участниками — Возможность получить обратную связь по резюме и оценить свои навыки 📍 Место и время: 18 марта, 15:00-20:00 Москва, Main Stage, Шарикоподшипниковская ул., 13, стр. 33 (м. Дубровка) 💻  Регистрируйся и получи оффер своей мечты!

UserGate Open Conf 17 / 04 / 2025ИТ-конференция про защиту в открытую. Здесь мы создаем площадку для открытого диалога между заказчиками, партнерами, экспертами и специалистами в сфере продуктов, технологий и услуг информационной безопасности. Что мы готовим для вас: - аналитические данные исследования рынка информационной безопасности; - обзор новых видов и эволюции киберугроз с разбором кейсов по борьбе с ними; - планы внедрения новых фич и обновлений продуктов экосистемы UserGate; - 30+ продуктовых, партнерских и клиентских докладов; - нетворкинг, продуктовые демо, обмен опытом и консультации экспертов ИБ; - ответы на любые вопросы и сбор обратной связи о работе продуктов и устройств UserGate. Зарегистрироваться #реклама openconf.usergate.com О рекламодателе

🤔 Структуры данных в программировании какие знаешь? Структуры данных — это способы хранения и организации данных в памяти компьютера. Они помогают эффективно управлять данными и выбирать оптимальные алгоритмы. 🚩Основные структуры данных 🟠Массив (Array) Упорядоченная коллекция элементов, доступ к которым осуществляется по индексу. Когда нужно быстро получать элементы по индексу. Доступ: O(1) Поиск: O(n) Вставка/Удаление: O(n) (из-за необходимости сдвига элементов)
$numbers = [10, 20, 30, 40]; 
echo $numbers[2]; // 30
🟠Связанный список (Linked List) Элементы (узлы) хранят ссылку на следующий (а иногда и на предыдущий) элемент. Когда часто вставляете/удаляете элементы (без затрат на сдвиг). Доступ: O(n) Вставка/Удаление: O(1) (если известен указатель)
class Node {
    public int $data;
    public ?Node $next;

    public function __construct(int $data) {
        $this->data = $data;
        $this->next = null;
    }
}
🟠Стек (Stack) Структура LIFO (Last In, First Out). Элементы добавляются и удаляются только с одного конца. Для обратного прохода, отмены операций, рекурсии. Вставка/Удаление: O(1) Доступ: O(n)
$stack = new SplStack();
$stack->push(1);
$stack->push(2);
echo $stack->pop(); // 2 (удаляется последний добавленный)
🟠Очередь (Queue) Структура FIFO (First In, First Out). Первым зашёл – первым вышел. Когда элементы должны обрабатываться по порядку (например, задачи в принтере). Вставка/Удаление: O(1)
$queue = new SplQueue();
$queue->enqueue(1);
$queue->enqueue(2);
echo $queue->dequeue(); // 1 (удаляется первый добавленный)
🟠Хэш-таблица (Hash Table) / Ассоциативный массив Хранит пары ключ → значение, обеспечивает быстрый доступ по ключу. Когда нужен быстрый поиск и хранение пар ключ-значение. Доступ/Поиск: O(1)
$hashTable = [
    "name" => "Alice",
    "age" => 25
];

echo $hashTable["name"]; // Alice
🟠Дерево (Tree) Иерархическая структура, где каждый узел может иметь несколько дочерних. Когда важны иерархии (например, файловые системы, база данных). Виды Двоичное дерево (Binary Tree) – у каждого узла до 2 детей. Двоичное дерево поиска (BST) – левый потомок меньше, правый больше. B-дерево – используется в базах данных. Trie (Префиксное дерево) – для хранения строк, часто в поисковых движках.
class TreeNode {
    public int $value;
    public ?TreeNode $left = null;
    public ?TreeNode $right = null;

    public function __construct(int $value) {
        $this->value = $value;
    }
}
🟠Граф (Graph) Набор вершин (узлов) и рёбер (связей между узлами). Для моделирования сетей, карт, социальных графов. Типы графов Ориентированный (направленный) / Неориентированный Взвешенный / Невзвешенный Ациклический (DAG)
$graph = [
    "A" => ["B", "C"],
    "B" => ["A", "D", "E"],
    "C" => ["A", "F"],
    "D" => ["B"],
    "E" => ["B", "F"],
    "F" => ["C", "E"]
];
Ставь 👍 и забирай 📚 Базу знаний

Онлайн-магистратура в IT совместно с ИТМО, МИФИ и МФТИ День открытых дверей 19 марта 19:00 мск | Онлайн Все программы 2025, о
+1
Онлайн-магистратура в IT совместно с ИТМО, МИФИ и МФТИ День открытых дверей 19 марта 19:00 мск | Онлайн Все программы 2025, общение со студентами и экспертами из вузов и Яндекса. Ответы на вопросы. Зарегистрироваться #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Что такое динамические переменные? Это переменные, тип которых определяется во время выполнения. Особенности: - Используются в языках с динамической типизацией (Python, JavaScript, PHP). - Позволяют гибко управлять памятью, но могут вызывать ошибки из-за изменения типа данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что будет если мы цифру 3 int сложим плюсом со строкой 4 что будет? Если в PHP выполнить операцию сложения (+) числа 3 (int) и строки "4" (string), то PHP автоматически приведёт строку "4" к числу, и произойдёт арифметическая операция:
$result = 3 + "4";
echo $result; // 7
🚩Как это работает? PHP видит, что используется оператор +, который применяется только к числам. "4" — это строка, но она содержит только число, поэтому PHP автоматически преобразует её в int. Затем выполняется операция 3 + 4, и результатом будет 7. 🚩Что если строка не является числом? Если строка не является корректным числом, PHP попробует взять из неё число с начала строки. Если в начале строки нет цифр, то строка будет воспринята как 0. Примеры странных случаев
echo 3 + "4abc";  // 7   (строка "4abc" преобразуется в число 4)
echo 3 + "abc4";  // 3   (строка "abc4" преобразуется в 0, т.к. начинается не с цифры)
echo 3 + "0.5";   // 3.5 (строка "0.5" преобразуется в число 0.5)
echo 3 + " ";     // 3   (пробелы преобразуются в 0)
🚩Что если использовать `.` вместо `+`? Если вместо + использовать . (конкатенацию строк), то числа не складываются, а просто соединяются как строки
echo 3 . "4"; // "34" (строка)
Ставь 👍 и забирай 📚 Базу знаний

PHP | Вопросы собесов - Статистика и аналитика Telegram-канала @easy_php_ru