PHP | Вопросы собесов
الذهاب إلى القناة على Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
إظهار المزيد2 341
المشتركون
-124 ساعات
-47 أيام
-2430 أيام
أرشيف المشاركات
🤔 Что такое рекурсия?
Рекурсия — это метод программирования, при котором функция вызывает саму себя для решения задачи. Каждый рекурсивный вызов работает с меньшей подзадачей, пока не достигает базового условия, после чего процесс возвращается обратно. Рекурсия удобна для задач, таких как обход деревьев или вычисление факториала.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Как выгодно инвестировать в недвижимость Грузии?
Хотите узнать? Ответьте на 4 вопроса, и получите бесплатный обзор рынка недвижимости Грузии на 2024-2025 годы.
Мы — независимое инвестиционное агентство с 7-летним опытом работы. Помогаем клиентам безопасно и прибыльно инвестировать, защищая их от рисков и обмана. 400+ клиентов уже заработали свыще $200 млн. с нашей помощью!
Предоставляем полный анализ любого объекта в Батуми.
Сопровождаем сделку на всех этапах.
Проверяем юридическую чистоту документов.
Узнайте, какие возможности вас ждут, начав с нашего бесплатного обзора рынка!
Получить предложение
#реклама
quiz.internationalinvestment.biz
О рекламодателе
🤔 Чем отличается команда composer install от composer update?
Команды
composer install и composer update в Composer выполняют разные задачи при управлении зависимостями проекта в PHP.
🚩`composer install`
🟠Установка зависимостей
composer install используется для установки всех зависимостей, перечисленных в файле composer.lock. Если файла composer.lock нет, он создается на основе composer.json и затем устанавливаются зависимости.
🟠Гарантия версий
Команда composer install гарантирует, что будут установлены точно те версии библиотек, которые указаны в composer.lock. Это особенно важно для воспроизводимости среды, например, в командной разработке или при деплое на сервер.
🟠Работа с новым проектом
Обычно используется, когда вы клонируете проект и хотите установить те же зависимости, что и у других разработчиков проекта.
composer install
🚩`composer update`
🟠Обновление зависимостей
composer update обновляет все зависимости до их последних версий, соответствующих ограничениям версий, указанным в composer.json. Обновляет файл composer.lock новыми версиями зависимостей.
🟠Рискованность
Использование composer update может привести к несовместимости или новым багам, так как могут быть установлены новые версии библиотек, которые могут не проходить ваши тесты или не быть совместимыми с вашим кодом.
🟠Управление конкретными зависимостями
Вы можете использовать composer update для обновления конкретных библиотек. Например, чтобы обновить только одну библиотеку: composer update vendor/package.
composer update
🚩Пример использования
🟠Когда использовать `composer install`
Когда новый разработчик присоединяется к проекту. При деплое приложения на сервер, чтобы обеспечить стабильность.
🟠Когда использовать `composer update`
Когда вам нужно обновить зависимости до последних версий для получения новых функций или исправлений. После изменения файла composer.json для добавления новых зависимостей или изменения версий существующих.
Ставь 👍 и забирай 📚 Базу знаний🤔 Был ли у вас опыт в автоматического тестировании?
Да, я имел опыт работы с автоматическим тестированием, включая написание тестов для API, UI и unit-тестов. Использовал такие инструменты, как Selenium, Pytest и JUnit, для автоматизации процессов тестирования. Опыт охватывает разработку тестовых сценариев и интеграцию тестирования в CI/CD пайплайны.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Все скидки Яндекс Маркета в одном месте
От 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 процессов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
+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-статьи;
- анонсы митапов;
- бесплатные курсы.
Подписаться
#реклама
О рекламодателе
🤔 Что если в классе есть публичное свойство, это означает что класс иммутабельный или нет?
Нет, наличие публичного свойства в классе не делает его автоматически иммутабельным.
🚩Что такое иммутабельность
Означает, что состояние объекта не может измениться после его создания. Все изменения создают новый объект, вместо изменения состояния существующего объекта.
🚩Публичные свойства и иммутабельность
Означает, что его можно изменить из любого места, где доступен экземпляр класса. Таким образом, если у класса есть публичное свойство, этот класс не может считаться иммутабельным, поскольку его состояние можно изменять напрямую.
🚩Пример неиммутабельного класса
В этом примере свойство
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-собеседования
– Помощь с трудоустройством
Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT.
🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию
– Помощь с 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
Ставь 👍 и забирай 📚 Базу знаний