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

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

前往频道在 Telegram

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

显示更多
2 343
订阅者
+124 小时
-37
-2230
帖子存档
Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

🤔 Что такое CSS? Это язык, используемый для описания внешнего вида и стилей веб-страниц: 1. Определяет цвет, шрифты, расположение элементов и другие визуальные свойства. 2. Работает совместно с HTML, отделяя структуру документа от его оформления. 3. Поддерживает каскадность, позволяя переопределять стили с учетом приоритетов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Обучение на Data Protection Officer (DPO) ⚡Обучение по защите персональных данных от практиков из Comply, ALUMNI Partners, Oz
Обучение на Data Protection Officer (DPO) ⚡Обучение по защите персональных данных от практиков из Comply, ALUMNI Partners, Ozon, VK и др ✨ На курсе вы узнаете: » Узнаете все про работу с персональными данными » 152-ФЗ и трансграничную передачу данных 🎓Программа: » Управление рисками » Проверка регулятора » Составление документов Скидка до конца недели! Оставьте заявку сейчас и станьте ближе к успешной карьере юриста! ❤️ Узнать больше #реклама 16+ mosdigitals.ru О рекламодателе

🤔 Какие есть виды join? JOIN – это операция в SQL, которая позволяет объединять данные из двух или более таблиц на основе общего поля. В SQL есть 5 основных видов JOIN 🟠`INNER JOIN` пересечение двух таблиц (только совпадающие записи). 🟠`LEFT JOIN` все записи из левой таблицы + совпадения из правой. 🟠`RIGHT JOIN` все записи из правой таблицы + совпадения из левой. 🟠`FULL JOIN` объединяет все записи из обеих таблиц. 🟠`CROSS JOIN` декартово произведение (каждая строка первой таблицы соединяется с каждой строкой второй). 🚩`INNER JOIN` – только совпадения Возвращает только те строки, у которых есть совпадения в обеих таблицах.
SELECT users.id, users.name, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;
🚩`LEFT JOIN` – все из левой таблицы + совпадения Возвращает все записи из левой таблицы, а если в правой нет совпадения – подставляет NULL.
SELECT users.id, users.name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
Ставь 👍 и забирай 📚 Базу знаний

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

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

🤔 Что считается хорошо написанным Task`ом? Хорошо написанный Task (задача) должен быть понятным, конкретным и выполнимым. Если задача написана размыто, разработчик потратит больше времени на уточнение деталей, а не на саму работу. 🚩Основные принципы хорошего Task'а 🟠Чёткое и понятное название Плохо: Исправить баг (какой баг? где?) Хорошо: Исправить ошибку расчёта скидки при оформлении заказа 🟠Описание должно отвечать на 3 вопроса: Что нужно сделать? (конкретные действия) Зачем это нужно? (какая проблема решается) Как это проверить? (критерии выполнения) 🟠Минимум абстракции, максимум конкретики Плохо: Добавить авторизацию на сайт Хорошо: Добавить авторизацию через Google OAuth 2.0 для пользователей, чтобы они могли входить через Google-аккаунт 🟠Разбивать задачи на подзадачи (если задача сложная) Например, если задача "Реализовать корзину покупок", то лучше разбить её на: Добавление товаров в корзину Расчёт итоговой суммы Удаление товаров из корзины Оформление заказа 🟠Указывать требования (технические детали, ссылки, макеты, API, форматы данных) Если задача связана с API → указываем эндпоинты. Если UI → прикладываем макеты (Figma, Zeplin). Если есть примеры → добавляем скриншоты. 🟠Добавлять критерии выполнения (Definition of Done, DoD) Плохо: Сделать фильтр по цене Хорошо: Фильтр по цене должен работать в диапазоне от 0 до 100 000, быть интерактивным (ползунок), без перезагрузки страницы. Ставь 👍 и забирай 📚 Базу знаний

Робот-мойщик окон Hobot-S7 Pro. Чистота без усилий! ✨ Робот мойщик окон — современное решение для автоматической чистки окон, стен из кафеля, стеклянные перегородок и дверей, в том числе и безрамных. ✅ Чистит поверхности высотой до 5 метров и шириной до 6 метров! Перейти на сайт #реклама hobot.ru О рекламодателе

🤔 В чем разница кэширования, кодирования, шифрования? 1. Кэширование: - Сохранение данных для быстрого повторного доступа, уменьшая время загрузки и нагрузку на сервер. - Пример: сохранение веб-страницы в браузере. 2. Кодирование: - Преобразование данных в другой формат для удобства передачи или совместимости. - Пример: Base64 для передачи бинарных данных через текстовые протоколы. 3. Шифрование: - Защита данных с использованием ключей, чтобы их мог прочитать только авторизованный получатель. - Пример: AES или RSA для передачи конфиденциальной информации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

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

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

Высшее образование дистанционно в Московском ВУЗе Вы мечтаете получить высшее образование, но не сдали ЕГЭ или получили низки
Высшее образование дистанционно в Московском ВУЗе Вы мечтаете получить высшее образование, но не сдали ЕГЭ или получили низкие баллы? У нас есть решение для вас! Институт Международных Экономических Связей предлагает дистанционное обучение , которое позволяет получать качественные знания из любой точки мира по 10+ направлениям обучения. ✅ Государственный диплом без отметки о дистантеУдобный личный кабинет студентаПоддержка кураторов на каждом этапе обученияМожно поступить без ЕГЭ Узнать больше #реклама 16+ imes.su О рекламодателе

🤔 Чем HTTP первой версии отличается от второй? HTTP/1.1 требует для каждого запроса нового соединения, что создает дополнительную нагрузку. HTTP/2 поддерживает мультиплексирование, позволяя передавать несколько запросов и ответов одновременно по одному соединению, что улучшает производительность.? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как сделать так, чтобы приложение разворачивалось быстрее в Dockerе? Для ускорения развертывания приложений в Docker существует несколько методов и практик, которые помогают оптимизировать сборку и запуск контейнеров. Вот некоторые из них: 🚩Оптимизация Dockerfile 🟠Меньше слоев Каждая инструкция в Dockerfile создает новый слой в образе. Старайтесь минимизировать количество слоев, объединяя инструкции, где это возможно.
# Плохо
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y vim

# Хорошо
RUN apt-get update && \
    apt-get install -y curl vim
🟠Использование правильного базового образа Выберите наиболее подходящий базовый образ, который минимально необходим для вашего приложения. Использование минималистичных образов, таких как alpine, может существенно уменьшить размер образа.
FROM php:7.4-fpm-alpine
🟠Кэширование зависимостей Сначала копируйте файлы с зависимостями (например, composer.json, package.json) и устанавливайте их, а затем копируйте остальной код. Это позволит Docker использовать кэш на этапе установки зависимостей, если они не изменились.
FROM php:7.4-fpm-alpine

# Установка зависимостей
COPY composer.json composer.lock /app/
WORKDIR /app
RUN composer install --no-dev --optimize-autoloader

# Копирование кода
COPY . /app
🟠Использование многоступенчатой сборки Многоступенчатая сборка позволяет собирать и тестировать ваше приложение в одном этапе и копировать только необходимые файлы в финальный образ, что уменьшает размер финального образа.
# Сборочный этап
FROM composer:latest AS builder
WORKDIR /app
COPY composer.json composer.lock /app/
RUN composer install --no-dev --optimize-autoloader

# Финальный этап
FROM php:7.4-fpm-alpine
WORKDIR /app
COPY --from=builder /app /app
COPY . /app
🟠Использование кэша сборки При разработке используйте кэш Docker для ускорения сборки. Для этого нужно правильно организовать порядок инструкций в Dockerfile, чтобы неизменные части использовали кэш. 🟠Оптимизация Docker Compose Если вы используете Docker Compose, убедитесь, что сервисы поднимаются параллельно и что вы используете возможность кэширования сборок.
version: '3.8'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
    ports:
      - "8080:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: app_db
    ports:
      - "3306:3306"
🟠Использование кэшированных слоев и промежуточных образов При частых изменениях кода старайтесь кэшировать слои, которые не меняются, и использовать промежуточные образы для ускорения сборки.
# Использование промежуточного образа
FROM php:7.4-fpm-alpine AS base
COPY . /app
WORKDIR /app
RUN composer install --no-dev --optimize-autoloader

FROM base AS dev
RUN apk add --no-cache bash
CMD ["php-fpm"]

FROM base AS prod
CMD ["php-fpm"]
🟠Использование готовых образов для разработки Используйте готовые образы, где уже установлены все необходимые зависимости для разработки, что сократит время сборки образов. 🟠Параллельная сборка и запуск Используйте параллельную сборку и запуск контейнеров, если это возможно. Docker Compose поддерживает параллельный запуск, что может значительно ускорить процесс развертывания. Ставь 👍 и забирай 📚 Базу знаний

В Битрикс24 теперь можно сделать сайт за 30 секунд Серьёзно. Пишешь, что нужно, и AI сам всё собирает: тексты, картинки, офор
В Битрикс24 теперь можно сделать сайт за 30 секунд Серьёзно. Пишешь, что нужно, и AI сам всё собирает: тексты, картинки, оформление. ✨Никакой магии, просто умный помощник. Попробуйте — закайфуете от скорости! Попробовать #реклама 16+ sites-24.bitrix24.ru О рекламодателе

🤔 Как типы связи реализуются в Laravel? Laravel Eloquent поддерживает следующие связи: - One-to-One — через hasOne / belongsTo. - One-to-Many — через hasMany / belongsTo. - Many-to-Many — через belongsToMany и pivot-таблицы. - Has One Through / Has Many Through — для косвенных связей. - Polymorphic — одна модель может принадлежать разным другим моделям (например, Comment может быть к Post или Video). - Morph To Many — полиморфные связи с множеством объектов. Все связи описываются как методы модели и могут использоваться для ленивой или жадной загрузки (lazy/eager loading). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Где вести задачи и проекты? Конечно, в Битрикс24 Бесплатный онлайн-сервис для бизнеса и совместной работы. Полный комплект дл
Где вести задачи и проекты? Конечно, в Битрикс24 Бесплатный онлайн-сервис для бизнеса и совместной работы. Полный комплект для эффективности вашей команды. Ставьте первую задачу прямо сейчас Начать #реклама 16+ task-24.bitrix24.ru О рекламодателе

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

В турагентство на удаленку требуются стажеры Клиентов предоставим. Можно без опыта и совмещая с основной работой или декретом
В турагентство на удаленку требуются стажеры Клиентов предоставим. Можно без опыта и совмещая с основной работой или декретом. С нас обучение с гарантированной стажировкой. Доход после обучения: от 50 000₽ до 220 000₽. Оплата в процессе обучения зависит от вашей вовлеченности. Задачи: Помогать людям организовывать путешествия: подбор самых выгодных предложений на отдых со скидкой до 50% в новых сервисах бронирования. Условия: ✅ Без опыта — обучение с нуля за 2 месяца, первые выплаты в среднем в течение 2 недель; ✅Удаленная работа или совмещение с офисом (по желанию, зависит от вашего города). Хотите проверить, подойдет ли это вам? Регистрируйтесь на бесплатный вводный урок, на котором узнаете: — как подбирать туры для себя и близких с выгодой до 40% — как получать комиссию 7-10% с каждого тура. Узнать больше #реклама 16+ via-tourism-school.space О рекламодателе