PHP задачи с собеседований
2.88K subscribers
601 photos
6 videos
11 files
351 links
Задачи, тесты и теоретические вопросы по PHP.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
Какая директива в php.ini используется для определения максимального размера файла, который можно загрузить на сервер?
Anonymous Poll
5%
memory_limit
2%
max_execution_time
80%
upload_max_filesize
21%
post_max_size
Что произойдет, если неавторизованный пользователь перейдет на /dashboard?
Anonymous Poll
37%
HTTP 403 Forbidden
57%
Перенаправит на форму логину
0%
Ошибка сервера
8%
Вернёт ОК
Проектируешь сервис обработки платежей. Тебе нужно реализовать метод, который принимает данные платежа и возвращает результат.
🔥2
Какую функцию нужно использовать, чтобы зарегистрировать собственный обработчик ошибок?
Anonymous Poll
5%
register_shutdown_function()
5%
error_log()
18%
register_handler_function()
4%
trigger_error()
72%
set_error_handler()
Что выведет фрагмент кода?
Anonymous Poll
26%
Fatal error
8%
int(0)
59%
int(2)
8%
int(5)
Какое значение по умолчанию принимает директива memory_limit в PHP?
Anonymous Poll
24%
64M
66%
128M
7%
256M
5%
512M
Какая аномалия возникает, когда транзакция выполняет один и тот же запрос дважды, и во второй раз получает дополнительные строки, которые были добавлены другой транзакцией?
Anonymous Poll
27%
Dirty Read
16%
Dirty Write
18%
Phantom Write
41%
Phantom Read
Что действительно ускоряет автозагрузку на проде?
Anonymous Poll
37%
composer install --no-dev
2%
composer diagnose
24%
opcache.revalidate_freq=0
47%
composer dump-autoload -o
DDD — границы агрегатов. За соблюдение кредитного лимита клиента при создании заказа кто отвечает?
Anonymous Poll
29%
Агрегатор Order
63%
Агрегат Customer (или доменный сервис вокруг него)
3%
Инфраструктурный валидатор в БД
6%
Сервис корзина
❓ Что такое Dependency Injection?

DI — паттерн, при котором зависимости класса передаются извне, а не создаются внутри.

// Плохо — жёсткая связанность:
class OrderService {
private $mailer;
public function __construct() {
$this->mailer = new SmtpMailer(); // зависимость зашита внутри
}
}

// Хорошо — DI:
class OrderService {
public function __construct(private MailerInterface $mailer) {}
}


Зачем:

✔️ Легко подменить реализацию (например, для тестов — MockMailer)
✔️ Классы не знают о конкретных реализациях (зависимость от абстракции)
✔️ Код легче тестировать, поддерживать, расширять

DI Container (Symfony, Laravel) автоматизирует создание объектов и внедрение зависимостей по всему приложению.
Какая из следующих функций используется для выбора одного или нескольких случайных значений из массива PHP?
Anonymous Poll
80%
array_rand()
17%
array_random()
3%
rand_array()
0%
random_array()
💬 Обратная связь

Как часто вы проходите собеседования?

🔥 — Сейчас активно ищу работу
👍🏼 — Раз в несколько месяцев
❤️ — Раз в полгода-год
😁 — Не прохожу, уже работаю/ещё учусь
🔥4
Что выведет код?
❓ Чем отличается Optimistic Lock от Pessimistic Lock?

Pessimistic Lock — блокируем строку в БД на время транзакции. Никто другой не может её изменить до снятия блокировки.

SELECT * FROM orders WHERE id = 1 FOR UPDATE;

Применять когда: высокая вероятность конфликта, критичные финансовые операции, короткие транзакции.
Минус: снижает throughput, риск дедлоков при блокировке нескольких строк в разном порядке.

Optimistic Lock — блокировки нет. У записи есть поле version. При обновлении проверяем, что версия не изменилась:

UPDATE orders SET status = 'paid', version = 6
WHERE id = 1 AND version = 5;

Если affected_rows = 0 — кто-то успел раньше, делаем retry или возвращаем ошибку.

Применять когда: конфликты редки, операции долгие (нельзя держать блокировку), высокий параллелизм.
Минус: нужен retry-механизм, сложнее реализовать корректно.
👍3