Библиотека собеса по PHP | вопросы с собеседований
3.17K subscribers
184 photos
6 videos
122 links
Вопросы с собеседований по PHP и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9f3affba

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Какой шаблонизатор поддерживает Symfony?

Шаблонизатором по умолчанию в Symfony является Twig. Мы также можем использовать обычный PHP-код. Twig — это актуальный и современный шаблонизатор для PHP.

✔️ Преимущества Twig:

Быстрота: Накладные расходы на регулярный PHP-код были сведены к минимуму, так как Twig помогает компилировать шаблоны в простой оптимизированный PHP-код.

Безопасность: Twig как язык шаблонов используется в приложениях, где пользователи могут изменять дизайн шаблона. В нем есть режим «песочницы» для борьбы с недоверенным кодом шаблонов.

Гибкость: Twig позволяет разработчику задавать пользовательские теги и фильтры и создавать свой DSL, что разрешается гибким лексером и парсером twig.
🔥1🥱1
Что такое интерфейсы?

Интерфейсы в PHP являются структурой, которая определяет методы, которые класс должен реализовать. Они предоставляют способ определить общие контракты для классов, не определяя их конкретную реализацию.

Интерфейсы объявляются с использованием ключевого слова interface и могут содержать только методы без их реализации. Класс, который реализует интерфейс, должен реализовать все методы, определенные в интерфейсе, в противном случае он будет считаться неполным.

Интерфейсы позволяют достичь полиморфизма, что означает, что несколько классов могут реализовывать один и тот же интерфейс и использоваться взаимозаменяемо.

Использование интерфейсов способствует лучшей организации кода, а также повышает его гибкость и переиспользуемость. Они позволяют определить общие методы и стандарты, которые должны быть реализованы в классах, что упрощает сопровождение и расширение программного обеспечения.
🔥1
🎄 С Нового года начну учиться — знакомо?

А потом январь — освоюсь после праздников, февраль — доделаю текущие дела... Не откладывай на следующий год то, что можно начать уже в этом.

🗓️ 4 декабря стартует экспресс-курс «Математика для Data Science»— всё, что нужно для уверенных ответов на собесах:

→ 2 месяца без воды;
→ обновлённая программа (ноябрь 2025);
→ живые вебинары с экспертами;
→ записи всех занятий;
→ практика на Python + финальный проект с фидбэком.

Формат: 2 месяца интенсива и к началу следующего года ты готов к собесам.

Пока другие будут собираться с мыслями после НГ, ты уже будешь на полпути к офферу мечты.

🎁 Только до 30 ноября:

→ скидка 40% на курс;
→ курс «Базовая математика» в подарок;
→ бесплатный тест уровня математики.

👉🏻 Хочешь на курс → пиши менеджеру
1
Как реализовать очередь сообщений на PHP?

На PHP можно реализовать очередь сообщений, используя различные библиотеки и инструменты. Один из популярных вариантов — использовать RabbitMQ, брокер сообщений, который реализует протокол AMQP. Вот пример того, как можно реализовать очередь сообщений с помощью RabbitMQ:

1. Установите RabbitMQ: Сначала вам нужно установить сервер RabbitMQ на вашей системе. Вы можете загрузить и установить его с веб-сайта RabbitMQ.

2. Установите расширение PHP AMQP: Затем вам нужно установить расширение PHP AMQP, которое позволяет приложениям на PHP взаимодействовать с RabbitMQ. Вы можете установить его с помощью PECL.

3. Создайте производителя: Это компонент, отвечающий за публикацию сообщений в очередь.

4. Создайте потребителя: Это компонент, отвечающий за потребление сообщений из очереди.

5. Запустите Производителя и Потребителя: Запустите скрипт производителя, чтобы опубликовать сообщение в очередь, затем запустите скрипт потребителя, чтобы потребить сообщение.
🌚2
Как использовать коллекции в Laravel?

В Laravel коллекции обеспечивают плавный и удобный способ работы с массивами данных. Они более мощные и выразительные, чем простые массивы PHP, предлагая различные методы для фильтрации, отображения, преобразования и уменьшения данных. Вот как вы можете использовать коллекции в Laravel:

Создание коллекций: Вы можете создавать коллекции, используя вспомогательную функцию collect, передавая массив или объект, реализующий интерфейс IteratorAggregate:

$collection = collect([1, 2, 3, 4, 5]);


Манипуляция с коллекциями: После того как у вас есть коллекция, вы можете использовать широкий спектр методов для манипуляции данными:
map(): Преобразует каждый элемент в коллекции.
filter(): Фильтрует элементы на основе функции обратного вызова.
reduce(): Сводит коллекцию к единственному значению с использованием функции обратного вызова.
pluck(): Извлекает список конкретных атрибутов из каждого элемента.
sortBy(): Сортирует коллекцию по указанному ключу.
groupBy(): Группирует коллекцию по указанному ключу.
slice(): Извлекает часть коллекции.
И многие другие...

Цепочка методов: Вы можете соединять несколько методов вместе, чтобы выполнять сложные операции в одной строке.
Может ли абстрактный класс содержать частный(private) метод?

Да, в абстрактном классе можно иметь частный конкретный метод.

Этот частный метод будет отображаться ТОЛЬКО этому абстрактному классу. Это означает, что он должен будет использоваться каким-либо другим конкретным методом в абстрактном классе.

Дочерние классы не смогут вызвать его напрямую.
🤖 Раньше в AI мог попасть любой, кто осилил пару туториалов.

Теперь нужны те, кто может объяснить:

→ почему эта архитектура сработает, а та — нет;
→ что происходит внутри модели, когда она не сходится;
→ как найти решение, а не перебирать гиперпараметры наугад.

Все эти навыки требуют понимания того, как и почему работают модели. А это чистая математика.

🔥 Proglib Academy запускает курс «Математика для разработки AI-моделей». Ведут эксперты из SberAI, ВШЭ, Т-Банк, Wildberries.

📝 Что внутри?

→ 2 месяца живых занятий с возможностью задавать вопросы напрямую.
→ Практика на Python. Не теория в вакууме, а применение.
→ 3 домашних задания + финальный проект с детальным разбором.

Старт 4 декабря

Только до конца ноября:
→ Скидка 40%;
→ Курс «Школьная математика» в подарок;
Тест на определение уровня математики.

🎄 Сделай себе подарок на Новый год
Перечислите адаптеры кэша в Symfony.

Адаптеры кэша — это собственно средства кэширования для хранения данных в файловой системе, в базе данных и т.д.

В Symfony есть пять кэш-адаптеров, которые перечислены ниже:

1. Адаптер кэша файловой системы
2. Адаптер кэша массива
3. Адаптер кэша APCu
4. Адаптер кэша файлов PHP
5. Адаптер кэша Redis
Что такое Mock? Где используют и зачем?

Mock (в переводе с английского — подделка, имитация) — это объект, который имитирует поведение реальных объектов в программе. Он создается на основе интерфейса или класса, чтобы предоставить возможность эмулировать определенные методы и поведение, которое необходимо для тестирования или разработки.

Моки особенно полезны при разработке и тестировании, когда некоторые зависимости программы еще не реализованы или недоступны. Они позволяют испытывать функциональность кода, не завися от реальных объектов, а также создавать ситуации, которые могут быть сложными или невозможными в реальной системе.

В PHP разработке моки часто используются при юнит-тестировании для изоляции кода и проверки его работы в изоляции от других модулей и зависимостей. Создание моков позволяет задавать ожидания к вызовам методов, проверять их вызовы, а также контролировать возвращаемые значения или генерировать исключения.

Использование моков упрощает создание тестовых сценариев, позволяет эффективно проверять код и обнаруживать потенциальные проблемы. Это также помогает ускорить процесс разработки, так как не требуется полная реализация всех зависимостей для тестирования каждого компонента отдельно.
Каково назначение фасадов в Laravel?

В Laravel фасады (Facades) предназначены для предоставления удобного и статически доступного интерфейса к службам контейнера внедрения зависимостей (Service Container). Они позволяют обращаться к классам сервиса без необходимости вручную создавать их экземпляры или внедрять зависимости.

Основные цели фасадов в Laravel:
🔸Упрощение доступа к сервисам — вместо сложных зависимостей можно использовать короткие и удобные статические методы.
🔸Скрытие сложной логики — за фасадом может скрываться сложный класс с множеством зависимостей.
🔸Гибкость и тестируемость — фасады в Laravel используют механизм Mockery, что делает возможным замену зависимостей при тестировании.

В примере вызов Cache::get() является фасадом для класса Illuminate\Cache\Repository, скрывая за собой его сложную реализацию.

Таким образом, фасады в Laravel помогают писать код, который проще читать, поддерживать и тестировать 🚀