PHP | Вопросы собесов
الذهاب إلى القناة على Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
إظهار المزيد2 344
المشتركون
+224 ساعات
-27 أيام
-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 и дизайн, чтобы точнее выбрать направление
✨130 000 человек уже прошли профтестирование и выбрали перспективную профессию в IT или дизайне
Пройдите тест бесплатно за 5 минут!
Начать
#реклама 16+
free.skillfactory.ru
О рекламодателе
🤔 Какие есть минусы у монолитов и микросервисов?
Монолиты:
- Сложность масштабирования – весь код в одном приложении, сложно разделять нагрузку.
- Долгие развертывания – любые изменения требуют деплоя всего приложения.
- Слабая модульность – сложнее управлять зависимостями между частями системы.
Микросервисы:
- Сложность взаимодействия – требуется настройка API, сервисов и коммуникации.
- Высокие затраты на инфраструктуру – каждый сервис требует отдельного развертывания.
- Сложное управление данными – приходится использовать event-driven или distributed transactions.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Бесплатный проект для новичков в DevOps. Подписывайся!
Сообщество для начинающих DevOps-инженеров.
В канале собраны фишки DevOps. Как быстро стартануть в DevOps и внедрить методологию в свои проекты? Какие инструменты осваивать в первую очередь? Лекции, статьи и вебинары от ведущих практиков IT-рынка. Практические задания, еженедельные разборы и лайвы от наставника проекта
Подписаться
#реклама 16+
slurm.io
О рекламодателе
📺 Уникальная база 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-решениях.
✨ 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-направлений, где тебя ждет возможность найти работу в 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"]
];
Ставь 👍 и забирай 📚 Базу знаний+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" (строка)
Ставь 👍 и забирай 📚 Базу знаний
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
