🤔 Какая главная проблема этого кода и как её правильно решить?
Anonymous Poll
24%
Нужно добавить try/catch — код упадёт, если база недоступна
82%
N+1: для каждого пользователя выполняется отдельный SQL-запрос. Нужно использовать withCount()
51%
Логику нужно вынести в UserService, контроллер не должен работать с моделями
13%
$result = [] неэффективен, нужно использовать Laravel Collection с map()
Какова временная сложность сортировки слиянием (Merge Sort) в худшем случае?
Anonymous Poll
22%
O(log n)
27%
O(n^2)
14%
O(n)
39%
O(n log n)
Какой основной компонент используется для хранения данных в Elasticsearch?
Anonymous Poll
22%
Коллекции
29%
Документы
52%
Индексы
8%
Таблицы
Код рабочий, но что здесь не так?
Anonymous Poll
20%
str_replace небезопасен для шаблонов, нужен Twig или Blade
18%
Метод делает слишком много вещей и его невозможно нормально протестировать
32%
file_get_contents на каждый вызов. Если отправить 1000 писем в цикле, будет 1000 обращений к диску
55%
Все три проблемы
Что произойдёт, если два воркера вызовут deductBalance(1, 100) одновременно при балансе пользователя 150?
Anonymous Poll
19%
Второй вызов вернёт false — база сама обработает конкурентность
43%
Оба спишут по 100
11%
Один вызов бросит исключение из-за deadlock
40%
Запросы выполнятся последовательно — MySQL сам блокирует строку на SELECT
❓ Что такое Lazy Collections в Laravel?
Обычная Collection загружает всё в память сразу. При работе с большими объёмами данных — это проблема.
// ❌ Загрузит ВСЕ записи в память
$users = User::all()->filter(...)->map(...);
// ✅ Lazy Collection — обрабатывает по одной записи через генератор
User::cursor()->filter(function (User $user) {
return $user->is_active;
})->each(function (User $user) {
ProcessUser::dispatch($user);
});
cursor() использует PDO fetchRow под капотом — в памяти одновременно одна запись.
Lazy Collection из файла:
// Обработка огромного CSV без OutOfMemoryError
$collection = LazyCollection::make(function () {
$handle = fopen('huge_file.csv', 'r');
while ($row = fgetcsv($handle)) {
yield $row;
}
});
$collection->skip(1)->chunk(100)->each(function ($rows) {
ImportBatch::dispatch($rows->toArray());
});
Когда использовать
— 10k+ записей в обработке → cursor() + LazyCollection
— Файлы, стримы, внешние API с пагинацией → LazyCollection с генератором
Важно: методы типа count() и last() материализуют коллекцию. Их лучше избегать в lazy-контексте.
Обычная Collection загружает всё в память сразу. При работе с большими объёмами данных — это проблема.
// ❌ Загрузит ВСЕ записи в память
$users = User::all()->filter(...)->map(...);
// ✅ Lazy Collection — обрабатывает по одной записи через генератор
User::cursor()->filter(function (User $user) {
return $user->is_active;
})->each(function (User $user) {
ProcessUser::dispatch($user);
});
cursor() использует PDO fetchRow под капотом — в памяти одновременно одна запись.
Lazy Collection из файла:
// Обработка огромного CSV без OutOfMemoryError
$collection = LazyCollection::make(function () {
$handle = fopen('huge_file.csv', 'r');
while ($row = fgetcsv($handle)) {
yield $row;
}
});
$collection->skip(1)->chunk(100)->each(function ($rows) {
ImportBatch::dispatch($rows->toArray());
});
Когда использовать
— 10k+ записей в обработке → cursor() + LazyCollection
— Файлы, стримы, внешние API с пагинацией → LazyCollection с генератором
Важно: методы типа count() и last() материализуют коллекцию. Их лучше избегать в lazy-контексте.
Что происходит при выполнении git commit --amend с точки зрения объектной модели Git?
Anonymous Poll
22%
Изменяется только COMMIT_EDITMSG, SHA не меняется
20%
Rebase последнего коммита на HEAD~1
24%
Создаётся новый commit-объект с новым SHA, старый остаётся в объектной БД
34%
Модифицируется существующий commit-объект в .git/objects
Команда git cherry-pick A..B выбирает коммиты:
Anonymous Poll
66%
От A до B включая обе границы
13%
От A до B не включая A, то есть коммиты A+1, ..., B
4%
Только коммит B
17%
Все коммиты между A и B в обратном порядке не включая границы
Транзакция читает строку дважды в рамках одной транзакции и получает разные результаты, хотя сама строку не меняла. Какой это феномен и на каком уровне изоляции он устраняется?
Anonymous Poll
35%
Dirty read — устраняется на READ COMMITTED
26%
Phantom read — устраняется на SERIALIZABLE
34%
Non-repeatable read — устраняется на REPEATABLE READ
18%
Non-repeatable read — устраняется на READ UNCOMMITTED
В чём разница между Blue-Green deployment и Canary deployment?
Anonymous Poll
63%
Blue-green переключает 100% трафика мгновенно, canary — постепенно
29%
Canary требует двух полных окружений, blue-green — нет
17%
Blue-green используется только для stateless сервисов
10%
Разницы нет — оба стратегически идентичны
Какой возникает риск при примой загрузке сущности по ID
Anonymous Poll
34%
Риска нет
37%
SQL injection
5%
CSRF
33%
IDOR
Какая аномалия возникает, когда транзакция читает данные, которые были изменены другой транзакцией, но изменения ещё не зафиксированы?
Anonymous Poll
62%
Dirty read
26%
Phantom read
7%
Dirty write
11%
Non-repeatable read
💬 Обратная связь
Проверяем динамику роста комьюнити :)
Ваш текущий грейд:
🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь
Проверяем динамику роста комьюнити :)
Ваш текущий грейд:
🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь
🔥16👍8🎉4👎2
Какой тип базы данных лучше всего подходит для хранения сложных связей между данными?
Anonymous Poll
43%
Графовая
4%
Колоночная
4%
Документная
7%
На основе ключ-значение
59%
Реляционная
Что будет результатом кода?
Anonymous Poll
33%
Применяем скидку!
30%
Скидка недоступна. Итого: 29
39%
Скидка недоступна. Итого: 28.999999999999
0%
fatal error
Модель User с soft delete. В БД уникальный индекс на email. Пользователь удалил аккаунт и регистрируется заново с тем же email:
Anonymous Poll
28%
Всё работает. Eloquent учитывает soft delete при проверке уникальности
56%
Integrity constraint violation. Удалённая запись блокирует email
5%
Создаётся дубль и старая запись перезаписывается
14%
Laravel автоматически восстанавливает удалённую запись