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

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

Ir al canal en Telegram

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

Mostrar más
2 341
Suscriptores
-224 horas
-57 días
-2330 días
Archivo de publicaciones
🤔 Был ли у вас опыт в автоматического тестировании? Да, я имел опыт работы с автоматическим тестированием, включая написание тестов для API, UI и unit-тестов. Использовал такие инструменты, как Selenium, Pytest и JUnit, для автоматизации процессов тестирования. Опыт охватывает разработку тестовых сценариев и интеграцию тестирования в CI/CD пайплайны. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Все скидки Яндекс Маркета в одном месте От iPhone до декора для дома из ИКЕА, от Dyson до уходовой косметики. Не пропустите н
Все скидки Яндекс Маркета в одном месте От iPhone до декора для дома из ИКЕА, от Dyson до уходовой косметики. Не пропустите низкие цены: каждый день мы собираем самые горящие предложения в канале Скидки на Маркете. Подписывайтесь и найдите свою выгоду! Подписаться #реклама О рекламодателе

🤔 Как в генераторе достигается то, что в текущем файле находится один объект? Генераторы используются для создания итераторов с помощью функции, которая может возобновлять выполнение. Это позволяет использовать только один объект генератора в текущем контексте. Основной механизм, который обеспечивает это, заключается в использовании ключевого слова yield. 🚩Механизм работы 🟠Создание генератора Когда функция с yield вызывается, она не выполняется немедленно. Вместо этого она возвращает объект генератора.
def my_generator():
yield 1
yield 2
yield 3

gen = my_generator()  # Создает объект генератора
🟠Итерация по генератору Объект генератора поддерживает протокол итератора и возвращает значение при каждом вызове __next__(). Когда вызывается next() на генераторе, выполнение функции продолжается до следующего оператора yield, где она приостанавливается и возвращает значение.
print(next(gen))  # Выведет: 1
print(next(gen))  # Выведет: 2
print(next(gen))  # Выведет: 3
🟠Сохранение состояния Каждый раз, когда выполнение функции приостанавливается с помощью yield, сохраняется текущее состояние выполнения, включая значения всех локальных переменных и позицию выполнения. Это позволяет функции возобновлять выполнение с того места, где она была приостановлена. 🟠Одновременное выполнение Поскольку генератор возобновляет выполнение только с того места, где он был приостановлен, в каждый момент времени существует только один активный контекст выполнения функции генератора. Это гарантирует, что в текущем файле находится один объект генератора, работающий с одним и тем же состоянием выполнения. 🚩Пример
def countdown(n):
    print("Starting countdown")
    while n > 0:
        yield n
        n -= 1
    print("Countdown finished")

gen = countdown(3)

print(next(gen))  # Выведет: Starting countdown и 3
print(next(gen))  # Выведет: 2
print(next(gen))  # Выведет: 1
# Следующий вызов next() вызовет "Countdown finished" и StopIteration
🚩Важные моменты 🟠Ленивые вычисления Генераторы выполняют ленивые вычисления, генерируя значения по мере необходимости, что позволяет эффективно работать с большими данными. 🟠Память Генераторы используют меньше памяти, так как не требуют хранения всех элементов в памяти сразу. 🟠Единичность объекта В каждый момент времени работает один объект генератора с сохраненным состоянием, что позволяет избежать конфликтов и ошибок. Ставь 👍 и забирай 📚 Базу знаний

🤔 Принципы ООП? Основные принципы ООП: инкапсуляция, наследование, полиморфизм и абстракция. Инкапсуляция скрывает детали реализации, наследование позволяет создавать новые классы на основе существующих, а полиморфизм обеспечивает универсальность методов. Абстракция выделяет ключевые аспекты, упрощая проектирование и разработку. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

🤔 Сколько лет php? PHP, как язык программирования, был создан Расмусом Лердорфом и впервые выпущен в 1995 году. На данный момент, в 2024 году, PHP исполнилось 29 лет. 🚩Историческая справка 🟠1994 Расмус Лердорф начал работу над набором скриптов для отслеживания посещений своего резюме, называемых "Personal Home Page Tools" (инструменты для личной домашней страницы). 🟠1995 PHP был официально выпущен как "Personal Home Page Tools (PHP Tools)". 🟠1997 Был выпущен PHP/FI 2.0 (Формулярный Интерпретатор), что стало важным этапом в развитии языка. 🟠1998 Андi Гутманс и Зеев Сураски переписали основное ядро PHP, что привело к созданию PHP 3. 🟠2000 Вышел PHP 4 на базе движка Zend Engine 1.0. 🟠2004 Вышел PHP 5 с поддержкой объектно-ориентированного программирования и улучшениями в производительности. 🟠2015 Вышел PHP 7 с значительным увеличением производительности и новыми функциями. 🟠2020 Вышел PHP 8 с новым движком JIT (Just-In-Time) компиляции и другими улучшениями. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие у вас знания об инструменте Git? Git — это система контроля версий, позволяющая управлять изменениями кода и работать в командах. Я знаком с основными командами, такими как clone, commit, push, pull, branch, merge, и умею разрешать конфликты. Также использую ветвление и инструменты Git для CI/CD процессов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

🤔 Какие функции называются чистыми? 🟠Детерминированность Чистая функция всегда возвращает одно и то же значение при одних и тех же входных данных. Это означает, что результат выполнения функции зависит только от её аргументов и не от каких-либо внешних состояний или изменений. 🟠Отсутствие побочных эффектов Чистая функция не изменяет состояния внешней среды, таких как изменение глобальных переменных, работа с файлами или изменение переданных аргументов. Она не выполняет никаких операций ввода-вывода. 🚩Пример чистой функции Простой пример на Python Функция add является чистой, поскольку она всегда возвращает одно и то же значение для одних и тех же входных данных и не изменяет никакие внешние состояния.
def add(a, b):
    return a + b
🚩Пример нечистой функции Пример нечистой функции Функция add_to_result не является чистой, поскольку она изменяет глобальную переменную result, что является побочным эффектом.
result = 0

def add_to_result(a):
    global result
    result += a
    return result
🚩Плюсы Простота тестирования Чистые функции легко тестировать, поскольку они всегда возвращают одно и то же значение для одних и тех же входных данных. ➕Предсказуемость Чистые функции предсказуемы и легче понимать, поскольку они не зависят от внешних состояний. ➕Параллельное выполнение Чистые функции можно выполнять параллельно без риска конфликтов, поскольку они не изменяют внешние состояния. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое в мире PHP PSR и RFC? PSR (PHP Standards Recommendations) — это набор стандартов и рекомендаций для написания кода в PHP, таких как PSR-1, PSR-2 для стиля кода, PSR-4 для автозагрузки классов. RFC (Request for Comments) — это предложения по улучшению PHP, которые обсуждаются и принимаются сообществом, формируя новые возможности и изменения в языке. Оба механизма способствуют стандартизации и улучшению качества кода в PHP-сообществе. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Сообщество IT-специалистов в Telegram от Selectel. Канал крупнейшего независимого провайдера IT-инфраструктуры и облаков. Шес
Сообщество IT-специалистов в Telegram от Selectel. Канал крупнейшего независимого провайдера IT-инфраструктуры и облаков. Шесть причин подписаться на канал: - железные новости; - обзоры продуктов; - разборы кейсов; - актуальные IT-статьи; - анонсы митапов; - бесплатные курсы. Подписаться #реклама О рекламодателе

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

– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с тру
– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию

– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с тру
– Помощь с pet-проектом – Составление roadmap – Общая консультация – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию

🤔 Чем отличается абстрактный класс от интерфейса? Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией, в то время как интерфейс не содержит реализации методов до PHP 8. Абстрактный класс может содержать поля и конструкторы, а интерфейс — только сигнатуры методов. Класс может наследовать только один абстрактный класс, но реализовать несколько интерфейсов. Абстрактный класс используется, когда требуется частичная реализация, а интерфейс — для создания контракта. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу Знаний

Timetta — контроль проектов, ресурсов, финансов и задач Комплексное решение для проектно-ориентированного бизнеса. Приложение для контроля проектов, финансов, ресурсов, времени для средних и крупных команд. ✅Планируйте проекты ✅Оценивайте бюджеты ✅Подбирайте ресурсы ✅Контролируйте задачи Узнать больше #реклама 16+ timetta.com О рекламодателе

🤔 Как связаны между собой иммутабельность и чистота? Два ключевых концепта, связанных с функциональным программированием, но они также важны в контексте объектно-ориентированного программирования. 🚩Иммутабельность Означает, что объект не может быть изменен после его создания. Все изменения состояния объекта приводят к созданию нового объекта. Пример иммутабельного класса на Python:
class ImmutablePoint:
    def __init__(self, x, y):
        self._x = x
        self._y = y

    @property
    def x(self):
        return self._x

    @property
    def y(self):
        return self._y

point = ImmutablePoint(1, 2)
# point.x = 3  # Это вызовет ошибку, т.к. свойство только для чтения
🚩Чистота Всегда возвращают одно и то же значение для одних и тех же входных данных и не изменяют состояние внешнего мира. Чистота функций гарантирует отсутствие побочных эффектов, таких как изменение глобальных переменных или модификация входных аргументов. Пример чистой функции на Python:
def add(a, b):
    return a + b
🚩Связь между иммутабельностью и чистотой 🟠Отсутствие побочных эффектов Иммутабельные объекты помогают поддерживать чистоту функций, так как функции, работающие с такими объектами, не могут изменять их состояние. Это предотвращает появление побочных эффектов, что делает функции предсказуемыми и легко тестируемыми. 🟠Детерминированность Функции, работающие с иммутабельными объектами, всегда возвращают один и тот же результат для одних и тех же входных данных, что делает их чистыми. Это важное свойство для создания надежных и предсказуемых систем. 🟠Безопасность в параллельном и многопоточном программировании Иммутабельные объекты не могут быть изменены несколькими потоками одновременно, что предотвращает состояние гонки и делает параллельное выполнение безопасным. Чистые функции, работающие с иммутабельными объектами, могут выполняться параллельно без конфликтов. 🚩Пример на практике
class ImmutablePoint:
    def __init__(self, x, y):
        self._x = x
        self._y = y

    @property
    def x(self):
        return self._x

    @property
    def y(self):
        return self._y

def move_point(point, dx, dy):
    return ImmutablePoint(point.x + dx, point.y + dy)

point1 = ImmutablePoint(1, 2)
point2 = move_point(point1, 3, 4)

print(point1.x, point1.y)  # Выведет: 1 2
print(point2.x, point2.y)  # Выведет: 4 6
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие паттерны знаешь? Среди паттернов выделяются порождающие (Singleton, Factory, Builder), структурные (Adapter, Composite, Decorator) и поведенческие (Observer, Strategy, Command). Они помогают организовывать код, делая его более читаемым и поддерживаемым. Использование паттернов повышает качество архитектуры приложений. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Цены на все Серверы онлайн! Удобный конфигуратор! Серверы STSS Flagman✅ Огромный выбор решений 👍 Консультации лучших эксперт
Цены на все Серверы онлайн! Удобный конфигуратор! Серверы STSS Flagman✅ Огромный выбор решений 👍 Консультации лучших экспертов 👌 Непревзойденный сервис ❤️ Получить предложение #реклама stss.ru О рекламодателе

🤔 ОРМ на чтение нужна? Это технология, позволяющая работать с базами данных, представляя их в виде объектов, что значительно упрощает манипуляции с данными и делает код более чистым и поддерживаемым. Хотя ORM чаще всего используется для записи данных в базу и управления их состоянием, он также может быть очень полезен для операций чтения. 🟠Упрощение кода и улучшение читаемости ORM позволяет писать менее многословный и более интуитивно понятный код. Вместо написания сложных SQL-запросов, разработчики могут использовать методы ORM для получения данных.
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from models import User  # допустим, User - это класс, описывающий таблицу пользователей

engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()

users = session.query(User).all()
for user in users:
    print(user.name)
🟠Автоматическая обработка связей ORM автоматически обрабатывает связи между таблицами, такие как отношения "один-к-одному", "один-ко-многим" и "многие-ко-многим". Это позволяет легко выполнять сложные запросы с использованием объектов.
$repository = $entityManager->getRepository(User::class);
$users = $repository->findAll();

foreach ($users as $user) {
    echo $user->getName();
}
🟠Безопасность данных ORM помогает предотвратить уязвимости, такие как SQL-инъекции, поскольку он обрабатывает параметры запросов безопасным образом. 🟠Кэширование Многие ORM имеют встроенные механизмы кэширования, что может значительно повысить производительность приложений, уменьшив количество запросов к базе данных. 🟠Универсальность ORM абстрагирует работу с базами данных, позволяя легко переключаться между разными системами управления базами данных без необходимости изменения основного кода приложения. 🟠Интеграция с другими инструментами ORM часто интегрируется с другими инструментами и фреймворками, что делает их удобным решением для построения сложных приложений. Ставь 👍 и забирай 📚 Базу знаний