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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Как использовать коллекции в 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 помогают писать код, который проще читать, поддерживать и тестировать 🚀
Какова цель использования функций array_count_values() и array_search() в PHP?

array_count_values(): Функция array_count_values() используется для подсчёта количества вхождений значений в массиве. Она возвращает ассоциативный массив, где ключи — это уникальные значения из входного массива, а значения — количество их появлений.

array_search(): Функция array_search() ищет определённое значение в массиве и возвращает первый ключ, соответствующий этому значению. Если значение не найдено, функция возвращает false.
👍1
🔬 Вы когда-нибудь смотрели на код и думали: «Работает, но почему?»

А теперь представьте, что вы:

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

4 декабря стартует курс «Математика для разработки AI-моделей».

Линал, оптимизация, матан, статистика — всё, что происходит внутри модели между input и output. Практика на Python. Живые разборы с экспертами из SberAI, ВШЭ, Wildberries&Russ.

3 задания + финальный проект. Без теории ради теории — только то, что реально используется в моделях.

🎁 Бонус: курс по школьной математике + тест уровня математики

👉 Записаться
Какова цель «Gii» в Yii2?

В Yii2 Gii — это мощный инструмент генерации кода, который помогает разработчикам быстро создавать шаблоны кода для моделей, контроллеров, форм, модулей и других компонентов приложения.

Возможности Gii в Yii2:
🔸Ускоряет разработку:
Автоматически генерирует шаблонный код, сокращая рутинные задачи.

🔸Создает модели из базы данных:
Генерирует Active Record модели, анализируя структуру базы данных.

🔸Генерирует CRUD (Создание, Чтение, Обновление, Удаление):
Создает контроллеры, представления и модели для работы с данными.

🔸Уменьшает вероятность ошибок:
Обеспечивает единообразие и правильный синтаксис в сгенерированном коде.

🔸Поддерживает кастомизацию:
Разработчики могут изменять шаблоны кода под нужды проекта.

🔸Расширяет функциональность:
Позволяет создавать собственные шаблоны кода для повторного использования.

Как использовать Gii в Yii2

1. Включите Gii в config/web.php:

'modules' => [ 'gii' => [ 'class' => 'yii\gii\Module', ],],


2. Откройте Gii в браузере:
https://your-app-url/index.php?r=gii

3. Выберите нужный генератор (Модель, CRUD, Контроллер и т. д.), введите данные и создайте код.

Использование в командной строке
Gii можно запускать через консоль Yii2:
php yii gii/model --tableName=your_table_namephp yii gii/crud --modelClass=app\models\YourModel --controllerClass=app\controllers\YourController
👍1
Что такое аннотации в Symfony?

В Symfony аннотации — это специальные комментарии, которые вы можете добавлять в свой код для конфигурирования различных аспектов вашего приложения, таких как маршрутизация, безопасность, валидация и другие. Аннотации — это удобный способ определения настроек конфигурации непосредственно в вашем коде, а не в отдельных файлах конфигурации.

Например, в Symfony вы можете использовать аннотации для определения маршрутов для ваших контроллеров. Вместо конфигурирования маршрутов в отдельном YAML- или XML-файле вы можете добавить аннотацию @Route непосредственно над методом контроллера, чтобы указать шаблон URL, который должен вызывать этот метод.

Symfony предоставляет несколько встроенных аннотаций для настройки различных аспектов вашего приложения, и вы также можете создавать свои собственные пользовательские аннотации при необходимости.
2🤔1
Какие модификаторы видимости есть в РНР?

public — свойства или методы, объявленные как public, могут быть доступны в любом месте.

protected — свойства или методы доступны только внутри класса, а также в дочерних классах.

private — доступ к private свойствам и методам имеет только класс, в котором эти свойства или методы объявлены.

Если модификатор доступа не указан явно, то он будет считаться как public.
Какова разница между веб-маршрутами и API-маршрутами в Laravel?

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

Веб-маршруты:

✔️Веб-маршруты в Laravel в основном используются для обслуживания HTML-представлений и обработки веб-запросов от браузеров.
✔️Они отвечают за отображение веб-страниц, обработку отправленных форм и управление сеансами.
✔️Веб-маршруты определяются по умолчанию в файле routes/web.php.
✔️Они часто включают взаимодействие с пользовательским интерфейсом, такое как отображение форм, представлений и обработка аутентификации пользователей.

API-маршруты:

✔️API-маршруты, напротив, предназначены для обработки запросов и ответов для точек входа API.
✔️Они обычно используются для создания RESTful API или предоставления данных для мобильных приложений, одностраничных приложений (SPA) или других служб.
✔️API-маршруты определяются по умолчанию в файле routes/api.php.
✔️Они обычно возвращают данные в формате JSON или XML, а не отображают HTML-представления.
✔️API-маршруты часто включают операции CRUD (Create, Read, Update, Delete) с ресурсами, такие как извлечение данных из базы данных, создание новых записей, обновление существующих записей или удаление записей.

Таким образом, веб-маршруты используются для обслуживания веб-страниц и обработки запросов браузера, в то время как API-маршруты используются для предоставления данных и взаимодействия с приложениями или службами программным способом.